Program: 12035
Project: 12035
Buggy source:
private void modifySourceStaticFieldInstructionsInTargetClass(MethodDeclaration newMethodDeclaration,ASTRewrite targetRewriter){
  ExpressionExtractor extractor=new ExpressionExtractor();
  List<Expression> sourceVariableInstructions=extractor.getVariableInstructions(sourceMethod.getBody());
  List<Expression> newVariableInstructions=extractor.getVariableInstructions(newMethodDeclaration.getBody());
  int i=0;
  for (  Expression expression : sourceVariableInstructions) {
    SimpleName simpleName=(SimpleName)expression;
    IBinding binding=simpleName.resolveBinding();
    if (binding != null && binding.getKind() == IBinding.VARIABLE) {
      IVariableBinding variableBinding=(IVariableBinding)binding;
      if (variableBinding.isField() && (variableBinding.getModifiers() & Modifier.STATIC) != 0) {
        if (sourceTypeDeclaration.resolveBinding().isEqualTo(variableBinding.getDeclaringClass())) {
          AST ast=newMethodDeclaration.getAST();
          SimpleName qualifier=ast.newSimpleName(sourceTypeDeclaration.getName().getIdentifier());
          if (simpleName.getParent() instanceof FieldAccess) {
            FieldAccess fieldAccess=(FieldAccess)newVariableInstructions.get(i).getParent();
            targetRewriter.set(fieldAccess,FieldAccess.EXPRESSION_PROPERTY,qualifier,null);
          }
 else           if (!(simpleName.getParent() instanceof QualifiedName)) {
            SimpleName newSimpleName=ast.newSimpleName(simpleName.getIdentifier());
            QualifiedName newQualifiedName=ast.newQualifiedName(qualifier,newSimpleName);
            targetRewriter.replace(newVariableInstructions.get(i),newQualifiedName,null);
          }
          this.additionalTypeBindingsToBeImportedInTargetClass.add(sourceTypeDeclaration.resolveBinding());
          setPublicModifierToSourceField(variableBinding);
        }
 else {
          AST ast=newMethodDeclaration.getAST();
          SimpleName qualifier=null;
          if ((variableBinding.getModifiers() & Modifier.PUBLIC) != 0) {
            qualifier=ast.newSimpleName(variableBinding.getDeclaringClass().getName());
            this.additionalTypeBindingsToBeImportedInTargetClass.add(variableBinding.getDeclaringClass());
          }
 else {
            qualifier=ast.newSimpleName(sourceTypeDeclaration.getName().getIdentifier());
            this.additionalTypeBindingsToBeImportedInTargetClass.add(sourceTypeDeclaration.resolveBinding());
          }
          if (simpleName.getParent() instanceof FieldAccess) {
            FieldAccess fieldAccess=(FieldAccess)newVariableInstructions.get(i).getParent();
            targetRewriter.set(fieldAccess,FieldAccess.EXPRESSION_PROPERTY,qualifier,null);
          }
 else           if (!(simpleName.getParent() instanceof QualifiedName)) {
            SimpleName newSimpleName=ast.newSimpleName(simpleName.getIdentifier());
            QualifiedName newQualifiedName=ast.newQualifiedName(qualifier,newSimpleName);
            targetRewriter.replace(newVariableInstructions.get(i),newQualifiedName,null);
          }
        }
      }
    }
    i++;
  }
}

Fixed version (ground truth):
private void modifySourceStaticFieldInstructionsInTargetClass(MethodDeclaration newMethodDeclaration,ASTRewrite targetRewriter){
  ExpressionExtractor extractor=new ExpressionExtractor();
  List<Expression> sourceVariableInstructions=extractor.getVariableInstructions(sourceMethod.getBody());
  List<Expression> newVariableInstructions=extractor.getVariableInstructions(newMethodDeclaration.getBody());
  int i=0;
  for (  Expression expression : sourceVariableInstructions) {
    SimpleName simpleName=(SimpleName)expression;
    IBinding binding=simpleName.resolveBinding();
    if (binding != null && binding.getKind() == IBinding.VARIABLE) {
      IVariableBinding variableBinding=(IVariableBinding)binding;
      if (variableBinding.isField() && (variableBinding.getModifiers() & Modifier.STATIC) != 0) {
        if (sourceTypeDeclaration.resolveBinding().isEqualTo(variableBinding.getDeclaringClass())) {
          AST ast=newMethodDeclaration.getAST();
          SimpleName qualifier=ast.newSimpleName(sourceTypeDeclaration.getName().getIdentifier());
          if (simpleName.getParent() instanceof FieldAccess) {
            FieldAccess fieldAccess=(FieldAccess)newVariableInstructions.get(i).getParent();
            targetRewriter.set(fieldAccess,FieldAccess.EXPRESSION_PROPERTY,qualifier,null);
          }
 else           if (!(simpleName.getParent() instanceof QualifiedName) && !RefactoringUtility.isEnumConstantInSwitchCaseExpression(simpleName)) {
            SimpleName newSimpleName=ast.newSimpleName(simpleName.getIdentifier());
            QualifiedName newQualifiedName=ast.newQualifiedName(qualifier,newSimpleName);
            targetRewriter.replace(newVariableInstructions.get(i),newQualifiedName,null);
          }
          this.additionalTypeBindingsToBeImportedInTargetClass.add(sourceTypeDeclaration.resolveBinding());
          setPublicModifierToSourceField(variableBinding);
        }
 else {
          AST ast=newMethodDeclaration.getAST();
          SimpleName qualifier=null;
          if ((variableBinding.getModifiers() & Modifier.PUBLIC) != 0) {
            qualifier=ast.newSimpleName(variableBinding.getDeclaringClass().getName());
            this.additionalTypeBindingsToBeImportedInTargetClass.add(variableBinding.getDeclaringClass());
          }
 else {
            qualifier=ast.newSimpleName(sourceTypeDeclaration.getName().getIdentifier());
            this.additionalTypeBindingsToBeImportedInTargetClass.add(sourceTypeDeclaration.resolveBinding());
          }
          if (simpleName.getParent() instanceof FieldAccess) {
            FieldAccess fieldAccess=(FieldAccess)newVariableInstructions.get(i).getParent();
            targetRewriter.set(fieldAccess,FieldAccess.EXPRESSION_PROPERTY,qualifier,null);
          }
 else           if (!(simpleName.getParent() instanceof QualifiedName) && !RefactoringUtility.isEnumConstantInSwitchCaseExpression(simpleName)) {
            SimpleName newSimpleName=ast.newSimpleName(simpleName.getIdentifier());
            QualifiedName newQualifiedName=ast.newQualifiedName(qualifier,newSimpleName);
            targetRewriter.replace(newVariableInstructions.get(i),newQualifiedName,null);
          }
          ITypeBinding fieldDeclaringClass=variableBinding.getDeclaringClass();
          if (fieldDeclaringClass != null && fieldDeclaringClass.isEnum() && sourceTypeDeclaration.resolveBinding().isEqualTo(fieldDeclaringClass.getDeclaringClass())) {
            setPublicModifierToSourceMemberType(fieldDeclaringClass);
          }
        }
      }
    }
    i++;
  }
}