Program: 82821
Project: 82821
Buggy source:
@SuppressWarnings("String_Node_Str") JMethodCall processSuperConstructorCall(ExplicitConstructorCall x){
  SourceInfo info=makeSourceInfo(x);
  JMethod ctor=(JMethod)typeMap.get(x.binding);
  JExpression trueQualifier=createThisRef(info,currentClass);
  JMethodCall call=new JMethodCall(program,info,trueQualifier,ctor);
  addCallArgs(x.arguments,call,x.binding);
  ReferenceBinding superClass=x.binding.declaringClass;
  if (superClass.isNestedType() && !superClass.isStatic()) {
    ReferenceBinding myBinding=currentClassScope.referenceType().binding;
    ReferenceBinding superBinding=superClass;
    if (superBinding.syntheticEnclosingInstanceTypes() != null) {
      JExpression qualifier=dispProcessExpression(x.qualification);
      for (      ReferenceBinding arg : superBinding.syntheticEnclosingInstanceTypes()) {
        JClassType classType=(JClassType)typeMap.get(arg);
        if (qualifier == null) {
          List<JExpression> workList=new ArrayList<JExpression>();
          Iterator<JParameter> paramIt=getSyntheticsIterator(currentMethod);
          for (          ReferenceBinding b : myBinding.syntheticEnclosingInstanceTypes()) {
            workList.add(createVariableRef(info,paramIt.next()));
          }
          call.getArgs().add(createThisRef(classType,workList));
        }
 else {
          call.getArgs().add(createThisRef(classType,qualifier));
        }
      }
    }
    if (superBinding.syntheticOuterLocalVariables() != null) {
      for (      SyntheticArgumentBinding arg : superBinding.syntheticOuterLocalVariables()) {
        JType varType=(JType)typeMap.get(arg.type);
        String varName=String.valueOf(arg.name);
        JParameter param=null;
        for (int i=0; i < currentMethod.params.size(); ++i) {
          JParameter paramIt=currentMethod.params.get(i);
          if (varType == paramIt.getType() && varName.equals(paramIt.getName())) {
            param=paramIt;
          }
        }
        if (param == null) {
          throw new InternalCompilerException("String_Node_Str");
        }
        call.getArgs().add(createVariableRef(info,param));
      }
    }
  }
  return call;
}

Fixed version (ground truth):
@SuppressWarnings("String_Node_Str") JMethodCall processSuperConstructorCall(ExplicitConstructorCall x){
  SourceInfo info=makeSourceInfo(x);
  JMethod ctor=(JMethod)typeMap.get(x.binding);
  JExpression trueQualifier=createThisRef(info,currentClass);
  JMethodCall call=new JMethodCall(program,info,trueQualifier,ctor);
  addCallArgs(x.arguments,call,x.binding);
  ReferenceBinding superClass=x.binding.declaringClass;
  if (superClass.isNestedType() && !superClass.isStatic()) {
    ReferenceBinding myBinding=currentClassScope.referenceType().binding;
    ReferenceBinding superBinding=superClass;
    if (superBinding.syntheticEnclosingInstanceTypes() != null) {
      JExpression qualifier=dispProcessExpression(x.qualification);
      for (      ReferenceBinding arg : superBinding.syntheticEnclosingInstanceTypes()) {
        JClassType classType=(JClassType)typeMap.get(arg);
        if (qualifier == null) {
          List<JExpression> workList=new ArrayList<JExpression>();
          Iterator<JParameter> paramIt=getSyntheticsIterator();
          for (          ReferenceBinding b : myBinding.syntheticEnclosingInstanceTypes()) {
            workList.add(createVariableRef(info,paramIt.next()));
          }
          call.getArgs().add(createThisRef(classType,workList));
        }
 else {
          call.getArgs().add(createThisRef(classType,qualifier));
        }
      }
    }
    if (superBinding.syntheticOuterLocalVariables() != null) {
      for (      SyntheticArgumentBinding arg : superBinding.syntheticOuterLocalVariables()) {
        JType varType=(JType)typeMap.get(arg.type);
        String varName=String.valueOf(arg.name);
        JParameter param=null;
        for (int i=0; i < currentMethod.params.size(); ++i) {
          JParameter paramIt=currentMethod.params.get(i);
          if (varType == paramIt.getType() && varName.equals(paramIt.getName())) {
            param=paramIt;
          }
        }
        if (param == null) {
          throw new InternalCompilerException("String_Node_Str");
        }
        call.getArgs().add(createVariableRef(info,param));
      }
    }
  }
  return call;
}