Program: 85197
Project: 85197
Buggy source:
@Override public boolean parse(ParserManager pm,IToken token) throws SyntaxError {
  int type=token.type();
  if (type == Tokens.SEMICOLON) {
    pm.popParser();
    return true;
  }
  if (type == Tokens.COMMA) {
    pm.popParser(true);
    return true;
  }
  if (this.isInMode(IMPORT)) {
    if (type == Tokens.OPEN_CURLY_BRACKET) {
      MultiImport mi=new MultiImport(token,this.parent);
      this.container.addImport(mi);
      this.parent=mi;
      this.container=mi;
      if (!token.next().isType(Tokens.CLOSE_CURLY_BRACKET)) {
        pm.pushParser(new ImportListParser(mi,mi));
        this.mode=MULTIIMPORT;
        return true;
      }
      this.mode=0;
      pm.skip();
      return true;
    }
    if (type == Tokens.WILDCARD) {
      PackageImport pi=new PackageImport(token.raw(),this.parent);
      this.container.addImport(pi);
      this.mode=0;
      return true;
    }
    if (ParserUtil.isIdentifier(type)) {
      SimpleImport si=new SimpleImport(token.raw(),this.parent,token.value());
      this.container.addImport(si);
      this.parent=si;
      this.container=si;
      this.mode=DOT | ALIAS;
      return true;
    }
  }
  if (this.isInMode(DOT)) {
    if (type == Tokens.DOT) {
      this.mode=IMPORT;
      return true;
    }
  }
  if (this.isInMode(ALIAS)) {
    if (type == Tokens.ARROW_OPERATOR) {
      IToken next=token.next();
      if (next.isType(Tokens.TYPE_IDENTIFIER)) {
        ((SimpleImport)this.parent).setAlias(next.value());
        pm.skip();
        return true;
      }
 else {
        this.mode=DOT | IMPORT;
        throw new SyntaxError(next,"String_Node_Str");
      }
    }
  }
  if (this.isInMode(MULTIIMPORT)) {
    if (type == Tokens.CLOSE_CURLY_BRACKET) {
      this.container.expandPosition(token);
      this.mode=0;
      return true;
    }
  }
  pm.popParser(true);
  return true;
}

Fixed version (ground truth):
@Override public boolean parse(ParserManager pm,IToken token) throws SyntaxError {
  int type=token.type();
  if (type == Tokens.SEMICOLON) {
    pm.popParser();
    return true;
  }
  if (type == Tokens.COMMA) {
    pm.popParser(true);
    return true;
  }
  if (this.isInMode(IMPORT)) {
    if (type == Tokens.OPEN_CURLY_BRACKET) {
      MultiImport mi=new MultiImport(token,this.parent);
      this.container.addImport(mi);
      this.parent=mi;
      this.container=mi;
      if (token.next().type() != Tokens.CLOSE_CURLY_BRACKET) {
        pm.pushParser(new ImportListParser(mi,mi));
        this.mode=MULTIIMPORT;
        return true;
      }
      this.mode=0;
      pm.skip();
      return true;
    }
    if (type == Tokens.WILDCARD) {
      PackageImport pi=new PackageImport(token.raw(),this.parent);
      this.container.addImport(pi);
      this.mode=0;
      return true;
    }
    if (ParserUtil.isIdentifier(type)) {
      SimpleImport si=new SimpleImport(token.raw(),this.parent,token.value());
      this.container.addImport(si);
      this.parent=si;
      this.container=si;
      this.mode=DOT | ALIAS;
      return true;
    }
  }
  if (this.isInMode(DOT)) {
    if (type == Tokens.DOT) {
      this.mode=IMPORT;
      return true;
    }
  }
  if (this.isInMode(ALIAS)) {
    if (type == Tokens.ARROW_OPERATOR) {
      IToken next=token.next();
      if (next.type() == Tokens.TYPE_IDENTIFIER) {
        ((SimpleImport)this.parent).setAlias(next.value());
        pm.skip();
        return true;
      }
      this.mode=DOT | IMPORT;
      throw new SyntaxError(next,"String_Node_Str");
    }
  }
  if (this.isInMode(MULTIIMPORT)) {
    if (type == Tokens.CLOSE_CURLY_BRACKET) {
      this.container.expandPosition(token);
      this.mode=0;
      return true;
    }
  }
  pm.popParser(true);
  return true;
}