TypesPackage theTypesPackage = (TypesPackage)EPackage.Registry.INSTANCE.getEPackage(TypesPackage.eNS_URI);
CommonsPackage theCommonsPackage = (CommonsPackage)EPackage.Registry.INSTANCE.getEPackage(CommonsPackage.eNS_URI);
CorePackage theCorePackage = (CorePackage)EPackage.Registry.INSTANCE.getEPackage(CorePackage.eNS_URI);
ParametersPackage theParametersPackage = (ParametersPackage)EPackage.Registry.INSTANCE.getEPackage(ParametersPackage.eNS_URI);
ContainersPackage theContainersPackage = (ContainersPackage)EPackage.Registry.INSTANCE.getEPackage(ContainersPackage.eNS_URI);
LiteralsPackage theLiteralsPackage = (LiteralsPackage)EPackage.Registry.INSTANCE.getEPackage(LiteralsPackage.eNS_URI);
// Create type parameters
// Set bounds for type parameters
// Add supertypes to classes
referenceEClass.getESuperTypes().add(theExpressionsPackage.getPrimaryExpression());
argumentableEClass.getESuperTypes().add(theCommonsPackage.getCommentable());
referenceableElementEClass.getESuperTypes().add(theCommonsPackage.getNamedElement());
elementReferenceEClass.getESuperTypes().add(this.getReference());
elementReferenceEClass.getESuperTypes().add(theCorePackage.getConnectionEnabledElement());
identifierReferenceEClass.getESuperTypes().add(this.getElementReference());
methodCallEClass.getESuperTypes().add(this.getElementReference());
methodCallEClass.getESuperTypes().add(this.getArgumentable());
reflectiveClassReferenceEClass.getESuperTypes().add(this.getReference());
primitiveTypeReferenceEClass.getESuperTypes().add(this.getReference());
primitiveTypeReferenceEClass.getESuperTypes().add(this.getAbstractTypeReference());
stringReferenceEClass.getESuperTypes().add(this.getReference());
stringReferenceEClass.getESuperTypes().add(theCorePackage.getConnectionEnabledElement());
selfReferenceEClass.getESuperTypes().add(this.getReference());
inputReferenceEClass.getESuperTypes().add(this.getIdentifierReference());
outputReferenceEClass.getESuperTypes().add(this.getIdentifierReference());
abstractTypeReferenceEClass.getESuperTypes().add(theTypesPackage.getTypeReference());
processingElementInstanceReferenceEClass.getESuperTypes().add(this.getElementReference());
dispelTypeReferenceEClass.getESuperTypes().add(theTypesPackage.getTypeReference());
processingElementReferenceEClass.getESuperTypes().add(this.getDispelTypeReference());
namespaceProcessingElementReferenceEClass.getESuperTypes().add(this.getDispelTypeReference());
namespaceProcessingElementReferenceEClass.getESuperTypes().add(theCommonsPackage.getNamespaceAwareElement());
structuralTypeReferenceEClass.getESuperTypes().add(this.getDispelTypeReference());
domainTypeReferenceEClass.getESuperTypes().add(this.getDispelTypeReference());
processingElementTypeReferenceEClass.getESuperTypes().add(this.getDispelTypeReference());
// Initialize classes and features; add operations and parameters
initEClass(referenceEClass, Reference.class, "Reference", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
initEReference(getReference_Next(), this.getReference(), null, "next", null, 0, 1, Reference.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
initEReference(getReference_ArraySelectors(), theArraysPackage.getArraySelector(), null, "arraySelectors", null, 0, -1, Reference.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
addEOperation(referenceEClass, theTypesPackage.getType(), "getReferencedType", 0, 1, IS_UNIQUE, IS_ORDERED);
addEOperation(referenceEClass, this.getReference(), "getPrevious", 0, 1, IS_UNIQUE, IS_ORDERED);
initEClass(argumentableEClass, Argumentable.class, "Argumentable", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
initEReference(getArgumentable_Arguments(), theExpressionsPackage.getExpression(), null, "arguments", null, 0, -1, Argumentable.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
addEOperation(argumentableEClass, theTypesPackage.getType(), "getArgumentTypes", 0, -1, IS_UNIQUE, IS_ORDERED);
initEClass(referenceableElementEClass, ReferenceableElement.class, "ReferenceableElement", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
initEClass(elementReferenceEClass, ElementReference.class, "ElementReference", IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
initEReference(getElementReference_Target(), this.getReferenceableElement(), null, "target", null, 0, 1, ElementReference.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
initEClass(identifierReferenceEClass, IdentifierReference.class, "IdentifierReference", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
initEReference(getIdentifierReference_Length(), theParametersPackage.getParameterLength(), null, "length", null, 0, 1, IdentifierReference.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
initEClass(methodCallEClass, MethodCall.class, "MethodCall", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
initEReference(getMethodCall_Call(), theContainersPackage.getDispelFunction(), null, "call", null, 0, 1, MethodCall.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
initEClass(reflectiveClassReferenceEClass, ReflectiveClassReference.class, "ReflectiveClassReference", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
initEClass(primitiveTypeReferenceEClass, PrimitiveTypeReference.class, "PrimitiveTypeReference", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
initEReference(getPrimitiveTypeReference_PrimitiveType(), theTypesPackage.getPrimitiveType(), null, "primitiveType", null, 1, 1, PrimitiveTypeReference.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
initEClass(stringReferenceEClass, StringReference.class, "StringReference", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
initEAttribute(getStringReference_Value(), ecorePackage.getEString(), "value", null, 0, 1, StringReference.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
initEClass(selfReferenceEClass, SelfReference.class, "SelfReference", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
initEReference(getSelfReference_Self(), theLiteralsPackage.getSelf(), null, "self", null, 0, 1, SelfReference.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
initEClass(inputReferenceEClass, InputReference.class, "InputReference", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
initEClass(outputReferenceEClass, OutputReference.class, "OutputReference", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);