content: /**
   */
  package org.abapgit.adt.backend.model.abapObjects.impl;
  
  import org.abapgit.adt.backend.model.abapObjects.IAbapObject;
  import org.abapgit.adt.backend.model.abapObjects.IAbapObjects;
  import org.abapgit.adt.backend.model.abapObjects.IAbapObjectsFactory;
  import org.abapgit.adt.backend.model.abapObjects.IAbapObjectsPackage;
  import org.abapgit.adt.backend.model.abapObjects.IDocumentRoot;
  
  import org.eclipse.emf.ecore.EAttribute;
  import org.eclipse.emf.ecore.EClass;
  import org.eclipse.emf.ecore.EPackage;
  import org.eclipse.emf.ecore.EReference;
  
  import org.eclipse.emf.ecore.impl.EPackageImpl;
  
  import org.eclipse.emf.ecore.xml.type.XMLTypePackage;
  
  /**
   * <!-- begin-user-doc -->
   * An implementation of the model <b>Package</b>.
   * <!-- end-user-doc -->
   * @generated
   */
  public class AbapObjectsPackageImpl extends EPackageImpl implements IAbapObjectsPackage {
  	/**
  	 * <!-- begin-user-doc -->
  	 * <!-- end-user-doc -->
  	 * @generated
  	 */
  	private EClass abapObjectEClass = null;
  
  	/**
  	 * <!-- begin-user-doc -->
  	 * <!-- end-user-doc -->
  	 * @generated
  	 */
  	private EClass abapObjectsEClass = null;
  
  	/**
  	 * <!-- begin-user-doc -->
  	 * <!-- end-user-doc -->
  	 * @generated
  	 */
  	private EClass documentRootEClass = null;
  
  	/**
  	 * Creates an instance of the model <b>Package</b>, registered with
  	 * {@link org.eclipse.emf.ecore.EPackage.Registry EPackage.Registry} by the package
  	 * package URI value.
  	 * <p>Note: the correct way to create the package is via the static
  	 * factory method {@link #init init()}, which also performs
  	 * initialization of the package, or returns the registered package,
  	 * if one already exists.
  	 * <!-- begin-user-doc -->
  	 * <!-- end-user-doc -->
  	 * @see org.eclipse.emf.ecore.EPackage.Registry
  	 * @see org.abapgit.adt.backend.model.abapObjects.IAbapObjectsPackage#eNS_URI
  	 * @see #init()
  	 * @generated
  	 */
  	private AbapObjectsPackageImpl() {
  		super(eNS_URI, IAbapObjectsFactory.eINSTANCE);
  	}
  
  	/**
  	 * <!-- begin-user-doc -->
  	 * <!-- end-user-doc -->
  	 * @generated
  	 */
  	private static boolean isInited = false;
  
  	/**
  	 * Creates, registers, and initializes the <b>Package</b> for this model, and for any others upon which it depends.
  	 *
  	 * <p>This method is used to initialize {@link IAbapObjectsPackage#eINSTANCE} when that field is accessed.
  	 * Clients should not invoke it directly. Instead, they should simply access that field to obtain the package.
  	 * <!-- begin-user-doc -->
  	 * <!-- end-user-doc -->
  	 * @see #eNS_URI
  	 * @see #createPackageContents()
  	 * @see #initializePackageContents()
  	 * @generated
  	 */
  	public static IAbapObjectsPackage init() {
  		if (isInited) return (IAbapObjectsPackage)EPackage.Registry.INSTANCE.getEPackage(IAbapObjectsPackage.eNS_URI);
  
  		// Obtain or create and register package
  		Object registeredAbapObjectsPackage = EPackage.Registry.INSTANCE.get(eNS_URI);
  		AbapObjectsPackageImpl theAbapObjectsPackage = registeredAbapObjectsPackage instanceof AbapObjectsPackageImpl ? (AbapObjectsPackageImpl)registeredAbapObjectsPackage : new AbapObjectsPackageImpl();
  
  		isInited = true;
  
  		// Initialize simple dependencies
  		XMLTypePackage.eINSTANCE.eClass();
  
  		// Create package meta-data objects
  		theAbapObjectsPackage.createPackageContents();
  
  		// Initialize created meta-data
  		theAbapObjectsPackage.initializePackageContents();
  
  		// Mark meta-data to indicate it can't be changed
  		theAbapObjectsPackage.freeze();
  
  		// Update the registry and return the package
  		EPackage.Registry.INSTANCE.put(IAbapObjectsPackage.eNS_URI, theAbapObjectsPackage);
  		return theAbapObjectsPackage;
  	}
  
  	/**
  	 * <!-- begin-user-doc -->
  	 * <!-- end-user-doc -->
  	 * @generated
  	 */
  	@Override
  	public EClass getAbapObject() {
  		return abapObjectEClass;
  	}
  
  	/**
  	 * <!-- begin-user-doc -->
  	 * <!-- end-user-doc -->
  	 * @generated
  	 */
  	@Override
  	public EAttribute getAbapObject_Type() {
  		return (EAttribute)abapObjectEClass.getEStructuralFeatures().get(0);
  	}
  
  	/**
  	 * <!-- begin-user-doc -->
  	 * <!-- end-user-doc -->
  	 * @generated
  	 */
  	@Override
  	public EAttribute getAbapObject_Package() {
  		return (EAttribute)abapObjectEClass.getEStructuralFeatures().get(1);
  	}
  
  	/**
  	 * <!-- begin-user-doc -->
  	 * <!-- end-user-doc -->
  	 * @generated
  	 */
  	@Override
  	public EAttribute getAbapObject_Name() {
  		return (EAttribute)abapObjectEClass.getEStructuralFeatures().get(2);
  	}
  
  	/**
  	 * <!-- begin-user-doc -->
  	 * <!-- end-user-doc -->
  	 * @generated
  	 */
  	@Override
  	public EAttribute getAbapObject_MsgType() {
  		return (EAttribute)abapObjectEClass.getEStructuralFeatures().get(3);
  	}
  
  	/**
  	 * <!-- begin-user-doc -->
  	 * <!-- end-user-doc -->
  	 * @generated
  	 */
  	@Override
  	public EAttribute getAbapObject_MsgText() {
  		return (EAttribute)abapObjectEClass.getEStructuralFeatures().get(4);
  	}
  
  	/**
  	 * <!-- begin-user-doc -->
  	 * <!-- end-user-doc -->
  	 * @generated
  	 */
  	@Override
  	public EAttribute getAbapObject_Status() {
  		return (EAttribute)abapObjectEClass.getEStructuralFeatures().get(5);
  	}
  
  	/**
  	 * <!-- begin-user-doc -->
  	 * <!-- end-user-doc -->
  	 * @generated
  	 */
  	@Override
  	public EReference getAbapObject_AbapLogObjectChildren() {
  		return (EReference)abapObjectEClass.getEStructuralFeatures().get(6);
  	}
  
  	/**
  	 * <!-- begin-user-doc -->
  	 * <!-- end-user-doc -->
  	 * @generated
  	 */
  	@Override
  	public EClass getAbapObjects() {
  		return abapObjectsEClass;
  	}
  
  	/**
  	 * <!-- begin-user-doc -->
  	 * <!-- end-user-doc -->
  	 * @generated
  	 */
  	@Override
  	public EReference getAbapObjects_AbapObjects() {
  		return (EReference)abapObjectsEClass.getEStructuralFeatures().get(0);
  	}
  
  	/**
  	 * <!-- begin-user-doc -->
  	 * <!-- end-user-doc -->
  	 * @generated
  	 */
  	@Override
  	public EClass getDocumentRoot() {
  		return documentRootEClass;
  	}
  
  	/**
  	 * <!-- begin-user-doc -->
  	 * <!-- end-user-doc -->
  	 * @generated
  	 */
  	@Override
  	public EAttribute getDocumentRoot_Mixed() {
  		return (EAttribute)documentRootEClass.getEStructuralFeatures().get(0);
  	}
  
  	/**
  	 * <!-- begin-user-doc -->
  	 * <!-- end-user-doc -->
  	 * @generated
  	 */
  	@Override
  	public EReference getDocumentRoot_XMLNSPrefixMap() {
  		return (EReference)documentRootEClass.getEStructuralFeatures().get(1);
  	}
  
  	/**
  	 * <!-- begin-user-doc -->
  	 * <!-- end-user-doc -->
  	 * @generated
  	 */
  	@Override
  	public EReference getDocumentRoot_XSISchemaLocation() {
  		return (EReference)documentRootEClass.getEStructuralFeatures().get(2);
  	}
  
  	/**
  	 * <!-- begin-user-doc -->
  	 * <!-- end-user-doc -->
  	 * @generated
  	 */
  	@Override
  	public EReference getDocumentRoot_AbapObjects() {
  		return (EReference)documentRootEClass.getEStructuralFeatures().get(3);
  	}
  
  	/**
  	 * <!-- begin-user-doc -->
  	 * <!-- end-user-doc -->
  	 * @generated
  	 */
  	@Override
  	public IAbapObjectsFactory getAbapObjectsFactory() {
  		return (IAbapObjectsFactory)getEFactoryInstance();
  	}
  
  	/**
  	 * <!-- begin-user-doc -->
  	 * <!-- end-user-doc -->
  	 * @generated
  	 */
  	private boolean isCreated = false;
  
  	/**
  	 * Creates the meta-model objects for the package.  This method is
  	 * guarded to have no affect on any invocation but its first.
  	 * <!-- begin-user-doc -->
  	 * <!-- end-user-doc -->
  	 * @generated
  	 */
  	public void createPackageContents() {
  		if (isCreated) return;
  		isCreated = true;
  
  		// Create classes and their features
  		abapObjectEClass = createEClass(ABAP_OBJECT);
  		createEAttribute(abapObjectEClass, ABAP_OBJECT__TYPE);
  		createEAttribute(abapObjectEClass, ABAP_OBJECT__PACKAGE);
  		createEAttribute(abapObjectEClass, ABAP_OBJECT__NAME);
  		createEAttribute(abapObjectEClass, ABAP_OBJECT__MSG_TYPE);
  		createEAttribute(abapObjectEClass, ABAP_OBJECT__MSG_TEXT);
  		createEAttribute(abapObjectEClass, ABAP_OBJECT__STATUS);
  		createEReference(abapObjectEClass, ABAP_OBJECT__ABAP_LOG_OBJECT_CHILDREN);
  
  		abapObjectsEClass = createEClass(ABAP_OBJECTS);
  		createEReference(abapObjectsEClass, ABAP_OBJECTS__ABAP_OBJECTS);
  
  		documentRootEClass = createEClass(DOCUMENT_ROOT);
  		createEAttribute(documentRootEClass, DOCUMENT_ROOT__MIXED);
  		createEReference(documentRootEClass, DOCUMENT_ROOT__XMLNS_PREFIX_MAP);
  		createEReference(documentRootEClass, DOCUMENT_ROOT__XSI_SCHEMA_LOCATION);
  		createEReference(documentRootEClass, DOCUMENT_ROOT__ABAP_OBJECTS);
  	}
  
  	/**
  	 * <!-- begin-user-doc -->
  	 * <!-- end-user-doc -->
  	 * @generated
  	 */
  	private boolean isInitialized = false;
  
  	/**
  	 * Complete the initialization of the package and its meta-model.  This
  	 * method is guarded to have no affect on any invocation but its first.
  	 * <!-- begin-user-doc -->
  	 * <!-- end-user-doc -->
  	 * @generated
  	 */
  	public void initializePackageContents() {
  		if (isInitialized) return;
  		isInitialized = true;
  
  		// Initialize package
  		setName(eNAME);
  		setNsPrefix(eNS_PREFIX);
  		setNsURI(eNS_URI);
  
  		// Obtain other dependent packages
  		XMLTypePackage theXMLTypePackage = (XMLTypePackage)EPackage.Registry.INSTANCE.getEPackage(XMLTypePackage.eNS_URI);
  
  		// Create type parameters
  
  		// Set bounds for type parameters
  
  		// Add supertypes to classes
  
  		// Initialize classes, features, and operations; add parameters
  		initEClass(abapObjectEClass, IAbapObject.class, "AbapObject", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
  		initEAttribute(getAbapObject_Type(), theXMLTypePackage.getString(), "type", null, 0, 1, IAbapObject.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
  		initEAttribute(getAbapObject_Package(), theXMLTypePackage.getString(), "package", null, 0, 1, IAbapObject.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
  		initEAttribute(getAbapObject_Name(), theXMLTypePackage.getString(), "name", null, 0, 1, IAbapObject.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
  		initEAttribute(getAbapObject_MsgType(), theXMLTypePackage.getString(), "msgType", null, 0, 1, IAbapObject.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
  		initEAttribute(getAbapObject_MsgText(), theXMLTypePackage.getString(), "msgText", null, 0, 1, IAbapObject.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
  		initEAttribute(getAbapObject_Status(), theXMLTypePackage.getString(), "status", null, 0, 1, IAbapObject.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
  		initEReference(getAbapObject_AbapLogObjectChildren(), this.getAbapObject(), null, "abapLogObjectChildren", null, 0, -1, IAbapObject.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_COMPOSITE, IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
  
  		initEClass(abapObjectsEClass, IAbapObjects.class, "AbapObjects", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
  		initEReference(getAbapObjects_AbapObjects(), this.getAbapObject(), null, "abapObjects", null, 0, -1, IAbapObjects.class, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
  
  		initEClass(documentRootEClass, IDocumentRoot.class, "DocumentRoot", !IS_ABSTRACT, !IS_INTERFACE, IS_GENERATED_INSTANCE_CLASS);
  		initEAttribute(getDocumentRoot_Mixed(), ecorePackage.getEFeatureMapEntry(), "mixed", null, 0, -1, null, !IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, !IS_UNSETTABLE, !IS_ID, !IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
  		initEReference(getDocumentRoot_XMLNSPrefixMap(), ecorePackage.getEStringToStringMapEntry(), null, "xMLNSPrefixMap", null, 0, -1, null, IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
  		initEReference(getDocumentRoot_XSISchemaLocation(), ecorePackage.getEStringToStringMapEntry(), null, "xSISchemaLocation", null, 0, -1, null, IS_TRANSIENT, !IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, !IS_DERIVED, IS_ORDERED);
  		initEReference(getDocumentRoot_AbapObjects(), this.getAbapObjects(), null, "abapObjects", null, 0, 1, null, IS_TRANSIENT, IS_VOLATILE, IS_CHANGEABLE, IS_COMPOSITE, !IS_RESOLVE_PROXIES, !IS_UNSETTABLE, IS_UNIQUE, IS_DERIVED, IS_ORDERED);
  
  		// Create resource
  		createResource(eNS_URI);
  
  		// Create annotations
  		// http:///org/eclipse/emf/ecore/util/ExtendedMetaData
  		createExtendedMetaDataAnnotations();
  	}
  
  	/**
  	 * Initializes the annotations for <b>http:///org/eclipse/emf/ecore/util/ExtendedMetaData</b>.
  	 * <!-- begin-user-doc -->
  	 * <!-- end-user-doc -->
  	 * @generated
  	 */
  	protected void createExtendedMetaDataAnnotations() {
  		String source = "http:///org/eclipse/emf/ecore/util/ExtendedMetaData";
  		addAnnotation
  		  (abapObjectEClass,
  		   source,
  		   new String[] {
  			   "kind", "elementOnly",
  			   "name", "abapObject"
  		   });
  		addAnnotation
  		  (getAbapObject_Type(),
  		   source,
  		   new String[] {
  			   "kind", "element",
  			   "namespace", "##targetNamespace",
  			   "name", "type"
  		   });
  		addAnnotation
  		  (getAbapObject_Package(),
  		   source,
  		   new String[] {
  			   "kind", "element",
  			   "namespace", "##targetNamespace",
  			   "name", "package"
  		   });
  		addAnnotation
  		  (getAbapObject_Name(),
  		   source,
  		   new String[] {
  			   "kind", "element",
  			   "namespace", "##targetNamespace",
  			   "name", "name"
  		   });
  		addAnnotation
  		  (getAbapObject_MsgType(),
  		   source,
  		   new String[] {
  			   "kind", "element",
  			   "namespace", "##targetNamespace",
  			   "name", "msgType"
  		   });
  		addAnnotation
  		  (getAbapObject_MsgText(),
  		   source,
  		   new String[] {
  			   "kind", "element",
  			   "namespace", "##targetNamespace",
  			   "name", "msgText"
  		   });
  		addAnnotation
  		  (getAbapObject_Status(),
  		   source,
  		   new String[] {
  			   "kind", "element",
  			   "namespace", "##targetNamespace",
  			   "name", "status"
  		   });
  		addAnnotation
  		  (getAbapObject_AbapLogObjectChildren(),
  		   source,
  		   new String[] {
  			   "kind", "element",
  			   "namespace", "##targetNamespace"
  		   });
  		addAnnotation
  		  (abapObjectsEClass,
  		   source,
  		   new String[] {
  			   "kind", "elementOnly",
  			   "name", "abapObjects"
  		   });
  		addAnnotation
  		  (getAbapObjects_AbapObjects(),
  		   source,
  		   new String[] {
  			   "kind", "element",
  			   "namespace", "##targetNamespace",
  			   "name", "abapObject"
  		   });
  		addAnnotation
  		  (documentRootEClass,
  		   source,
  		   new String[] {
  			   "kind", "mixed",
  			   "name", ""
  		   });
  		addAnnotation
  		  (getDocumentRoot_Mixed(),
  		   source,
  		   new String[] {
  			   "kind", "elementWildcard",
  			   "name", ":mixed"
  		   });
  		addAnnotation
  		  (getDocumentRoot_XMLNSPrefixMap(),
  		   source,
  		   new String[] {
  			   "kind", "attribute",
  			   "name", "xmlns:prefix"
  		   });
  		addAnnotation
  		  (getDocumentRoot_XSISchemaLocation(),
  		   source,
  		   new String[] {
  			   "kind", "attribute",
  			   "name", "xsi:schemaLocation"
  		   });
  		addAnnotation
  		  (getDocumentRoot_AbapObjects(),
  		   source,
  		   new String[] {
  			   "kind", "element",
  			   "namespace", "##targetNamespace",
  			   "name", "abapObjects"
  		   });
  	}
  
  } //AbapObjectsPackageImpl
  