int (Exprent exprent) { if (exprent.type == Exprent.EXPRENT_ASSIGNMENT) { AssignmentExprent assignExpr = (AssignmentExprent)exprent; if (assignExpr.getLeft().type == Exprent.EXPRENT_FIELD) { FieldExprent fExpr = (FieldExprent)assignExpr.getLeft(); String qName = child.classStruct.qualifiedName; if (fExpr.getClassname().equals(qName) && // process this class only mapFieldsToNewVars.containsKey(InterpreterUtil.makeUniqueKey(qName, fExpr.getName(), fExpr.getDescriptor().descriptorString))) { return 2; } } } if (child.type == ClassNode.CLASS_ANONYMOUS && CodeConstants.INIT_NAME.equals(method.methodStruct.getName()) && exprent.type == Exprent.EXPRENT_INVOCATION) { InvocationExprent invokeExpr = (InvocationExprent)exprent; if (invokeExpr.getFuncType() == InvocationExprent.TYPE_INIT) { // invocation of the super constructor in an anonymous class child.superInvocation = invokeExpr; // FIXME: save original names of parameters return 2; } } replaceExprent(exprent); return 0; }