Program: 40243
Project: 40243
Buggy source:
@SuppressWarnings("String_Node_Str") AstLexicalInformation(String entityName,Scope scope,SSAInstruction[] instrs,Set<Pair<Pair<String,String>,Integer>> exposedNamesForReadSet,Set<Pair<Pair<String,String>,Integer>> exposedNamesForWriteSet,Set<Access> accesses){
  this.functionLexicalName=entityName;
  Pair<Pair<String,String>,Integer>[] EN=null;
  if (exposedNamesForReadSet != null || exposedNamesForWriteSet != null) {
    Set<Pair<Pair<String,String>,Integer>> exposedNamesSet=new HashSet<Pair<Pair<String,String>,Integer>>();
    if (exposedNamesForReadSet != null) {
      exposedNamesSet.addAll(exposedNamesForReadSet);
    }
    if (exposedNamesForWriteSet != null) {
      exposedNamesSet.addAll(exposedNamesForWriteSet);
    }
    EN=exposedNamesSet.toArray(new Pair[exposedNamesSet.size()]);
  }
  if (exposedNamesForReadSet != null) {
    Set<String> readOnlyNames=new HashSet<String>();
    for (    Pair<Pair<String,String>,Integer> v : exposedNamesForReadSet) {
      if (entityName != null && entityName.equals(v.fst.snd)) {
        readOnlyNames.add(v.fst.fst);
      }
    }
    if (exposedNamesForWriteSet != null) {
      for (      Pair<Pair<String,String>,Integer> v : exposedNamesForWriteSet) {
        if (entityName != null && entityName.equals(v.fst.snd)) {
          readOnlyNames.remove(v.fst.fst);
        }
      }
    }
    this.readOnlyNames=readOnlyNames;
  }
 else {
    this.readOnlyNames=null;
  }
  this.exposedNames=buildLexicalNamesArray(EN);
  this.exitLexicalUses=buildLexicalUseArray(EN,entityName);
  this.instructionLexicalUses=new int[instrs.length][];
  for (int i=0; i < instrs.length; i++) {
    if (instrs[i] instanceof SSAAbstractInvokeInstruction) {
      this.instructionLexicalUses[i]=buildLexicalUseArray(EN,null);
    }
  }
  if (accesses != null) {
    Set<String> parents=new LinkedHashSet<String>();
    for (Iterator<Access> ACS=accesses.iterator(); ACS.hasNext(); ) {
      Access AC=ACS.next();
      if (AC.variableDefiner != null) {
        parents.add(AC.variableDefiner);
      }
    }
    scopingParents=parents.toArray(new String[parents.size()]);
    if (DEBUG_LEXICAL) {
      System.err.println(("String_Node_Str" + scope.getEntity()));
      System.err.println(parents.toString());
    }
  }
 else {
    scopingParents=null;
  }
  if (DEBUG_NAMES) {
    System.err.println(("String_Node_Str" + scope.getEntity()));
    for (int i=0; i < instructionLexicalUses.length; i++) {
      if (instructionLexicalUses[i] != null) {
        System.err.println(("String_Node_Str" + instrs[i]));
        for (int j=0; j < instructionLexicalUses[i].length; j++) {
          System.err.println(("String_Node_Str" + this.exposedNames[j].fst + "String_Node_Str"+ instructionLexicalUses[i][j]));
        }
      }
    }
  }
}

Fixed version (ground truth):
@SuppressWarnings("String_Node_Str") AstLexicalInformation(String entityName,Scope scope,SSAInstruction[] instrs,Set<Pair<Pair<String,String>,Integer>> exposedNamesForReadSet,Set<Pair<Pair<String,String>,Integer>> exposedNamesForWriteSet,Set<Access> accesses){
  if (entityName.contains("String_Node_Str")) {
    System.err.println("String_Node_Str");
  }
  this.functionLexicalName=entityName;
  Pair<Pair<String,String>,Integer>[] EN=null;
  if (exposedNamesForReadSet != null || exposedNamesForWriteSet != null) {
    Set<Pair<Pair<String,String>,Integer>> exposedNamesSet=new HashSet<Pair<Pair<String,String>,Integer>>();
    if (exposedNamesForReadSet != null) {
      exposedNamesSet.addAll(exposedNamesForReadSet);
    }
    if (exposedNamesForWriteSet != null) {
      exposedNamesSet.addAll(exposedNamesForWriteSet);
    }
    EN=exposedNamesSet.toArray(new Pair[exposedNamesSet.size()]);
  }
  if (exposedNamesForReadSet != null) {
    Set<String> readOnlyNames=new HashSet<String>();
    for (    Pair<Pair<String,String>,Integer> v : exposedNamesForReadSet) {
      if (entityName != null && entityName.equals(v.fst.snd)) {
        readOnlyNames.add(v.fst.fst);
      }
    }
    if (exposedNamesForWriteSet != null) {
      for (      Pair<Pair<String,String>,Integer> v : exposedNamesForWriteSet) {
        if (entityName != null && entityName.equals(v.fst.snd)) {
          readOnlyNames.remove(v.fst.fst);
        }
      }
    }
    this.readOnlyNames=readOnlyNames;
  }
 else {
    this.readOnlyNames=null;
  }
  this.exposedNames=buildLexicalNamesArray(EN);
  this.exitLexicalUses=buildLexicalUseArray(EN,entityName);
  this.instructionLexicalUses=new int[instrs.length][];
  for (int i=0; i < instrs.length; i++) {
    if (instrs[i] instanceof SSAAbstractInvokeInstruction) {
      this.instructionLexicalUses[i]=buildLexicalUseArray(EN,null);
    }
  }
  if (accesses != null) {
    Set<String> parents=new LinkedHashSet<String>();
    for (Iterator<Access> ACS=accesses.iterator(); ACS.hasNext(); ) {
      Access AC=ACS.next();
      if (AC.variableDefiner != null) {
        parents.add(AC.variableDefiner);
      }
    }
    scopingParents=parents.toArray(new String[parents.size()]);
    if (DEBUG_LEXICAL) {
      System.err.println(("String_Node_Str" + scope.getEntity()));
      System.err.println(parents.toString());
    }
  }
 else {
    scopingParents=null;
  }
  if (DEBUG_NAMES) {
    System.err.println(("String_Node_Str" + scope.getEntity()));
    for (int i=0; i < instructionLexicalUses.length; i++) {
      if (instructionLexicalUses[i] != null) {
        System.err.println(("String_Node_Str" + instrs[i]));
        for (int j=0; j < instructionLexicalUses[i].length; j++) {
          System.err.println(("String_Node_Str" + this.exposedNames[j].fst + "String_Node_Str"+ instructionLexicalUses[i][j]));
        }
      }
    }
  }
}