package BHL6.structure;

/*Generated by MPS */

import jetbrains.mps.smodel.runtime.BaseStructureAspectDescriptor;
import jetbrains.mps.smodel.runtime.ConceptDescriptor;
import java.util.Collection;
import java.util.Arrays;
import org.jetbrains.annotations.Nullable;
import jetbrains.mps.smodel.adapter.ids.SConceptId;
import org.jetbrains.mps.openapi.language.SAbstractConcept;
import jetbrains.mps.smodel.runtime.impl.ConceptDescriptorBuilder2;

public class StructureAspectDescriptor extends BaseStructureAspectDescriptor {
  /*package*/ final ConceptDescriptor myConceptA = createDescriptorForA();
  /*package*/ final ConceptDescriptor myConceptB = createDescriptorForB();
  /*package*/ final ConceptDescriptor myConceptC = createDescriptorForC();
  /*package*/ final ConceptDescriptor myConceptD = createDescriptorForD();
  /*package*/ final ConceptDescriptor myConceptE = createDescriptorForE();
  /*package*/ final ConceptDescriptor myConceptF = createDescriptorForF();
  /*package*/ final ConceptDescriptor myConceptG = createDescriptorForG();
  /*package*/ final ConceptDescriptor myConceptH = createDescriptorForH();
  /*package*/ final ConceptDescriptor myConceptI = createDescriptorForI();
  /*package*/ final ConceptDescriptor myConceptI1 = createDescriptorForI1();
  /*package*/ final ConceptDescriptor myConceptI2 = createDescriptorForI2();
  /*package*/ final ConceptDescriptor myConceptJ = createDescriptorForJ();
  private final LanguageConceptSwitch myIndexSwitch;

  public StructureAspectDescriptor() {
    myIndexSwitch = new LanguageConceptSwitch();
  }


  @Override
  public void reportDependencies(jetbrains.mps.smodel.runtime.StructureAspectDescriptor.Dependencies deps) {
    deps.extendedLanguage(0xceab519525ea4f22L, 0x9b92103b95ca8c0cL, "jetbrains.mps.lang.core");
  }

  @Override
  public Collection<ConceptDescriptor> getDescriptors() {
    return Arrays.asList(myConceptA, myConceptB, myConceptC, myConceptD, myConceptE, myConceptF, myConceptG, myConceptH, myConceptI, myConceptI1, myConceptI2, myConceptJ);
  }

  @Override
  @Nullable
  public ConceptDescriptor getDescriptor(SConceptId id) {
    switch (myIndexSwitch.index(id)) {
      case LanguageConceptSwitch.A:
        return myConceptA;
      case LanguageConceptSwitch.B:
        return myConceptB;
      case LanguageConceptSwitch.C:
        return myConceptC;
      case LanguageConceptSwitch.D:
        return myConceptD;
      case LanguageConceptSwitch.E:
        return myConceptE;
      case LanguageConceptSwitch.F:
        return myConceptF;
      case LanguageConceptSwitch.G:
        return myConceptG;
      case LanguageConceptSwitch.H:
        return myConceptH;
      case LanguageConceptSwitch.I:
        return myConceptI;
      case LanguageConceptSwitch.I1:
        return myConceptI1;
      case LanguageConceptSwitch.I2:
        return myConceptI2;
      case LanguageConceptSwitch.J:
        return myConceptJ;
      default:
        return null;
    }
  }


  /*package*/ int internalIndex(SAbstractConcept c) {
    return myIndexSwitch.index(c);
  }

