Program: 61580
Project: 61580
Buggy source:
private GraphTargetItem member(TypeItem thisType,String pkg,Reference<Boolean> needsActivation,List<String> importedClasses,List<Integer> openedNamespaces,GraphTargetItem obj,HashMap<String,Integer> registerVars,boolean inFunction,boolean inMethod,List<AssignableAVM2Item> variables) throws IOException, AVM2ParseException {
  if (debugMode) {
    System.out.println("String_Node_Str");
  }
  GraphTargetItem ret=obj;
  ParsedSymbol s=lex();
  while (s.isType(SymbolType.DOT,SymbolType.BRACKET_OPEN,SymbolType.TYPENAME)) {
    ParsedSymbol s2=lex();
    boolean attr=false;
    if (s.type == SymbolType.DOT) {
      if (s2.type == SymbolType.ATTRIBUTE) {
        attr=true;
        s=lex();
      }
 else {
        lexer.pushback(s2);
      }
    }
 else {
      lexer.pushback(s2);
    }
    if (s.type == SymbolType.TYPENAME) {
      lexer.pushback(s);
      ret=applyType(thisType,pkg,needsActivation,importedClasses,openedNamespaces,ret,registerVars,inFunction,inMethod,variables);
      s=lex();
    }
 else     if (s.type == SymbolType.BRACKET_OPEN) {
      GraphTargetItem index=expression(thisType,pkg,needsActivation,importedClasses,openedNamespaces,registerVars,inFunction,inMethod,true,variables);
      expectedType(SymbolType.BRACKET_CLOSE);
      ret=new IndexAVM2Item(attr,ret,index,null,openedNamespaces);
      s=lex();
    }
 else {
      s=lex();
      expected(s,lexer.yyline(),SymbolGroup.IDENTIFIER);
      String propName=s.value.toString();
      GraphTargetItem propItem=null;
      s=lex();
      GraphTargetItem ns=null;
      if (s.type == SymbolType.NAMESPACE_OP) {
        ns=new UnresolvedAVM2Item(new ArrayList<GraphTargetItem>(),importedClasses,false,null,lexer.yyline(),propName,null,openedNamespaces);
        variables.add((UnresolvedAVM2Item)ns);
        s=lex();
        if (s.type == SymbolType.BRACKET_OPEN) {
          propItem=expression(thisType,pkg,needsActivation,importedClasses,openedNamespaces,registerVars,inFunction,inMethod,true,variables);
          expectedType(SymbolType.BRACKET_CLOSE);
          propName=null;
        }
 else {
          expected(s,lexer.yyline(),SymbolGroup.IDENTIFIER);
          propName=s.value.toString();
          propItem=null;
        }
      }
 else {
        lexer.pushback(s);
      }
      if (ns != null) {
        ret=new NamespacedAVM2Item(ns,propName,propItem,ret,attr,openedNamespaces,null);
      }
 else {
        ret=new PropertyAVM2Item(ret,(attr ? "String_Node_Str" : "String_Node_Str") + propName,abc,otherABCs,openedNamespaces,new ArrayList<MethodBody>());
      }
      s=lex();
    }
  }
  if (s.type.getPrecedence() == GraphTargetItem.PRECEDENCE_ASSIGMENT) {
    ret=expression1(ret,s.type.getPrecedence(),thisType,pkg,needsActivation,importedClasses,openedNamespaces,inMethod,registerVars,inFunction,inMethod,false,variables);
  }
 else {
    lexer.pushback(s);
  }
  if (debugMode) {
    System.out.println("String_Node_Str");
  }
  return ret;
}

Fixed version (ground truth):
private GraphTargetItem member(TypeItem thisType,String pkg,Reference<Boolean> needsActivation,List<String> importedClasses,List<Integer> openedNamespaces,GraphTargetItem obj,HashMap<String,Integer> registerVars,boolean inFunction,boolean inMethod,List<AssignableAVM2Item> variables) throws IOException, AVM2ParseException {
  if (debugMode) {
    System.out.println("String_Node_Str");
  }
  GraphTargetItem ret=obj;
  ParsedSymbol s=lex();
  while (s.isType(SymbolType.DOT,SymbolType.BRACKET_OPEN,SymbolType.TYPENAME)) {
    ParsedSymbol s2=lex();
    boolean attr=false;
    if (s.type == SymbolType.DOT) {
      if (s2.type == SymbolType.ATTRIBUTE) {
        attr=true;
      }
 else {
        lexer.pushback(s2);
      }
    }
 else {
      lexer.pushback(s2);
    }
    if (s.type == SymbolType.TYPENAME) {
      lexer.pushback(s);
      ret=applyType(thisType,pkg,needsActivation,importedClasses,openedNamespaces,ret,registerVars,inFunction,inMethod,variables);
      s=lex();
    }
 else     if (s.type == SymbolType.BRACKET_OPEN) {
      GraphTargetItem index=expression(thisType,pkg,needsActivation,importedClasses,openedNamespaces,registerVars,inFunction,inMethod,true,variables);
      expectedType(SymbolType.BRACKET_CLOSE);
      ret=new IndexAVM2Item(attr,ret,index,null,openedNamespaces);
      s=lex();
    }
 else {
      s=lex();
      expected(s,lexer.yyline(),SymbolGroup.IDENTIFIER);
      String propName=s.value.toString();
      GraphTargetItem propItem=null;
      s=lex();
      GraphTargetItem ns=null;
      if (s.type == SymbolType.NAMESPACE_OP) {
        ns=new UnresolvedAVM2Item(new ArrayList<GraphTargetItem>(),importedClasses,false,null,lexer.yyline(),propName,null,openedNamespaces);
        variables.add((UnresolvedAVM2Item)ns);
        s=lex();
        if (s.type == SymbolType.BRACKET_OPEN) {
          propItem=expression(thisType,pkg,needsActivation,importedClasses,openedNamespaces,registerVars,inFunction,inMethod,true,variables);
          expectedType(SymbolType.BRACKET_CLOSE);
          propName=null;
        }
 else {
          expected(s,lexer.yyline(),SymbolGroup.IDENTIFIER);
          propName=s.value.toString();
          propItem=null;
        }
      }
 else {
        lexer.pushback(s);
      }
      if (ns != null) {
        ret=new NamespacedAVM2Item(ns,propName,propItem,ret,attr,openedNamespaces,null);
      }
 else {
        ret=new PropertyAVM2Item(ret,(attr ? "String_Node_Str" : "String_Node_Str") + propName,abc,otherABCs,openedNamespaces,new ArrayList<MethodBody>());
      }
      s=lex();
    }
  }
  if (s.type.getPrecedence() == GraphTargetItem.PRECEDENCE_ASSIGMENT) {
    ret=expression1(ret,s.type.getPrecedence(),thisType,pkg,needsActivation,importedClasses,openedNamespaces,inMethod,registerVars,inFunction,inMethod,false,variables);
  }
 else {
    lexer.pushback(s);
  }
  if (debugMode) {
    System.out.println("String_Node_Str");
  }
  return ret;
}