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

Fixed version (ground truth):
private GraphTargetItem member(Reference<Boolean> needsActivation,List<String> importedClasses,List<Integer> openedNamespaces,GraphTargetItem obj,HashMap<String,Integer> registerVars,boolean inFunction,boolean inMethod,List<AssignableAVM2Item> variables) throws IOException, ParseException {
  GraphTargetItem ret=obj;
  ParsedSymbol s=lex();
  while (s.isType(SymbolType.DOT,SymbolType.BRACKET_OPEN)) {
    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.BRACKET_OPEN) {
      GraphTargetItem index=expression(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(),SymbolType.IDENTIFIER);
      String propName=s.value.toString();
      s=lex();
      GraphTargetItem ns=null;
      if (s.type == SymbolType.NAMESPACE_OP) {
        s=lex();
        expected(s,lexer.yyline(),SymbolType.IDENTIFIER);
        ns=new UnresolvedAVM2Item(new ArrayList<String>(),importedClasses,false,null,lexer.yyline(),propName,null,openedNamespaces);
        variables.add((UnresolvedAVM2Item)ns);
        propName=s.value.toString();
      }
 else {
        lexer.pushback(s);
      }
      if (ns != null) {
        ret=new NamespacedAVM2Item(ns,propName,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();
    }
  }
  lexer.pushback(s);
  return ret;
}