  private static ConceptDescriptor createDescriptorForA() {
    ConceptDescriptorBuilder2 b = new ConceptDescriptorBuilder2("BHL6", "A", 0x424c173aee734dc9L, 0xbc43d0051c9b1e8fL, 0x559729dec04606a7L);
    b.class_(false, false, false);
    b.origin("r:bab76308-0131-498c-bd77-e2a62f306a1a(BHL6.structure)/6167444251392476839");
    b.version(3);
    return b.create();
  }
  private static ConceptDescriptor createDescriptorForB() {
    ConceptDescriptorBuilder2 b = new ConceptDescriptorBuilder2("BHL6", "B", 0x424c173aee734dc9L, 0xbc43d0051c9b1e8fL, 0x559729dec0460fdaL);
    b.class_(false, false, false);
    b.origin("r:bab76308-0131-498c-bd77-e2a62f306a1a(BHL6.structure)/6167444251392479194");
    b.version(3);
    return b.create();
  }
  private static ConceptDescriptor createDescriptorForC() {
    ConceptDescriptorBuilder2 b = new ConceptDescriptorBuilder2("BHL6", "C", 0x424c173aee734dc9L, 0xbc43d0051c9b1e8fL, 0x559729dec0461c33L);
    b.class_(false, false, false);
    b.origin("r:bab76308-0131-498c-bd77-e2a62f306a1a(BHL6.structure)/6167444251392482355");
    b.version(3);
    return b.create();
  }
  private static ConceptDescriptor createDescriptorForD() {
    ConceptDescriptorBuilder2 b = new ConceptDescriptorBuilder2("BHL6", "D", 0x424c173aee734dc9L, 0xbc43d0051c9b1e8fL, 0x559729dec04623e8L);
    b.class_(false, false, false);
    // extends: BHL6.structure.B
    b.super_(0x424c173aee734dc9L, 0xbc43d0051c9b1e8fL, 0x559729dec0460fdaL);
    b.origin("r:bab76308-0131-498c-bd77-e2a62f306a1a(BHL6.structure)/6167444251392484328");
    b.version(3);
    return b.create();
  }
  private static ConceptDescriptor createDescriptorForE() {
    ConceptDescriptorBuilder2 b = new ConceptDescriptorBuilder2("BHL6", "E", 0x424c173aee734dc9L, 0xbc43d0051c9b1e8fL, 0x559729dec0462797L);
    b.class_(false, false, false);
    // extends: BHL6.structure.C
    b.super_(0x424c173aee734dc9L, 0xbc43d0051c9b1e8fL, 0x559729dec0461c33L);
    b.origin("r:bab76308-0131-498c-bd77-e2a62f306a1a(BHL6.structure)/6167444251392485271");
    b.version(3);
    return b.create();
  }
  private static ConceptDescriptor createDescriptorForF() {
    ConceptDescriptorBuilder2 b = new ConceptDescriptorBuilder2("BHL6", "F", 0x424c173aee734dc9L, 0xbc43d0051c9b1e8fL, 0x559729dec0465379L);
    b.class_(false, false, false);
    b.origin("r:bab76308-0131-498c-bd77-e2a62f306a1a(BHL6.structure)/6167444251392496505");
    b.version(3);
    return b.create();
  }
  private static ConceptDescriptor createDescriptorForG() {
    ConceptDescriptorBuilder2 b = new ConceptDescriptorBuilder2("BHL6", "G", 0x424c173aee734dc9L, 0xbc43d0051c9b1e8fL, 0x559729dec0465442L);
    b.class_(false, false, false);
    // extends: BHL6.structure.F
    b.super_(0x424c173aee734dc9L, 0xbc43d0051c9b1e8fL, 0x559729dec0465379L);
    b.origin("r:bab76308-0131-498c-bd77-e2a62f306a1a(BHL6.structure)/6167444251392496706");
    b.version(3);
    return b.create();
  }
  private static ConceptDescriptor createDescriptorForH() {
    ConceptDescriptorBuilder2 b = new ConceptDescriptorBuilder2("BHL6", "H", 0x424c173aee734dc9L, 0xbc43d0051c9b1e8fL, 0x1206f7d464a22147L);
    b.class_(false, false, false);
    // extends: BHL6.structure.D
    b.super_(0x424c173aee734dc9L, 0xbc43d0051c9b1e8fL, 0x559729dec04623e8L);
    b.origin("r:bab76308-0131-498c-bd77-e2a62f306a1a(BHL6.structure)/1298998034136441159");
    b.version(3);
    return b.create();
  }
  private static ConceptDescriptor createDescriptorForI() {
    ConceptDescriptorBuilder2 b = new ConceptDescriptorBuilder2("BHL6", "I", 0x424c173aee734dc9L, 0xbc43d0051c9b1e8fL, 0x13b01619ddde1774L);
    b.interface_();
    b.origin("r:bab76308-0131-498c-bd77-e2a62f306a1a(BHL6.structure)/1418658182974019444");
    b.version(3);
    return b.create();
  }
  private static ConceptDescriptor createDescriptorForI1() {
    ConceptDescriptorBuilder2 b = new ConceptDescriptorBuilder2("BHL6", "I1", 0x424c173aee734dc9L, 0xbc43d0051c9b1e8fL, 0x13b01619ddde175eL);
    b.interface_();
    b.parent(0x424c173aee734dc9L, 0xbc43d0051c9b1e8fL, 0x13b01619ddde1774L);
    b.origin("r:bab76308-0131-498c-bd77-e2a62f306a1a(BHL6.structure)/1418658182974019422");
    b.version(3);
    return b.create();
  }
  private static ConceptDescriptor createDescriptorForI2() {
    ConceptDescriptorBuilder2 b = new ConceptDescriptorBuilder2("BHL6", "I2", 0x424c173aee734dc9L, 0xbc43d0051c9b1e8fL, 0x13b01619ddde1769L);
    b.interface_();
    b.parent(0x424c173aee734dc9L, 0xbc43d0051c9b1e8fL, 0x13b01619ddde1774L);
    b.origin("r:bab76308-0131-498c-bd77-e2a62f306a1a(BHL6.structure)/1418658182974019433");
    b.version(3);
    return b.create();
  }
  private static ConceptDescriptor createDescriptorForJ() {
    ConceptDescriptorBuilder2 b = new ConceptDescriptorBuilder2("BHL6", "J", 0x424c173aee734dc9L, 0xbc43d0051c9b1e8fL, 0x13b01619ddde16fdL);
    b.class_(false, false, false);
    b.parent(0x424c173aee734dc9L, 0xbc43d0051c9b1e8fL, 0x13b01619ddde175eL);
    b.parent(0x424c173aee734dc9L, 0xbc43d0051c9b1e8fL, 0x13b01619ddde1769L);
    b.origin("r:bab76308-0131-498c-bd77-e2a62f306a1a(BHL6.structure)/1418658182974019325");
    b.version(3);
    return b.create();
  }
}
