/**
   * 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 BasicPackageImpl#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 BasicPackageImpl init() {
    if (isInited)
      return (BasicPackageImpl) EPackage.Registry.INSTANCE.getEPackage(BasicPackageImpl.eNS_URI);

    // Obtain or create and register package
    BasicPackageImpl theBasicPackage =
        (BasicPackageImpl)
            (EPackage.Registry.INSTANCE.get(eNS_URI) instanceof BasicPackageImpl
                ? EPackage.Registry.INSTANCE.get(eNS_URI)
                : new BasicPackageImpl());

    isInited = true;

    // Obtain or create and register interdependencies
    ApplicationPackageImpl theApplicationPackage =
        (ApplicationPackageImpl)
            (EPackage.Registry.INSTANCE.getEPackage(ApplicationPackageImpl.eNS_URI)
                    instanceof ApplicationPackageImpl
                ? EPackage.Registry.INSTANCE.getEPackage(ApplicationPackageImpl.eNS_URI)
                : ApplicationPackageImpl.eINSTANCE);
    CommandsPackageImpl theCommandsPackage =
        (CommandsPackageImpl)
            (EPackage.Registry.INSTANCE.getEPackage(CommandsPackageImpl.eNS_URI)
                    instanceof CommandsPackageImpl
                ? EPackage.Registry.INSTANCE.getEPackage(CommandsPackageImpl.eNS_URI)
                : CommandsPackageImpl.eINSTANCE);
    UiPackageImpl theUiPackage =
        (UiPackageImpl)
            (EPackage.Registry.INSTANCE.getEPackage(UiPackageImpl.eNS_URI) instanceof UiPackageImpl
                ? EPackage.Registry.INSTANCE.getEPackage(UiPackageImpl.eNS_URI)
                : UiPackageImpl.eINSTANCE);
    MenuPackageImpl theMenuPackage =
        (MenuPackageImpl)
            (EPackage.Registry.INSTANCE.getEPackage(MenuPackageImpl.eNS_URI)
                    instanceof MenuPackageImpl
                ? EPackage.Registry.INSTANCE.getEPackage(MenuPackageImpl.eNS_URI)
                : MenuPackageImpl.eINSTANCE);
    org.eclipse.e4.ui.model.application.ui.basic.impl.BasicPackageImpl theBasicPackage_1 =
        (org.eclipse.e4.ui.model.application.ui.basic.impl.BasicPackageImpl)
            (EPackage.Registry.INSTANCE.getEPackage(
                        org.eclipse.e4.ui.model.application.ui.basic.impl.BasicPackageImpl.eNS_URI)
                    instanceof org.eclipse.e4.ui.model.application.ui.basic.impl.BasicPackageImpl
                ? EPackage.Registry.INSTANCE.getEPackage(
                    org.eclipse.e4.ui.model.application.ui.basic.impl.BasicPackageImpl.eNS_URI)
                : org.eclipse.e4.ui.model.application.ui.basic.impl.BasicPackageImpl.eINSTANCE);
    AdvancedPackageImpl theAdvancedPackage =
        (AdvancedPackageImpl)
            (EPackage.Registry.INSTANCE.getEPackage(AdvancedPackageImpl.eNS_URI)
                    instanceof AdvancedPackageImpl
                ? EPackage.Registry.INSTANCE.getEPackage(AdvancedPackageImpl.eNS_URI)
                : AdvancedPackageImpl.eINSTANCE);

    // Create package meta-data objects
    theBasicPackage.createPackageContents();
    theApplicationPackage.createPackageContents();
    theCommandsPackage.createPackageContents();
    theUiPackage.createPackageContents();
    theMenuPackage.createPackageContents();
    theBasicPackage_1.createPackageContents();
    theAdvancedPackage.createPackageContents();

    // Initialize created meta-data
    theBasicPackage.initializePackageContents();
    theApplicationPackage.initializePackageContents();
    theCommandsPackage.initializePackageContents();
    theUiPackage.initializePackageContents();
    theMenuPackage.initializePackageContents();
    theBasicPackage_1.initializePackageContents();
    theAdvancedPackage.initializePackageContents();

    // Mark meta-data to indicate it can't be changed
    theBasicPackage.freeze();

    // Update the registry and return the package
    EPackage.Registry.INSTANCE.put(BasicPackageImpl.eNS_URI, theBasicPackage);
    return theBasicPackage;
  }