package jetbrains.mps.debugger.java.customViewers.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.runtime.ConceptKind;
import jetbrains.mps.smodel.runtime.StaticScope;
import jetbrains.mps.smodel.adapter.ids.PrimitiveTypeId;

public class StructureAspectDescriptor extends BaseStructureAspectDescriptor {
  /*package*/ final ConceptDescriptor myConceptCanWrapHighLevelValue_ConceptFunction = createDescriptorForCanWrapHighLevelValue_ConceptFunction();
  /*package*/ final ConceptDescriptor myConceptCustomWatchable = createDescriptorForCustomWatchable();
  /*package*/ final ConceptDescriptor myConceptCustomWatchablesContainer = createDescriptorForCustomWatchablesContainer();
  /*package*/ final ConceptDescriptor myConceptGetHighLevelValuePresentation_ConceptFunction = createDescriptorForGetHighLevelValuePresentation_ConceptFunction();
  /*package*/ final ConceptDescriptor myConceptGetHighLevelWatchablesBlock_ConceptFunction = createDescriptorForGetHighLevelWatchablesBlock_ConceptFunction();
  /*package*/ final ConceptDescriptor myConceptHighLevelCustomViewer = createDescriptorForHighLevelCustomViewer();
  /*package*/ final ConceptDescriptor myConceptHighLevelValue_ConceptFunctionParameter = createDescriptorForHighLevelValue_ConceptFunctionParameter();
  /*package*/ final ConceptDescriptor myConceptHighLevelWatchableCreator = createDescriptorForHighLevelWatchableCreator();
  /*package*/ final ConceptDescriptor myConceptToProcessMethod = createDescriptorForToProcessMethod();
  /*package*/ final ConceptDescriptor myConceptWatchableListType = createDescriptorForWatchableListType();
  /*package*/ final ConceptDescriptor myConceptWatchableType = createDescriptorForWatchableType();
  /*package*/ final ConceptDescriptor myConceptWatchablesListCreator = createDescriptorForWatchablesListCreator();
  private final LanguageConceptSwitch myIndexSwitch;

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


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

  @Override
  public Collection<ConceptDescriptor> getDescriptors() {
    return Arrays.asList(myConceptCanWrapHighLevelValue_ConceptFunction, myConceptCustomWatchable, myConceptCustomWatchablesContainer, myConceptGetHighLevelValuePresentation_ConceptFunction, myConceptGetHighLevelWatchablesBlock_ConceptFunction, myConceptHighLevelCustomViewer, myConceptHighLevelValue_ConceptFunctionParameter, myConceptHighLevelWatchableCreator, myConceptToProcessMethod, myConceptWatchableListType, myConceptWatchableType, myConceptWatchablesListCreator);
  }

  @Override
  @Nullable
  public ConceptDescriptor getDescriptor(SConceptId id) {
    switch (myIndexSwitch.index(id)) {
      case LanguageConceptSwitch.CanWrapHighLevelValue_ConceptFunction:
        return myConceptCanWrapHighLevelValue_ConceptFunction;
      case LanguageConceptSwitch.CustomWatchable:
        return myConceptCustomWatchable;
      case LanguageConceptSwitch.CustomWatchablesContainer:
        return myConceptCustomWatchablesContainer;
      case LanguageConceptSwitch.GetHighLevelValuePresentation_ConceptFunction:
        return myConceptGetHighLevelValuePresentation_ConceptFunction;
      case LanguageConceptSwitch.GetHighLevelWatchablesBlock_ConceptFunction:
        return myConceptGetHighLevelWatchablesBlock_ConceptFunction;
      case LanguageConceptSwitch.HighLevelCustomViewer:
        return myConceptHighLevelCustomViewer;
      case LanguageConceptSwitch.HighLevelValue_ConceptFunctionParameter:
        return myConceptHighLevelValue_ConceptFunctionParameter;
      case LanguageConceptSwitch.HighLevelWatchableCreator:
        return myConceptHighLevelWatchableCreator;
      case LanguageConceptSwitch.ToProcessMethod:
        return myConceptToProcessMethod;
      case LanguageConceptSwitch.WatchableListType:
        return myConceptWatchableListType;
      case LanguageConceptSwitch.WatchableType:
        return myConceptWatchableType;
      case LanguageConceptSwitch.WatchablesListCreator:
        return myConceptWatchablesListCreator;
      default:
        return null;
    }
  }


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

