gt:     if (isInitialized) return;
context: /**
   */
  package org.xtext.builddsl.build.impl;
  
  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.xtext.common.types.TypesPackage;
  
  import org.eclipse.xtext.xbase.XbasePackage;
  
  import org.eclipse.xtext.xtype.XtypePackage;
  
  import org.xtext.builddsl.build.BuildFactory;
  import org.xtext.builddsl.build.BuildFile;
  import org.xtext.builddsl.build.BuildPackage;
  import org.xtext.builddsl.build.Declaration;
  import org.xtext.builddsl.build.Parameter;
  import org.xtext.builddsl.build.Task;
  
  /**
   * <!-- begin-user-doc -->
   * An implementation of the model <b>Package</b>.
   * <!-- end-user-doc -->
   * @generated
   */
  public class BuildPackageImpl extends EPackageImpl implements BuildPackage
  {
    /**
     * <!-- begin-user-doc -->
     * <!-- end-user-doc -->
     * @generated
     */
    private EClass buildFileEClass = null;
  
    /**
     * <!-- begin-user-doc -->
     * <!-- end-user-doc -->
     * @generated
     */
    private EClass declarationEClass = null;
  
    /**
     * <!-- begin-user-doc -->
     * <!-- end-user-doc -->
     * @generated
     */
    private EClass parameterEClass = null;
  
    /**
     * <!-- begin-user-doc -->
     * <!-- end-user-doc -->
     * @generated
     */
    private EClass taskEClass = 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.xtext.builddsl.build.BuildPackage#eNS_URI
     * @see #init()
     * @generated
     */
    private BuildPackageImpl()
    {
      super(eNS_URI, BuildFactory.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 BuildPackage#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 BuildPackage init()
    {
      if (isInited) return (BuildPackage)EPackage.Registry.INSTANCE.getEPackage(BuildPackage.eNS_URI);
  
      // Obtain or create and register package
      BuildPackageImpl theBuildPackage = (BuildPackageImpl)(EPackage.Registry.INSTANCE.get(eNS_URI) instanceof BuildPackageImpl ? EPackage.Registry.INSTANCE.get(eNS_URI) : new BuildPackageImpl());
  
      isInited = true;
  
      // Initialize simple dependencies
      XbasePackage.eINSTANCE.eClass();
      XtypePackage.eINSTANCE.eClass();
  
      // Create package meta-data objects
      theBuildPackage.createPackageContents();
  
      // Initialize created meta-data
      theBuildPackage.initializePackageContents();
  
      // Mark meta-data to indicate it can't be changed
      theBuildPackage.freeze();
  
    
      // Update the registry and return the package
      EPackage.Registry.INSTANCE.put(BuildPackage.eNS_URI, theBuildPackage);
      return theBuildPackage;
    }
  
    /**
     * <!-- begin-user-doc -->
     * <!-- end-user-doc -->
     * @generated
     */
    public EClass getBuildFile()
    {
      return buildFileEClass;
    }
  
    /**
     * <!-- begin-user-doc -->
     * <!-- end-user-doc -->
     * @generated
     */
    public EAttribute getBuildFile_Name()
    {
      return (EAttribute)buildFileEClass.getEStructuralFeatures().get(0);
    }
  
    /**
     * <!-- begin-user-doc -->
     * <!-- end-user-doc -->
     * @generated
     */
    public EReference getBuildFile_ImportSection()
    {
      return (EReference)buildFileEClass.getEStructuralFeatures().get(1);
    }
  
    /**
     * <!-- begin-user-doc -->
     * <!-- end-user-doc -->
     * @generated
     */
    public EReference getBuildFile_Declarations()
    {
      return (EReference)buildFileEClass.getEStructuralFeatures().get(2);
    }
  
    /**
     * <!-- begin-user-doc -->
     * <!-- end-user-doc -->
     * @generated
     */
    public EClass getDeclaration()
    {
      return declarationEClass;
    }
  
    /**
     * <!-- begin-user-doc -->
     * <!-- end-user-doc -->
     * @generated
     */
    public EAttribute getDeclaration_Name()
    {
      return (EAttribute)declarationEClass.getEStructuralFeatures().get(0);
    }
  
    /**
     * <!-- begin-user-doc -->
     * <!-- end-user-doc -->
     * @generated
     */
    public EClass getParameter()
    {
      return parameterEClass;
    }
  
    /**
     * <!-- begin-user-doc -->
     * <!-- end-user-doc -->
     * @generated
     */
    public EReference getParameter_Type()
    {
      return (EReference)parameterEClass.getEStructuralFeatures().get(0);
    }
  
    /**
     * <!-- begin-user-doc -->
     * <!-- end-user-doc -->
     * @generated
     */
    public EReference getParameter_Init()
    {
      return (EReference)parameterEClass.getEStructuralFeatures().get(1);
    }
  
    /**
     * <!-- begin-user-doc -->
     * <!-- end-user-doc -->
     * @generated
     */
    public EClass getTask()
    {
      return taskEClass;
    }
  
    /**
     * <!-- begin-user-doc -->
     * <!-- end-user-doc -->
     * @generated
     */
    public EReference getTask_Depends()
    {
      return (EReference)taskEClass.getEStructuralFeatures().get(0);
    }
  
    /**
     * <!-- begin-user-doc -->
     * <!-- end-user-doc -->
     * @generated
     */
    public EReference getTask_Action()
    {
      return (EReference)taskEClass.getEStructuralFeatures().get(1);
    }
  
    /**
     * <!-- begin-user-doc -->
     * <!-- end-user-doc -->
     * @generated
     */
    public BuildFactory getBuildFactory()
    {
      return (BuildFactory)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
      buildFileEClass = createEClass(BUILD_FILE);
      createEAttribute(buildFileEClass, BUILD_FILE__NAME);
      createEReference(buildFileEClass, BUILD_FILE__IMPORT_SECTION);
      createEReference(buildFileEClass, BUILD_FILE__DECLARATIONS);
  
      declarationEClass = createEClass(DECLARATION);
      createEAttribute(declarationEClass, DECLARATION__NAME);
  
      parameterEClass = createEClass(PARAMETER);
      createEReference(parameterEClass, PARAMETER__TYPE);
      createEReference(parameterEClass, PARAMETER__INIT);
  
      taskEClass = createEClass(TASK);
      createEReference(taskEClass, TASK__DEPENDS);
      createEReference(taskEClass, TASK__ACTION);
    }
  
    /**
     * <!-- 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()
    {
  