package BHL5.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;
import jetbrains.mps.smodel.adapter.ids.PrimitiveTypeId;

public class StructureAspectDescriptor extends BaseStructureAspectDescriptor {
  /*package*/ final ConceptDescriptor myConceptC0 = createDescriptorForC0();
  /*package*/ final ConceptDescriptor myConceptC1 = createDescriptorForC1();
  /*package*/ final ConceptDescriptor myConceptC2 = createDescriptorForC2();
  /*package*/ final ConceptDescriptor myConceptC3 = createDescriptorForC3();
  /*package*/ final ConceptDescriptor myConceptC4 = createDescriptorForC4();
  /*package*/ final ConceptDescriptor myConceptC5 = createDescriptorForC5();
  /*package*/ final ConceptDescriptor myConceptC6 = createDescriptorForC6();
  /*package*/ final ConceptDescriptor myConceptC7 = createDescriptorForC7();
  /*package*/ final ConceptDescriptor myConceptI1 = createDescriptorForI1();
  /*package*/ final ConceptDescriptor myConceptI2 = createDescriptorForI2();
  /*package*/ final ConceptDescriptor myConceptI3 = createDescriptorForI3();
  /*package*/ final ConceptDescriptor myConceptI4 = createDescriptorForI4();
  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(myConceptC0, myConceptC1, myConceptC2, myConceptC3, myConceptC4, myConceptC5, myConceptC6, myConceptC7, myConceptI1, myConceptI2, myConceptI3, myConceptI4);
  }

  @Override
  @Nullable
  public ConceptDescriptor getDescriptor(SConceptId id) {
    switch (myIndexSwitch.index(id)) {
      case LanguageConceptSwitch.C0:
        return myConceptC0;
      case LanguageConceptSwitch.C1:
        return myConceptC1;
      case LanguageConceptSwitch.C2:
        return myConceptC2;
      case LanguageConceptSwitch.C3:
        return myConceptC3;
      case LanguageConceptSwitch.C4:
        return myConceptC4;
      case LanguageConceptSwitch.C5:
        return myConceptC5;
      case LanguageConceptSwitch.C6:
        return myConceptC6;
      case LanguageConceptSwitch.C7:
        return myConceptC7;
      case LanguageConceptSwitch.I1:
        return myConceptI1;
      case LanguageConceptSwitch.I2:
        return myConceptI2;
      case LanguageConceptSwitch.I3:
        return myConceptI3;
      case LanguageConceptSwitch.I4:
        return myConceptI4;
      default:
        return null;
    }
  }


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

  private static ConceptDescriptor createDescriptorForC0() {
    ConceptDescriptorBuilder2 b = new ConceptDescriptorBuilder2("BHL5", "C0", 0xb4fa1e36714a4c77L, 0x8e953eae9632decbL, 0x355d469f0ba2c627L);
    b.class_(false, false, false);
    b.parent(0xb4fa1e36714a4c77L, 0x8e953eae9632decbL, 0x355d469f0ba114cbL);
    b.origin("r:2721a314-71a4-4f87-8d33-9d2d1cd9ce6c(BHL5.structure)/3845307305753232935");
    b.version(3);
    return b.create();
  }
  private static ConceptDescriptor createDescriptorForC1() {
    ConceptDescriptorBuilder2 b = new ConceptDescriptorBuilder2("BHL5", "C1", 0xb4fa1e36714a4c77L, 0x8e953eae9632decbL, 0x355d469f0ba23bc7L);
    b.class_(false, false, false);
    b.parent(0xb4fa1e36714a4c77L, 0x8e953eae9632decbL, 0x355d469f0ba114cbL);
    b.origin("r:2721a314-71a4-4f87-8d33-9d2d1cd9ce6c(BHL5.structure)/3845307305753197511");
    b.version(3);
    return b.create();
  }
  private static ConceptDescriptor createDescriptorForC2() {
    ConceptDescriptorBuilder2 b = new ConceptDescriptorBuilder2("BHL5", "C2", 0xb4fa1e36714a4c77L, 0x8e953eae9632decbL, 0x355d469f0ba2f187L);
    b.class_(false, false, false);
    b.parent(0xb4fa1e36714a4c77L, 0x8e953eae9632decbL, 0x355d469f0ba23ba9L);
    b.origin("r:2721a314-71a4-4f87-8d33-9d2d1cd9ce6c(BHL5.structure)/3845307305753244039");
    b.version(3);
    return b.create();
  }
  private static ConceptDescriptor createDescriptorForC3() {
    ConceptDescriptorBuilder2 b = new ConceptDescriptorBuilder2("BHL5", "C3", 0xb4fa1e36714a4c77L, 0x8e953eae9632decbL, 0x355d469f0ba2f82fL);
    b.class_(false, false, false);
    b.parent(0xb4fa1e36714a4c77L, 0x8e953eae9632decbL, 0x355d469f0ba114cbL);
    b.origin("r:2721a314-71a4-4f87-8d33-9d2d1cd9ce6c(BHL5.structure)/3845307305753245743");
    b.version(3);
    return b.create();
  }
  private static ConceptDescriptor createDescriptorForC4() {
    ConceptDescriptorBuilder2 b = new ConceptDescriptorBuilder2("BHL5", "C4", 0xb4fa1e36714a4c77L, 0x8e953eae9632decbL, 0x355d469f0ba30886L);
    b.class_(false, false, false);
    // extends: BHL5.structure.C3
    b.super_(0xb4fa1e36714a4c77L, 0x8e953eae9632decbL, 0x355d469f0ba2f82fL);
    b.parent(0xb4fa1e36714a4c77L, 0x8e953eae9632decbL, 0x355d469f0ba114cbL);
    b.origin("r:2721a314-71a4-4f87-8d33-9d2d1cd9ce6c(BHL5.structure)/3845307305753249926");
    b.version(3);
    return b.create();
  }
  private static ConceptDescriptor createDescriptorForC5() {
    ConceptDescriptorBuilder2 b = new ConceptDescriptorBuilder2("BHL5", "C5", 0xb4fa1e36714a4c77L, 0x8e953eae9632decbL, 0x3f852a67e9131504L);
    b.class_(false, false, false);
    // extends: BHL5.structure.C3
    b.super_(0xb4fa1e36714a4c77L, 0x8e953eae9632decbL, 0x355d469f0ba2f82fL);
    b.parent(0xb4fa1e36714a4c77L, 0x8e953eae9632decbL, 0x355d469f0ba114cbL);
    b.origin("r:2721a314-71a4-4f87-8d33-9d2d1cd9ce6c(BHL5.structure)/4577111222072317188");
    b.version(3);
    b.property("b", 0x3f852a67e913151eL).type(PrimitiveTypeId.BOOLEAN).origin("4577111222072317214").done();
    return b.create();
  }
  private static ConceptDescriptor createDescriptorForC6() {
    ConceptDescriptorBuilder2 b = new ConceptDescriptorBuilder2("BHL5", "C6", 0xb4fa1e36714a4c77L, 0x8e953eae9632decbL, 0x23a893587ca1aaedL);
    b.class_(false, false, false);
    // extends: BHL5.structure.C5
    b.super_(0xb4fa1e36714a4c77L, 0x8e953eae9632decbL, 0x3f852a67e9131504L);
    b.origin("r:2721a314-71a4-4f87-8d33-9d2d1cd9ce6c(BHL5.structure)/2569465595672242925");
    b.version(3);
    return b.create();
  }
  private static ConceptDescriptor createDescriptorForC7() {
    ConceptDescriptorBuilder2 b = new ConceptDescriptorBuilder2("BHL5", "C7", 0xb4fa1e36714a4c77L, 0x8e953eae9632decbL, 0x23a893587ca1af93L);
    b.class_(false, false, false);
    // extends: BHL5.structure.C6
    b.super_(0xb4fa1e36714a4c77L, 0x8e953eae9632decbL, 0x23a893587ca1aaedL);
    b.parent(0xb4fa1e36714a4c77L, 0x8e953eae9632decbL, 0x25076477397e4c6fL);
    b.parent(0xb4fa1e36714a4c77L, 0x8e953eae9632decbL, 0x25076477397e4c74L);
    b.origin("r:2721a314-71a4-4f87-8d33-9d2d1cd9ce6c(BHL5.structure)/2569465595672244115");
    b.version(3);
    return b.create();
  }
  private static ConceptDescriptor createDescriptorForI1() {
    ConceptDescriptorBuilder2 b = new ConceptDescriptorBuilder2("BHL5", "I1", 0xb4fa1e36714a4c77L, 0x8e953eae9632decbL, 0x355d469f0ba114cbL);
    b.interface_();
    b.origin("r:2721a314-71a4-4f87-8d33-9d2d1cd9ce6c(BHL5.structure)/3845307305753121995");
    b.version(3);
    b.property("a", 0x355d469f0ba114e9L).type(PrimitiveTypeId.STRING).origin("3845307305753122025").done();
    return b.create();
  }
  private static ConceptDescriptor createDescriptorForI2() {
    ConceptDescriptorBuilder2 b = new ConceptDescriptorBuilder2("BHL5", "I2", 0xb4fa1e36714a4c77L, 0x8e953eae9632decbL, 0x355d469f0ba23ba9L);
    b.interface_();
    b.parent(0xb4fa1e36714a4c77L, 0x8e953eae9632decbL, 0x355d469f0ba114cbL);
    b.origin("r:2721a314-71a4-4f87-8d33-9d2d1cd9ce6c(BHL5.structure)/3845307305753197481");
    b.version(3);
    return b.create();
  }
  private static ConceptDescriptor createDescriptorForI3() {
    ConceptDescriptorBuilder2 b = new ConceptDescriptorBuilder2("BHL5", "I3", 0xb4fa1e36714a4c77L, 0x8e953eae9632decbL, 0x25076477397e4c6fL);
    b.interface_();
    b.origin("r:2721a314-71a4-4f87-8d33-9d2d1cd9ce6c(BHL5.structure)/2668211767468772463");
    b.version(3);
    b.property("c", 0x6c4ee9d44295ea26L).type(PrimitiveTypeId.STRING).origin("7804432302139107878").done();
    return b.create();
  }
  private static ConceptDescriptor createDescriptorForI4() {
    ConceptDescriptorBuilder2 b = new ConceptDescriptorBuilder2("BHL5", "I4", 0xb4fa1e36714a4c77L, 0x8e953eae9632decbL, 0x25076477397e4c74L);
    b.interface_();
    b.origin("r:2721a314-71a4-4f87-8d33-9d2d1cd9ce6c(BHL5.structure)/2668211767468772468");
    b.version(3);
    return b.create();
  }
}