  private static ConceptDescriptor createDescriptorForCanWrapHighLevelValue_ConceptFunction() {
    ConceptDescriptorBuilder2 b = new ConceptDescriptorBuilder2("jetbrains.mps.debugger.java.customViewers", "CanWrapHighLevelValue_ConceptFunction", 0xfa8aeae94df94e13L, 0xbfb19b04c67ddb77L, 0x9a1514043ecbdbL);
    b.class_(false, false, false);
    // extends: jetbrains.mps.baseLanguage.structure.ConceptFunction
    b.super_(0xf3061a5392264cc5L, 0xa443f952ceaf5816L, 0x108bbca0f48L);
    b.origin("r:c8cdf89f-8d25-442c-ae58-6e44844b68d7(jetbrains.mps.debugger.java.customViewers.structure)/43370322128194523");
    b.version(3);
    b.kind(ConceptKind.INTERFACE, StaticScope.NONE);
    return b.create();
  }
  private static ConceptDescriptor createDescriptorForCustomWatchable() {
    ConceptDescriptorBuilder2 b = new ConceptDescriptorBuilder2("jetbrains.mps.debugger.java.customViewers", "CustomWatchable", 0xfa8aeae94df94e13L, 0xbfb19b04c67ddb77L, 0x47047b7665563ef3L);
    b.class_(false, false, false);
    b.parent(0xceab519525ea4f22L, 0x9b92103b95ca8c0cL, 0x110396eaaa4L);
    b.origin("r:c8cdf89f-8d25-442c-ae58-6e44844b68d7(jetbrains.mps.debugger.java.customViewers.structure)/5117350825036234483");
    b.version(3);
    b.property("iconPath", 0x47047b76655643d4L).type(PrimitiveTypeId.STRING).origin("5117350825036235732").done();
    return b.create();
  }
  private static ConceptDescriptor createDescriptorForCustomWatchablesContainer() {
    ConceptDescriptorBuilder2 b = new ConceptDescriptorBuilder2("jetbrains.mps.debugger.java.customViewers", "CustomWatchablesContainer", 0xfa8aeae94df94e13L, 0xbfb19b04c67ddb77L, 0x47047b766556943dL);
    b.class_(false, false, true);
    b.parent(0xceab519525ea4f22L, 0x9b92103b95ca8c0cL, 0x110396eaaa4L);
    b.origin("r:c8cdf89f-8d25-442c-ae58-6e44844b68d7(jetbrains.mps.debugger.java.customViewers.structure)/5117350825036256317");
    b.version(3);
    b.aggregate("watchable", 0x47047b766556943eL).target(0xfa8aeae94df94e13L, 0xbfb19b04c67ddb77L, 0x47047b7665563ef3L).optional(true).ordered(true).multiple(true).origin("5117350825036256318").done();
    b.alias("custom watchables container");
    return b.create();
  }
  private static ConceptDescriptor createDescriptorForGetHighLevelValuePresentation_ConceptFunction() {
    ConceptDescriptorBuilder2 b = new ConceptDescriptorBuilder2("jetbrains.mps.debugger.java.customViewers", "GetHighLevelValuePresentation_ConceptFunction", 0xfa8aeae94df94e13L, 0xbfb19b04c67ddb77L, 0x9a1514043ecbd2L);
    b.class_(false, false, false);
    // extends: jetbrains.mps.baseLanguage.structure.ConceptFunction
    b.super_(0xf3061a5392264cc5L, 0xa443f952ceaf5816L, 0x108bbca0f48L);
    b.origin("r:c8cdf89f-8d25-442c-ae58-6e44844b68d7(jetbrains.mps.debugger.java.customViewers.structure)/43370322128194514");
    b.version(3);
    b.kind(ConceptKind.INTERFACE, StaticScope.NONE);
    return b.create();
  }
  private static ConceptDescriptor createDescriptorForGetHighLevelWatchablesBlock_ConceptFunction() {
    ConceptDescriptorBuilder2 b = new ConceptDescriptorBuilder2("jetbrains.mps.debugger.java.customViewers", "GetHighLevelWatchablesBlock_ConceptFunction", 0xfa8aeae94df94e13L, 0xbfb19b04c67ddb77L, 0x9a1514043ecbd6L);
    b.class_(false, false, false);
    // extends: jetbrains.mps.baseLanguage.structure.ConceptFunction
    b.super_(0xf3061a5392264cc5L, 0xa443f952ceaf5816L, 0x108bbca0f48L);
    b.origin("r:c8cdf89f-8d25-442c-ae58-6e44844b68d7(jetbrains.mps.debugger.java.customViewers.structure)/43370322128194518");
    b.version(3);
    b.kind(ConceptKind.INTERFACE, StaticScope.NONE);
    return b.create();
  }
  private static ConceptDescriptor createDescriptorForHighLevelCustomViewer() {
    ConceptDescriptorBuilder2 b = new ConceptDescriptorBuilder2("jetbrains.mps.debugger.java.customViewers", "HighLevelCustomViewer", 0xfa8aeae94df94e13L, 0xbfb19b04c67ddb77L, 0x97038071a3bfa40L);
    b.class_(false, false, true);
    b.parent(0xceab519525ea4f22L, 0x9b92103b95ca8c0cL, 0x110396eaaa4L);
    b.origin("r:c8cdf89f-8d25-442c-ae58-6e44844b68d7(jetbrains.mps.debugger.java.customViewers.structure)/680105146889009728");
    b.version(3);
    b.property("caption", 0x7b8f744b4f6b3027L).type(PrimitiveTypeId.STRING).origin("8903462855138553895").done();
    b.aggregate("valueType", 0x9a1514043fbc1aL).target(0xf3061a5392264cc5L, 0xa443f952ceaf5816L, 0xf8c37f506dL).optional(false).ordered(true).multiple(false).origin("43370322128256026").done();
    b.aggregate("canWrap", 0x9a1514043ecbdfL).target(0xfa8aeae94df94e13L, 0xbfb19b04c67ddb77L, 0x9a1514043ecbdbL).optional(true).ordered(true).multiple(false).origin("43370322128194527").done();
    b.aggregate("getPresentation", 0x9a1514043ecc32L).target(0xfa8aeae94df94e13L, 0xbfb19b04c67ddb77L, 0x9a1514043ecbd2L).optional(true).ordered(true).multiple(false).origin("43370322128194610").done();
    b.aggregate("getWatchables", 0x9a1514043ecc33L).target(0xfa8aeae94df94e13L, 0xbfb19b04c67ddb77L, 0x9a1514043ecbd6L).optional(false).ordered(true).multiple(false).origin("43370322128194611").done();
    b.alias("custom viewer");
    return b.create();
  }
  private static ConceptDescriptor createDescriptorForHighLevelValue_ConceptFunctionParameter() {
    ConceptDescriptorBuilder2 b = new ConceptDescriptorBuilder2("jetbrains.mps.debugger.java.customViewers", "HighLevelValue_ConceptFunctionParameter", 0xfa8aeae94df94e13L, 0xbfb19b04c67ddb77L, 0x9a1514043ffbadL);
    b.class_(false, false, false);
    // extends: jetbrains.mps.baseLanguage.structure.ConceptFunctionParameter
    b.super_(0xf3061a5392264cc5L, 0xa443f952ceaf5816L, 0x101c66e2c0bL);
    b.origin("r:c8cdf89f-8d25-442c-ae58-6e44844b68d7(jetbrains.mps.debugger.java.customViewers.structure)/43370322128272301");
    b.version(3);
    b.aggregate("valueProxyType", 0x3fd5e5ca2f771cbaL).target(0xf3061a5392264cc5L, 0xa443f952ceaf5816L, 0xf8c37f506dL).optional(true).ordered(true).multiple(false).origin("4599835250971319482").done();
    b.kind(ConceptKind.NORMAL, StaticScope.NONE);
    b.alias("value");
    return b.create();
  }
  private static ConceptDescriptor createDescriptorForHighLevelWatchableCreator() {
    ConceptDescriptorBuilder2 b = new ConceptDescriptorBuilder2("jetbrains.mps.debugger.java.customViewers", "HighLevelWatchableCreator", 0xfa8aeae94df94e13L, 0xbfb19b04c67ddb77L, 0x9a1514044030ceL);
    b.class_(false, false, false);
    // extends: jetbrains.mps.baseLanguage.structure.AbstractCreator
    b.super_(0xf3061a5392264cc5L, 0xa443f952ceaf5816L, 0x10ab844af9bL);
    b.origin("r:c8cdf89f-8d25-442c-ae58-6e44844b68d7(jetbrains.mps.debugger.java.customViewers.structure)/43370322128285902");
    b.version(3);
    b.associate("watchable", 0x9a151404409225L).target(0xfa8aeae94df94e13L, 0xbfb19b04c67ddb77L, 0x47047b7665563ef3L).optional(false).origin("43370322128310821").done();
    b.aggregate("value", 0x9a15140440937bL).target(0xf3061a5392264cc5L, 0xa443f952ceaf5816L, 0xf8c37f506fL).optional(false).ordered(true).multiple(false).origin("43370322128311163").done();
    b.kind(ConceptKind.NORMAL, StaticScope.NONE);
    b.alias("watchable");
    return b.create();
  }
  private static ConceptDescriptor createDescriptorForToProcessMethod() {
    ConceptDescriptorBuilder2 b = new ConceptDescriptorBuilder2("jetbrains.mps.debugger.java.customViewers", "ToProcessMethod", 0xfa8aeae94df94e13L, 0xbfb19b04c67ddb77L, 0xa01bb2d9f697c10L);
    b.class_(false, false, false);
    // extends: jetbrains.mps.lang.core.structure.NodeAttribute
    b.super_(0xceab519525ea4f22L, 0x9b92103b95ca8c0cL, 0x2eb1ad060897da54L);
    b.origin("r:c8cdf89f-8d25-442c-ae58-6e44844b68d7(jetbrains.mps.debugger.java.customViewers.structure)/721063219978402832");
    b.version(3);
    b.alias("to process method");
    return b.create();
  }
  private static ConceptDescriptor createDescriptorForWatchableListType() {
    ConceptDescriptorBuilder2 b = new ConceptDescriptorBuilder2("jetbrains.mps.debugger.java.customViewers", "WatchableListType", 0xfa8aeae94df94e13L, 0xbfb19b04c67ddb77L, 0x19926b3196c33bb3L);
    b.class_(false, false, false);
    // extends: jetbrains.mps.baseLanguage.structure.Type
    b.super_(0xf3061a5392264cc5L, 0xa443f952ceaf5816L, 0xf8c37f506dL);
    b.parent(0xf3061a5392264cc5L, 0xa443f952ceaf5816L, 0x38ff5220e0ac710dL);
    b.origin("r:c8cdf89f-8d25-442c-ae58-6e44844b68d7(jetbrains.mps.debugger.java.customViewers.structure)/1842653058274900915");
    b.version(3);
    b.kind(ConceptKind.INTERFACE, StaticScope.NONE);
    b.alias("watchable list");
    return b.create();
  }
  private static ConceptDescriptor createDescriptorForWatchableType() {
    ConceptDescriptorBuilder2 b = new ConceptDescriptorBuilder2("jetbrains.mps.debugger.java.customViewers", "WatchableType", 0xfa8aeae94df94e13L, 0xbfb19b04c67ddb77L, 0x47047b766556944dL);
    b.class_(false, false, false);
    // extends: jetbrains.mps.baseLanguage.structure.Type
    b.super_(0xf3061a5392264cc5L, 0xa443f952ceaf5816L, 0xf8c37f506dL);
    b.origin("r:c8cdf89f-8d25-442c-ae58-6e44844b68d7(jetbrains.mps.debugger.java.customViewers.structure)/5117350825036256333");
    b.version(3);
    b.kind(ConceptKind.INTERFACE, StaticScope.NONE);
    b.alias("watchable");
    return b.create();
  }
  private static ConceptDescriptor createDescriptorForWatchablesListCreator() {
    ConceptDescriptorBuilder2 b = new ConceptDescriptorBuilder2("jetbrains.mps.debugger.java.customViewers", "WatchablesListCreator", 0xfa8aeae94df94e13L, 0xbfb19b04c67ddb77L, 0x19926b3196c33bb2L);
    b.class_(false, false, false);
    // extends: jetbrains.mps.baseLanguage.structure.AbstractCreator
    b.super_(0xf3061a5392264cc5L, 0xa443f952ceaf5816L, 0x10ab844af9bL);
    b.origin("r:c8cdf89f-8d25-442c-ae58-6e44844b68d7(jetbrains.mps.debugger.java.customViewers.structure)/1842653058274900914");
    b.version(3);
    b.kind(ConceptKind.NORMAL, StaticScope.NONE);
    b.alias("watchables array list");
    return b.create();
  }
}
