parseInterfaceDeclaration_() {
    let start = this.getTreeStartLocation_();
    this.eat_(INTERFACE);
    let name = this.eatId_();
    let typeParameters = this.parseTypeParametersOpt_();
    let extendsClause;
    if (this.eatIf_(EXTENDS)) {
      extendsClause = this.parseInterfaceExtendsClause_();
    } else {
      extendsClause = [];
    }
    let objectType = this.parseObjectType_();
    return new InterfaceDeclaration(this.getTreeLocation_(start),
        name, typeParameters, extendsClause, objectType);
  }
interface Identifier TypeParameters_opt InterfaceExtendsClause_opt
    ObjectType

InterfaceExtendsClause:
  extends ClassOrInterfaceTypeList

ClassOrInterfaceTypeList:
  ClassOrInterfaceType
  ClassOrInterfaceTypeList , ClassOrInterfaceType

ClassOrInterfaceType:
  TypeReference