void (ClassWrapper wrapper) { for (MethodWrapper method : wrapper.getMethods()) { if (CodeConstants.INIT_NAME.equals(method.methodStruct.getName()) && method.root != null) { Statement firstData = Statements.findFirstData(method.root); if (firstData == null) { return; } int index = 0; List<Exprent> lstExprents = firstData.getExprents(); for (Exprent exprent : lstExprents) { int action = 0; if (exprent.type == Exprent.EXPRENT_ASSIGNMENT) { AssignmentExprent assignExpr = (AssignmentExprent)exprent; if (assignExpr.getLeft().type == Exprent.EXPRENT_FIELD && assignExpr.getRight().type == Exprent.EXPRENT_VAR) { FieldExprent fExpr = (FieldExprent)assignExpr.getLeft(); if (fExpr.getClassname().equals(wrapper.getClassStruct().qualifiedName)) { StructField structField = wrapper.getClassStruct().getField(fExpr.getName(), fExpr.getDescriptor().descriptorString); if (structField != null && structField.hasModifier(CodeConstants.ACC_FINAL)) { action = 1; } } } } else if (index > 0 && exprent.type == Exprent.EXPRENT_INVOCATION && Statements.isInvocationInitConstructor((InvocationExprent)exprent, method, wrapper, true)) { // this() or super() lstExprents.add(0, lstExprents.remove(index)); action = 2; } if (action != 1) { break; } index++; } } } }