Program: 84508
Project: 84508
Buggy source:
@Override public void parse(IParserManager pm,IToken token){
  int type=token.type();
  if (type == Symbols.SEMICOLON) {
    this.consumer.setImport(this.theImport);
    pm.popParser();
    return;
  }
  if (type == Symbols.COMMA || this.mode == 0) {
    this.consumer.setImport(this.theImport);
    pm.popParser(true);
    return;
  }
switch (this.mode) {
case IMPORT:
switch (type) {
case Symbols.OPEN_CURLY_BRACKET:
{
        MultiImport mi=new MultiImport(token);
        mi.setParent(this.theImport);
        this.theImport=mi;
        if (token.next().type() != Symbols.CLOSE_CURLY_BRACKET) {
          pm.pushParser(new ImportListParser(mi));
          this.mode=MULTIIMPORT;
          return;
        }
        this.mode=0;
        pm.skip();
        return;
      }
case Symbols.WILDCARD:
{
      PackageImport pi=new PackageImport(token.raw());
      pi.setParent(this.theImport);
      this.theImport=pi;
      this.mode=0;
      return;
    }
case Keywords.ANNOTATION:
{
    SimpleImport si=new SimpleImport(token.raw(),annotation);
    si.setParent(this.theImport);
    this.theImport=si;
    this.mode=DOT_ALIAS;
    return;
  }
case Keywords.TYPE:
{
  SimpleImport si=new SimpleImport(token.raw(),ImportParser.type);
  si.setParent(this.theImport);
  this.theImport=si;
  this.mode=DOT_ALIAS;
  return;
}
case Tokens.IDENTIFIER:
case Tokens.SYMBOL_IDENTIFIER:
case Tokens.LETTER_IDENTIFIER:
case Tokens.DOT_IDENTIFIER:
{
SimpleImport si=new SimpleImport(token.raw(),token.nameValue());
si.setParent(this.theImport);
this.theImport=si;
this.mode=DOT_ALIAS;
return;
}
}
pm.report(new SyntaxError(token,"String_Node_Str"));
return;
case DOT_ALIAS:
switch (type) {
case Symbols.DOT:
this.mode=IMPORT;
return;
case Symbols.ARROW_OPERATOR:
case Keywords.AS:
this.mode=0;
IToken next=token.next();
if (ParserUtil.isIdentifier(next.type())) {
this.theImport.setAlias(next.nameValue());
pm.skip();
return;
}
pm.report(new SyntaxError(next,"String_Node_Str"));
return;
case Symbols.CLOSE_CURLY_BRACKET:
this.consumer.setImport(this.theImport);
pm.popParser(true);
return;
}
pm.report(new SyntaxError(token,"String_Node_Str"));
return;
case MULTIIMPORT:
this.theImport.expandPosition(token);
this.consumer.setImport(this.theImport);
pm.popParser();
if (type != Symbols.CLOSE_CURLY_BRACKET) {
pm.report(new SyntaxError(token,"String_Node_Str"));
}
return;
}
}

Fixed version (ground truth):
@Override public void parse(IParserManager pm,IToken token){
  int type=token.type();
  if (type == Symbols.SEMICOLON) {
    this.consumer.setImport(this.theImport);
    pm.popParser();
    return;
  }
  if (type == Symbols.COMMA || this.mode == 0) {
    this.consumer.setImport(this.theImport);
    pm.popParser(true);
    return;
  }
switch (this.mode) {
case IMPORT:
switch (type) {
case Symbols.OPEN_CURLY_BRACKET:
{
        MultiImport mi=new MultiImport(token);
        mi.setParent(this.theImport);
        this.theImport=mi;
        if (token.next().type() != Symbols.CLOSE_CURLY_BRACKET) {
          pm.pushParser(new ImportListParser(mi));
          this.mode=MULTIIMPORT;
          return;
        }
        this.mode=0;
        pm.skip();
        return;
      }
case Symbols.WILDCARD:
{
      PackageImport pi=new PackageImport(token.raw());
      pi.setParent(this.theImport);
      this.theImport=pi;
      this.mode=0;
      return;
    }
case Keywords.ANNOTATION:
{
    SimpleImport si=new SimpleImport(token.raw(),annotation);
    si.setParent(this.theImport);
    this.theImport=si;
    this.mode=DOT_ALIAS;
    return;
  }
case Keywords.TYPE:
{
  SimpleImport si=new SimpleImport(token.raw(),ImportParser.type);
  si.setParent(this.theImport);
  this.theImport=si;
  this.mode=DOT_ALIAS;
  return;
}
case Tokens.IDENTIFIER:
case Tokens.SYMBOL_IDENTIFIER:
case Tokens.LETTER_IDENTIFIER:
case Tokens.DOT_IDENTIFIER:
{
SimpleImport si=new SimpleImport(token.raw(),token.nameValue());
si.setParent(this.theImport);
this.theImport=si;
this.mode=DOT_ALIAS;
return;
}
}
pm.popParser();
pm.report(new SyntaxError(token,"String_Node_Str"));
return;
case DOT_ALIAS:
switch (type) {
case Symbols.DOT:
this.mode=IMPORT;
return;
case Symbols.ARROW_OPERATOR:
case Keywords.AS:
this.mode=0;
IToken next=token.next();
if (ParserUtil.isIdentifier(next.type())) {
this.theImport.setAlias(next.nameValue());
pm.skip();
return;
}
pm.report(new SyntaxError(next,"String_Node_Str"));
return;
case Symbols.CLOSE_CURLY_BRACKET:
this.consumer.setImport(this.theImport);
pm.popParser(true);
return;
}
pm.report(new SyntaxError(token,"String_Node_Str"));
return;
case MULTIIMPORT:
this.theImport.expandPosition(token);
this.consumer.setImport(this.theImport);
pm.popParser();
if (type != Symbols.CLOSE_CURLY_BRACKET) {
pm.reparse();
pm.report(new SyntaxError(token,"String_Node_Str"));
}
return;
}
}