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

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

    isInited = true;

    // Obtain or create and register interdependencies
    HotelPackageImpl theHotelPackage =
        (HotelPackageImpl)
            (EPackage.Registry.INSTANCE.getEPackage(HotelPackageImpl.eNS_URI)
                    instanceof HotelPackageImpl
                ? EPackage.Registry.INSTANCE.getEPackage(HotelPackageImpl.eNS_URI)
                : HotelPackageImpl.eINSTANCE);
    FacilitiesPackageImpl theFacilitiesPackage =
        (FacilitiesPackageImpl)
            (EPackage.Registry.INSTANCE.getEPackage(FacilitiesPackageImpl.eNS_URI)
                    instanceof FacilitiesPackageImpl
                ? EPackage.Registry.INSTANCE.getEPackage(FacilitiesPackageImpl.eNS_URI)
                : FacilitiesPackageImpl.eINSTANCE);
    ServicesPackageImpl theServicesPackage =
        (ServicesPackageImpl)
            (EPackage.Registry.INSTANCE.getEPackage(ServicesPackageImpl.eNS_URI)
                    instanceof ServicesPackageImpl
                ? EPackage.Registry.INSTANCE.getEPackage(ServicesPackageImpl.eNS_URI)
                : ServicesPackageImpl.eINSTANCE);
    PaymentPackageImpl thePaymentPackage =
        (PaymentPackageImpl)
            (EPackage.Registry.INSTANCE.getEPackage(PaymentPackageImpl.eNS_URI)
                    instanceof PaymentPackageImpl
                ? EPackage.Registry.INSTANCE.getEPackage(PaymentPackageImpl.eNS_URI)
                : PaymentPackageImpl.eINSTANCE);
    IdentitiesPackageImpl theIdentitiesPackage =
        (IdentitiesPackageImpl)
            (EPackage.Registry.INSTANCE.getEPackage(IdentitiesPackageImpl.eNS_URI)
                    instanceof IdentitiesPackageImpl
                ? EPackage.Registry.INSTANCE.getEPackage(IdentitiesPackageImpl.eNS_URI)
                : IdentitiesPackageImpl.eINSTANCE);
    OrderingPackageImpl theOrderingPackage =
        (OrderingPackageImpl)
            (EPackage.Registry.INSTANCE.getEPackage(OrderingPackageImpl.eNS_URI)
                    instanceof OrderingPackageImpl
                ? EPackage.Registry.INSTANCE.getEPackage(OrderingPackageImpl.eNS_URI)
                : OrderingPackageImpl.eINSTANCE);
    PersonnelPackageImpl thePersonnelPackage =
        (PersonnelPackageImpl)
            (EPackage.Registry.INSTANCE.getEPackage(PersonnelPackageImpl.eNS_URI)
                    instanceof PersonnelPackageImpl
                ? EPackage.Registry.INSTANCE.getEPackage(PersonnelPackageImpl.eNS_URI)
                : PersonnelPackageImpl.eINSTANCE);
    SchedulePackageImpl theSchedulePackage =
        (SchedulePackageImpl)
            (EPackage.Registry.INSTANCE.getEPackage(SchedulePackageImpl.eNS_URI)
                    instanceof SchedulePackageImpl
                ? EPackage.Registry.INSTANCE.getEPackage(SchedulePackageImpl.eNS_URI)
                : SchedulePackageImpl.eINSTANCE);
    LogPackageImpl theLogPackage =
        (LogPackageImpl)
            (EPackage.Registry.INSTANCE.getEPackage(LogPackageImpl.eNS_URI)
                    instanceof LogPackageImpl
                ? EPackage.Registry.INSTANCE.getEPackage(LogPackageImpl.eNS_URI)
                : LogPackageImpl.eINSTANCE);
    BlacklistPackageImpl theBlacklistPackage =
        (BlacklistPackageImpl)
            (EPackage.Registry.INSTANCE.getEPackage(BlacklistPackageImpl.eNS_URI)
                    instanceof BlacklistPackageImpl
                ? EPackage.Registry.INSTANCE.getEPackage(BlacklistPackageImpl.eNS_URI)
                : BlacklistPackageImpl.eINSTANCE);
    InventoryPackageImpl theInventoryPackage =
        (InventoryPackageImpl)
            (EPackage.Registry.INSTANCE.getEPackage(InventoryPackageImpl.eNS_URI)
                    instanceof InventoryPackageImpl
                ? EPackage.Registry.INSTANCE.getEPackage(InventoryPackageImpl.eNS_URI)
                : InventoryPackageImpl.eINSTANCE);
    SearchPackageImpl theSearchPackage =
        (SearchPackageImpl)
            (EPackage.Registry.INSTANCE.getEPackage(SearchPackageImpl.eNS_URI)
                    instanceof SearchPackageImpl
                ? EPackage.Registry.INSTANCE.getEPackage(SearchPackageImpl.eNS_URI)
                : SearchPackageImpl.eINSTANCE);

    // Create package meta-data objects
    theClientsPackage.createPackageContents();
    theHotelPackage.createPackageContents();
    theFacilitiesPackage.createPackageContents();
    theServicesPackage.createPackageContents();
    thePaymentPackage.createPackageContents();
    theIdentitiesPackage.createPackageContents();
    theOrderingPackage.createPackageContents();
    thePersonnelPackage.createPackageContents();
    theSchedulePackage.createPackageContents();
    theLogPackage.createPackageContents();
    theBlacklistPackage.createPackageContents();
    theInventoryPackage.createPackageContents();
    theSearchPackage.createPackageContents();

    // Initialize created meta-data
    theClientsPackage.initializePackageContents();
    theHotelPackage.initializePackageContents();
    theFacilitiesPackage.initializePackageContents();
    theServicesPackage.initializePackageContents();
    thePaymentPackage.initializePackageContents();
    theIdentitiesPackage.initializePackageContents();
    theOrderingPackage.initializePackageContents();
    thePersonnelPackage.initializePackageContents();
    theSchedulePackage.initializePackageContents();
    theLogPackage.initializePackageContents();
    theBlacklistPackage.initializePackageContents();
    theInventoryPackage.initializePackageContents();
    theSearchPackage.initializePackageContents();

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

    // Update the registry and return the package
    EPackage.Registry.INSTANCE.put(ClientsPackageImpl.eNS_URI, theClientsPackage);
    return theClientsPackage;
  }
/**
 *
 * <!-- begin-user-doc -->
 * The <b>Package</b> for the model. It contains accessors for the meta objects to represent
 *
 * <ul>
 *   <li>each class,
 *   <li>each feature of each class,
 *   <li>each enum,
 *   <li>and each data type
 * </ul>
 *
 * <!-- end-user-doc -->
 *
 * @see sechalmersmdsdgroup5.hotel.clients.ClientsFactory
 * @model kind="package"
 * @generated
 */
public class ClientsPackageImpl extends EPackageImpl {
  /**
   * The package name.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   *
   * @generated
   */
  public static final String eNAME = "clients";

  /**
   * The package namespace URI.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   *
   * @generated
   */
  public static final String eNS_URI = "http:///sechalmersmdsdgroup5/hotel/clients.ecore";

  /**
   * The package namespace name.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   *
   * @generated
   */
  public static final String eNS_PREFIX = "sechalmersmdsdgroup5.hotel.clients";

  /**
   * The singleton instance of the package.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   *
   * @generated
   */
  public static final ClientsPackageImpl eINSTANCE =
      sechalmersmdsdgroup5.hotel.clients.impl.ClientsPackageImpl.init();

  /**
   * The meta object id for the '{@link sechalmersmdsdgroup5.hotel.clients.Client <em>Client</em>}'
   * class.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   *
   * @see sechalmersmdsdgroup5.hotel.clients.Client
   * @see sechalmersmdsdgroup5.hotel.clients.impl.ClientsPackageImpl#getClient()
   * @generated
   */
  public static final int CLIENT = 4;

  /**
   * The meta object id for the '{@link sechalmersmdsdgroup5.hotel.clients.impl.CustomerImpl
   * <em>Customer</em>}' class.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   *
   * @see sechalmersmdsdgroup5.hotel.clients.impl.CustomerImpl
   * @see sechalmersmdsdgroup5.hotel.clients.impl.ClientsPackageImpl#getCustomer()
   * @generated
   */
  public static final int CUSTOMER = 1;

  /**
   * The meta object id for the '{@link sechalmersmdsdgroup5.hotel.clients.impl.AddressImpl
   * <em>Address</em>}' class.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   *
   * @see sechalmersmdsdgroup5.hotel.clients.impl.AddressImpl
   * @see sechalmersmdsdgroup5.hotel.clients.impl.ClientsPackageImpl#getAddress()
   * @generated
   */
  public static final int ADDRESS = 2;

  /**
   * The meta object id for the '{@link sechalmersmdsdgroup5.hotel.clients.impl.GuestImpl
   * <em>Guest</em>}' class.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   *
   * @see sechalmersmdsdgroup5.hotel.clients.impl.GuestImpl
   * @see sechalmersmdsdgroup5.hotel.clients.impl.ClientsPackageImpl#getGuest()
   * @generated
   */
  public static final int GUEST = 0;

  /**
   * The feature id for the '<em><b>Name</b></em>' attribute.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   *
   * @generated
   * @ordered
   */
  public static final int GUEST__NAME = IdentitiesPackageImpl.REAL_PERSON__NAME;

  /**
   * The feature id for the '<em><b>Id Number</b></em>' attribute.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   *
   * @generated
   * @ordered
   */
  public static final int GUEST__ID_NUMBER = IdentitiesPackageImpl.REAL_PERSON__ID_NUMBER;

  /**
   * The feature id for the '<em><b>Age</b></em>' attribute.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   *
   * @generated
   * @ordered
   */
  public static final int GUEST__AGE = IdentitiesPackageImpl.REAL_PERSON__AGE;

  /**
   * The feature id for the '<em><b>Citizenship</b></em>' attribute.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   *
   * @generated
   * @ordered
   */
  public static final int GUEST__CITIZENSHIP = IdentitiesPackageImpl.REAL_PERSON__CITIZENSHIP;

  /**
   * The feature id for the '<em><b>Invoices</b></em>' reference list.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   *
   * @generated
   * @ordered
   */
  public static final int GUEST__INVOICES = IdentitiesPackageImpl.REAL_PERSON_FEATURE_COUNT + 0;

  /**
   * The feature id for the '<em><b>Key</b></em>' reference.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   *
   * @generated
   * @ordered
   */
  public static final int GUEST__KEY = IdentitiesPackageImpl.REAL_PERSON_FEATURE_COUNT + 1;

  /**
   * The number of structural features of the '<em>Guest</em>' class.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   *
   * @generated
   * @ordered
   */
  public static final int GUEST_FEATURE_COUNT = IdentitiesPackageImpl.REAL_PERSON_FEATURE_COUNT + 2;

  /**
   * The feature id for the '<em><b>Invoices</b></em>' reference list.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   *
   * @generated
   * @ordered
   */
  public static final int CLIENT__INVOICES = 0;

  /**
   * The number of structural features of the '<em>Client</em>' class.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   *
   * @generated
   * @ordered
   */
  public static final int CLIENT_FEATURE_COUNT = 1;

  /**
   * The feature id for the '<em><b>Invoices</b></em>' reference list.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   *
   * @generated
   * @ordered
   */
  public static final int CUSTOMER__INVOICES = CLIENT__INVOICES;

  /**
   * The feature id for the '<em><b>Payment Method</b></em>' attribute.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   *
   * @generated
   * @ordered
   */
  public static final int CUSTOMER__PAYMENT_METHOD = CLIENT_FEATURE_COUNT + 0;

  /**
   * The feature id for the '<em><b>Card</b></em>' reference.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   *
   * @generated
   * @ordered
   */
  public static final int CUSTOMER__CARD = CLIENT_FEATURE_COUNT + 1;

  /**
   * The feature id for the '<em><b>Associated Adress</b></em>' reference.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   *
   * @generated
   * @ordered
   */
  public static final int CUSTOMER__ASSOCIATED_ADRESS = CLIENT_FEATURE_COUNT + 2;

  /**
   * The feature id for the '<em><b>Identity</b></em>' reference.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   *
   * @generated
   * @ordered
   */
  public static final int CUSTOMER__IDENTITY = CLIENT_FEATURE_COUNT + 3;

  /**
   * The feature id for the '<em><b>Email</b></em>' attribute.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   *
   * @generated
   * @ordered
   */
  public static final int CUSTOMER__EMAIL = CLIENT_FEATURE_COUNT + 4;

  /**
   * The number of structural features of the '<em>Customer</em>' class.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   *
   * @generated
   * @ordered
   */
  public static final int CUSTOMER_FEATURE_COUNT = CLIENT_FEATURE_COUNT + 5;

  /**
   * The feature id for the '<em><b>Street</b></em>' attribute.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   *
   * @generated
   * @ordered
   */
  public static final int ADDRESS__STREET = 0;

  /**
   * The feature id for the '<em><b>Zip Code</b></em>' attribute.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   *
   * @generated
   * @ordered
   */
  public static final int ADDRESS__ZIP_CODE = 1;

  /**
   * The feature id for the '<em><b>Zip Area</b></em>' attribute.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   *
   * @generated
   * @ordered
   */
  public static final int ADDRESS__ZIP_AREA = 2;

  /**
   * The feature id for the '<em><b>Country</b></em>' attribute.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   *
   * @generated
   * @ordered
   */
  public static final int ADDRESS__COUNTRY = 3;

  /**
   * The feature id for the '<em><b>Region</b></em>' attribute.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   *
   * @generated
   * @ordered
   */
  public static final int ADDRESS__REGION = 4;

  /**
   * The feature id for the '<em><b>Municipality</b></em>' attribute.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   *
   * @generated
   * @ordered
   */
  public static final int ADDRESS__MUNICIPALITY = 5;

  /**
   * The feature id for the '<em><b>Care Of</b></em>' attribute.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   *
   * @generated
   * @ordered
   */
  public static final int ADDRESS__CARE_OF = 6;

  /**
   * The number of structural features of the '<em>Address</em>' class.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   *
   * @generated
   * @ordered
   */
  public static final int ADDRESS_FEATURE_COUNT = 7;

  /**
   * The meta object id for the '{@link sechalmersmdsdgroup5.hotel.clients.IClient
   * <em>IClient</em>}' class.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   *
   * @see sechalmersmdsdgroup5.hotel.clients.IClient
   * @see sechalmersmdsdgroup5.hotel.clients.impl.ClientsPackageImpl#getIClient()
   * @generated
   */
  public static final int ICLIENT = 3;

  /**
   * The number of structural features of the '<em>IClient</em>' class.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   *
   * @generated
   * @ordered
   */
  public static final int ICLIENT_FEATURE_COUNT = 0;

  /**
   *
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   *
   * @generated
   */
  private EClass customerEClass = null;

  /**
   *
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   *
   * @generated
   */
  private EClass addressEClass = null;

  /**
   *
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   *
   * @generated
   */
  private EClass iClientEClass = null;

  /**
   *
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   *
   * @generated
   */
  private EClass clientEClass = null;

  /**
   *
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   *
   * @generated
   */
  private EClass guestEClass = 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 sechalmersmdsdgroup5.hotel.clients.impl.ClientsPackageImpl#eNS_URI
   * @see #init()
   * @generated
   */
  private ClientsPackageImpl() {
    super(eNS_URI, ((EFactory) ClientsFactory.INSTANCE));
  }

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

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

    isInited = true;

    // Obtain or create and register interdependencies
    HotelPackageImpl theHotelPackage =
        (HotelPackageImpl)
            (EPackage.Registry.INSTANCE.getEPackage(HotelPackageImpl.eNS_URI)
                    instanceof HotelPackageImpl
                ? EPackage.Registry.INSTANCE.getEPackage(HotelPackageImpl.eNS_URI)
                : HotelPackageImpl.eINSTANCE);
    FacilitiesPackageImpl theFacilitiesPackage =
        (FacilitiesPackageImpl)
            (EPackage.Registry.INSTANCE.getEPackage(FacilitiesPackageImpl.eNS_URI)
                    instanceof FacilitiesPackageImpl
                ? EPackage.Registry.INSTANCE.getEPackage(FacilitiesPackageImpl.eNS_URI)
                : FacilitiesPackageImpl.eINSTANCE);
    ServicesPackageImpl theServicesPackage =
        (ServicesPackageImpl)
            (EPackage.Registry.INSTANCE.getEPackage(ServicesPackageImpl.eNS_URI)
                    instanceof ServicesPackageImpl
                ? EPackage.Registry.INSTANCE.getEPackage(ServicesPackageImpl.eNS_URI)
                : ServicesPackageImpl.eINSTANCE);
    PaymentPackageImpl thePaymentPackage =
        (PaymentPackageImpl)
            (EPackage.Registry.INSTANCE.getEPackage(PaymentPackageImpl.eNS_URI)
                    instanceof PaymentPackageImpl
                ? EPackage.Registry.INSTANCE.getEPackage(PaymentPackageImpl.eNS_URI)
                : PaymentPackageImpl.eINSTANCE);
    IdentitiesPackageImpl theIdentitiesPackage =
        (IdentitiesPackageImpl)
            (EPackage.Registry.INSTANCE.getEPackage(IdentitiesPackageImpl.eNS_URI)
                    instanceof IdentitiesPackageImpl
                ? EPackage.Registry.INSTANCE.getEPackage(IdentitiesPackageImpl.eNS_URI)
                : IdentitiesPackageImpl.eINSTANCE);
    OrderingPackageImpl theOrderingPackage =
        (OrderingPackageImpl)
            (EPackage.Registry.INSTANCE.getEPackage(OrderingPackageImpl.eNS_URI)
                    instanceof OrderingPackageImpl
                ? EPackage.Registry.INSTANCE.getEPackage(OrderingPackageImpl.eNS_URI)
                : OrderingPackageImpl.eINSTANCE);
    PersonnelPackageImpl thePersonnelPackage =
        (PersonnelPackageImpl)
            (EPackage.Registry.INSTANCE.getEPackage(PersonnelPackageImpl.eNS_URI)
                    instanceof PersonnelPackageImpl
                ? EPackage.Registry.INSTANCE.getEPackage(PersonnelPackageImpl.eNS_URI)
                : PersonnelPackageImpl.eINSTANCE);
    SchedulePackageImpl theSchedulePackage =
        (SchedulePackageImpl)
            (EPackage.Registry.INSTANCE.getEPackage(SchedulePackageImpl.eNS_URI)
                    instanceof SchedulePackageImpl
                ? EPackage.Registry.INSTANCE.getEPackage(SchedulePackageImpl.eNS_URI)
                : SchedulePackageImpl.eINSTANCE);
    LogPackageImpl theLogPackage =
        (LogPackageImpl)
            (EPackage.Registry.INSTANCE.getEPackage(LogPackageImpl.eNS_URI)
                    instanceof LogPackageImpl
                ? EPackage.Registry.INSTANCE.getEPackage(LogPackageImpl.eNS_URI)
                : LogPackageImpl.eINSTANCE);
    BlacklistPackageImpl theBlacklistPackage =
        (BlacklistPackageImpl)
            (EPackage.Registry.INSTANCE.getEPackage(BlacklistPackageImpl.eNS_URI)
                    instanceof BlacklistPackageImpl
                ? EPackage.Registry.INSTANCE.getEPackage(BlacklistPackageImpl.eNS_URI)
                : BlacklistPackageImpl.eINSTANCE);
    InventoryPackageImpl theInventoryPackage =
        (InventoryPackageImpl)
            (EPackage.Registry.INSTANCE.getEPackage(InventoryPackageImpl.eNS_URI)
                    instanceof InventoryPackageImpl
                ? EPackage.Registry.INSTANCE.getEPackage(InventoryPackageImpl.eNS_URI)
                : InventoryPackageImpl.eINSTANCE);
    SearchPackageImpl theSearchPackage =
        (SearchPackageImpl)
            (EPackage.Registry.INSTANCE.getEPackage(SearchPackageImpl.eNS_URI)
                    instanceof SearchPackageImpl
                ? EPackage.Registry.INSTANCE.getEPackage(SearchPackageImpl.eNS_URI)
                : SearchPackageImpl.eINSTANCE);

    // Create package meta-data objects
    theClientsPackage.createPackageContents();
    theHotelPackage.createPackageContents();
    theFacilitiesPackage.createPackageContents();
    theServicesPackage.createPackageContents();
    thePaymentPackage.createPackageContents();
    theIdentitiesPackage.createPackageContents();
    theOrderingPackage.createPackageContents();
    thePersonnelPackage.createPackageContents();
    theSchedulePackage.createPackageContents();
    theLogPackage.createPackageContents();
    theBlacklistPackage.createPackageContents();
    theInventoryPackage.createPackageContents();
    theSearchPackage.createPackageContents();

    // Initialize created meta-data
    theClientsPackage.initializePackageContents();
    theHotelPackage.initializePackageContents();
    theFacilitiesPackage.initializePackageContents();
    theServicesPackage.initializePackageContents();
    thePaymentPackage.initializePackageContents();
    theIdentitiesPackage.initializePackageContents();
    theOrderingPackage.initializePackageContents();
    thePersonnelPackage.initializePackageContents();
    theSchedulePackage.initializePackageContents();
    theLogPackage.initializePackageContents();
    theBlacklistPackage.initializePackageContents();
    theInventoryPackage.initializePackageContents();
    theSearchPackage.initializePackageContents();

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

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

  /**
   * Returns the meta object for class '{@link sechalmersmdsdgroup5.hotel.clients.Customer
   * <em>Customer</em>}'.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   *
   * @return the meta object for class '<em>Customer</em>'.
   * @see sechalmersmdsdgroup5.hotel.clients.Customer
   * @generated
   */
  public EClass getCustomer() {
    return customerEClass;
  }

  /**
   * Returns the meta object for the attribute '{@link
   * sechalmersmdsdgroup5.hotel.clients.Customer#getPaymentMethod <em>Payment Method</em>}'.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   *
   * @return the meta object for the attribute '<em>Payment Method</em>'.
   * @see sechalmersmdsdgroup5.hotel.clients.Customer#getPaymentMethod()
   * @see #getCustomer()
   * @generated
   */
  public EAttribute getCustomer_PaymentMethod() {
    return (EAttribute) customerEClass.getEStructuralFeatures().get(0);
  }

  /**
   * Returns the meta object for the reference '{@link
   * sechalmersmdsdgroup5.hotel.clients.Customer#getCard <em>Card</em>}'.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   *
   * @return the meta object for the reference '<em>Card</em>'.
   * @see sechalmersmdsdgroup5.hotel.clients.Customer#getCard()
   * @see #getCustomer()
   * @generated
   */
  public EReference getCustomer_Card() {
    return (EReference) customerEClass.getEStructuralFeatures().get(1);
  }

  /**
   * Returns the meta object for the reference '{@link
   * sechalmersmdsdgroup5.hotel.clients.Customer#getAssociatedAdress <em>Associated Adress</em>}'.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   *
   * @return the meta object for the reference '<em>Associated Adress</em>'.
   * @see sechalmersmdsdgroup5.hotel.clients.Customer#getAssociatedAdress()
   * @see #getCustomer()
   * @generated
   */
  public EReference getCustomer_AssociatedAdress() {
    return (EReference) customerEClass.getEStructuralFeatures().get(2);
  }

  /**
   * Returns the meta object for the reference '{@link
   * sechalmersmdsdgroup5.hotel.clients.Customer#getIdentity <em>Identity</em>}'.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   *
   * @return the meta object for the reference '<em>Identity</em>'.
   * @see sechalmersmdsdgroup5.hotel.clients.Customer#getIdentity()
   * @see #getCustomer()
   * @generated
   */
  public EReference getCustomer_Identity() {
    return (EReference) customerEClass.getEStructuralFeatures().get(3);
  }

  /**
   * Returns the meta object for the attribute '{@link
   * sechalmersmdsdgroup5.hotel.clients.Customer#getEmail <em>Email</em>}'.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   *
   * @return the meta object for the attribute '<em>Email</em>'.
   * @see sechalmersmdsdgroup5.hotel.clients.Customer#getEmail()
   * @see #getCustomer()
   * @generated
   */
  public EAttribute getCustomer_Email() {
    return (EAttribute) customerEClass.getEStructuralFeatures().get(4);
  }

  /**
   * Returns the meta object for class '{@link sechalmersmdsdgroup5.hotel.clients.Address
   * <em>Address</em>}'.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   *
   * @return the meta object for class '<em>Address</em>'.
   * @see sechalmersmdsdgroup5.hotel.clients.Address
   * @generated
   */
  public EClass getAddress() {
    return addressEClass;
  }

  /**
   * Returns the meta object for the attribute '{@link
   * sechalmersmdsdgroup5.hotel.clients.Address#getStreet <em>Street</em>}'.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   *
   * @return the meta object for the attribute '<em>Street</em>'.
   * @see sechalmersmdsdgroup5.hotel.clients.Address#getStreet()
   * @see #getAddress()
   * @generated
   */
  public EAttribute getAddress_Street() {
    return (EAttribute) addressEClass.getEStructuralFeatures().get(0);
  }

  /**
   * Returns the meta object for the attribute '{@link
   * sechalmersmdsdgroup5.hotel.clients.Address#getZipCode <em>Zip Code</em>}'.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   *
   * @return the meta object for the attribute '<em>Zip Code</em>'.
   * @see sechalmersmdsdgroup5.hotel.clients.Address#getZipCode()
   * @see #getAddress()
   * @generated
   */
  public EAttribute getAddress_ZipCode() {
    return (EAttribute) addressEClass.getEStructuralFeatures().get(1);
  }

  /**
   * Returns the meta object for the attribute '{@link
   * sechalmersmdsdgroup5.hotel.clients.Address#getZipArea <em>Zip Area</em>}'.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   *
   * @return the meta object for the attribute '<em>Zip Area</em>'.
   * @see sechalmersmdsdgroup5.hotel.clients.Address#getZipArea()
   * @see #getAddress()
   * @generated
   */
  public EAttribute getAddress_ZipArea() {
    return (EAttribute) addressEClass.getEStructuralFeatures().get(2);
  }

  /**
   * Returns the meta object for the attribute '{@link
   * sechalmersmdsdgroup5.hotel.clients.Address#getCountry <em>Country</em>}'.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   *
   * @return the meta object for the attribute '<em>Country</em>'.
   * @see sechalmersmdsdgroup5.hotel.clients.Address#getCountry()
   * @see #getAddress()
   * @generated
   */
  public EAttribute getAddress_Country() {
    return (EAttribute) addressEClass.getEStructuralFeatures().get(3);
  }

  /**
   * Returns the meta object for the attribute '{@link
   * sechalmersmdsdgroup5.hotel.clients.Address#getRegion <em>Region</em>}'.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   *
   * @return the meta object for the attribute '<em>Region</em>'.
   * @see sechalmersmdsdgroup5.hotel.clients.Address#getRegion()
   * @see #getAddress()
   * @generated
   */
  public EAttribute getAddress_Region() {
    return (EAttribute) addressEClass.getEStructuralFeatures().get(4);
  }

  /**
   * Returns the meta object for the attribute '{@link
   * sechalmersmdsdgroup5.hotel.clients.Address#getMunicipality <em>Municipality</em>}'.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   *
   * @return the meta object for the attribute '<em>Municipality</em>'.
   * @see sechalmersmdsdgroup5.hotel.clients.Address#getMunicipality()
   * @see #getAddress()
   * @generated
   */
  public EAttribute getAddress_Municipality() {
    return (EAttribute) addressEClass.getEStructuralFeatures().get(5);
  }

  /**
   * Returns the meta object for the attribute '{@link
   * sechalmersmdsdgroup5.hotel.clients.Address#getCareOf <em>Care Of</em>}'.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   *
   * @return the meta object for the attribute '<em>Care Of</em>'.
   * @see sechalmersmdsdgroup5.hotel.clients.Address#getCareOf()
   * @see #getAddress()
   * @generated
   */
  public EAttribute getAddress_CareOf() {
    return (EAttribute) addressEClass.getEStructuralFeatures().get(6);
  }

  /**
   * Returns the meta object for class '{@link sechalmersmdsdgroup5.hotel.clients.IClient
   * <em>IClient</em>}'.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   *
   * @return the meta object for class '<em>IClient</em>'.
   * @see sechalmersmdsdgroup5.hotel.clients.IClient
   * @generated
   */
  public EClass getIClient() {
    return iClientEClass;
  }

  /**
   * Returns the meta object for class '{@link sechalmersmdsdgroup5.hotel.clients.Client
   * <em>Client</em>}'.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   *
   * @return the meta object for class '<em>Client</em>'.
   * @see sechalmersmdsdgroup5.hotel.clients.Client
   * @generated
   */
  public EClass getClient() {
    return clientEClass;
  }

  /**
   * Returns the meta object for the reference list '{@link
   * sechalmersmdsdgroup5.hotel.clients.Client#getInvoices <em>Invoices</em>}'.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   *
   * @return the meta object for the reference list '<em>Invoices</em>'.
   * @see sechalmersmdsdgroup5.hotel.clients.Client#getInvoices()
   * @see #getClient()
   * @generated
   */
  public EReference getClient_Invoices() {
    return (EReference) clientEClass.getEStructuralFeatures().get(0);
  }

  /**
   * Returns the meta object for class '{@link sechalmersmdsdgroup5.hotel.clients.Guest
   * <em>Guest</em>}'.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   *
   * @return the meta object for class '<em>Guest</em>'.
   * @see sechalmersmdsdgroup5.hotel.clients.Guest
   * @generated
   */
  public EClass getGuest() {
    return guestEClass;
  }

  /**
   * Returns the meta object for the reference '{@link
   * sechalmersmdsdgroup5.hotel.clients.Guest#getKey <em>Key</em>}'.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   *
   * @return the meta object for the reference '<em>Key</em>'.
   * @see sechalmersmdsdgroup5.hotel.clients.Guest#getKey()
   * @see #getGuest()
   * @generated
   */
  public EReference getGuest_Key() {
    return (EReference) guestEClass.getEStructuralFeatures().get(0);
  }

  /**
   * Returns the factory that creates the instances of the model.
   * <!-- begin-user-doc -->
   * <!-- end-user-doc -->
   *
   * @return the factory that creates the instances of the model.
   * @generated
   */
  public ClientsFactory getClientsFactory() {
    return (ClientsFactory) 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
    guestEClass = createEClass(GUEST);
    createEReference(guestEClass, GUEST__KEY);

    customerEClass = createEClass(CUSTOMER);
    createEAttribute(customerEClass, CUSTOMER__PAYMENT_METHOD);
    createEReference(customerEClass, CUSTOMER__CARD);
    createEReference(customerEClass, CUSTOMER__ASSOCIATED_ADRESS);
    createEReference(customerEClass, CUSTOMER__IDENTITY);
    createEAttribute(customerEClass, CUSTOMER__EMAIL);

    addressEClass = createEClass(ADDRESS);
    createEAttribute(addressEClass, ADDRESS__STREET);
    createEAttribute(addressEClass, ADDRESS__ZIP_CODE);
    createEAttribute(addressEClass, ADDRESS__ZIP_AREA);
    createEAttribute(addressEClass, ADDRESS__COUNTRY);
    createEAttribute(addressEClass, ADDRESS__REGION);
    createEAttribute(addressEClass, ADDRESS__MUNICIPALITY);
    createEAttribute(addressEClass, ADDRESS__CARE_OF);

    iClientEClass = createEClass(ICLIENT);

    clientEClass = createEClass(CLIENT);
    createEReference(clientEClass, CLIENT__INVOICES);
  }

  /**
   *
   * <!-- 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
    IdentitiesPackageImpl theIdentitiesPackage =
        (IdentitiesPackageImpl)
            EPackage.Registry.INSTANCE.getEPackage(IdentitiesPackageImpl.eNS_URI);
    ServicesPackageImpl theServicesPackage =
        (ServicesPackageImpl) EPackage.Registry.INSTANCE.getEPackage(ServicesPackageImpl.eNS_URI);
    FacilitiesPackageImpl theFacilitiesPackage =
        (FacilitiesPackageImpl)
            EPackage.Registry.INSTANCE.getEPackage(FacilitiesPackageImpl.eNS_URI);
    PaymentPackageImpl thePaymentPackage =
        (PaymentPackageImpl) EPackage.Registry.INSTANCE.getEPackage(PaymentPackageImpl.eNS_URI);
    OrderingPackageImpl theOrderingPackage =
        (OrderingPackageImpl) EPackage.Registry.INSTANCE.getEPackage(OrderingPackageImpl.eNS_URI);

    // Create type parameters

    // Set bounds for type parameters

    // Add supertypes to classes
    guestEClass.getESuperTypes().add(theIdentitiesPackage.getRealPerson());
    guestEClass.getESuperTypes().add(this.getClient());
    guestEClass.getESuperTypes().add(theServicesPackage.getServiceConsumer());
    customerEClass.getESuperTypes().add(this.getClient());

    // Initialize classes and features; add operations and parameters
    initEClass(
        guestEClass,
        Guest.class,
        "Guest",
        !IS_ABSTRACT,
        !IS_INTERFACE,
        IS_GENERATED_INSTANCE_CLASS);
    initEReference(
        getGuest_Key(),
        theFacilitiesPackage.getKey(),
        null,
        "key",
        null,
        1,
        1,
        Guest.class,
        !IS_TRANSIENT,
        !IS_VOLATILE,
        IS_CHANGEABLE,
        !IS_COMPOSITE,
        IS_RESOLVE_PROXIES,
        !IS_UNSETTABLE,
        IS_UNIQUE,
        !IS_DERIVED,
        !IS_ORDERED);

    initEClass(
        customerEClass,
        Customer.class,
        "Customer",
        !IS_ABSTRACT,
        !IS_INTERFACE,
        IS_GENERATED_INSTANCE_CLASS);
    initEAttribute(
        getCustomer_PaymentMethod(),
        thePaymentPackage.getPaymentMethod(),
        "paymentMethod",
        null,
        1,
        1,
        Customer.class,
        !IS_TRANSIENT,
        !IS_VOLATILE,
        IS_CHANGEABLE,
        !IS_UNSETTABLE,
        !IS_ID,
        IS_UNIQUE,
        !IS_DERIVED,
        !IS_ORDERED);
    initEReference(
        getCustomer_Card(),
        thePaymentPackage.getCreditCard(),
        null,
        "card",
        null,
        1,
        1,
        Customer.class,
        !IS_TRANSIENT,
        !IS_VOLATILE,
        IS_CHANGEABLE,
        !IS_COMPOSITE,
        IS_RESOLVE_PROXIES,
        !IS_UNSETTABLE,
        IS_UNIQUE,
        !IS_DERIVED,
        !IS_ORDERED);
    initEReference(
        getCustomer_AssociatedAdress(),
        this.getAddress(),
        null,
        "associatedAdress",
        null,
        1,
        1,
        Customer.class,
        !IS_TRANSIENT,
        !IS_VOLATILE,
        IS_CHANGEABLE,
        !IS_COMPOSITE,
        IS_RESOLVE_PROXIES,
        !IS_UNSETTABLE,
        IS_UNIQUE,
        !IS_DERIVED,
        !IS_ORDERED);
    initEReference(
        getCustomer_Identity(),
        theIdentitiesPackage.getIdentity(),
        null,
        "identity",
        null,
        1,
        1,
        Customer.class,
        !IS_TRANSIENT,
        !IS_VOLATILE,
        IS_CHANGEABLE,
        !IS_COMPOSITE,
        IS_RESOLVE_PROXIES,
        !IS_UNSETTABLE,
        IS_UNIQUE,
        !IS_DERIVED,
        !IS_ORDERED);
    initEAttribute(
        getCustomer_Email(),
        ecorePackage.getEString(),
        "email",
        null,
        1,
        1,
        Customer.class,
        !IS_TRANSIENT,
        !IS_VOLATILE,
        IS_CHANGEABLE,
        !IS_UNSETTABLE,
        !IS_ID,
        IS_UNIQUE,
        !IS_DERIVED,
        !IS_ORDERED);

    initEClass(
        addressEClass,
        Address.class,
        "Address",
        !IS_ABSTRACT,
        !IS_INTERFACE,
        IS_GENERATED_INSTANCE_CLASS);
    initEAttribute(
        getAddress_Street(),
        ecorePackage.getEString(),
        "street",
        null,
        1,
        1,
        Address.class,
        !IS_TRANSIENT,
        !IS_VOLATILE,
        IS_CHANGEABLE,
        !IS_UNSETTABLE,
        !IS_ID,
        IS_UNIQUE,
        !IS_DERIVED,
        !IS_ORDERED);
    initEAttribute(
        getAddress_ZipCode(),
        ecorePackage.getEInt(),
        "zipCode",
        null,
        1,
        1,
        Address.class,
        !IS_TRANSIENT,
        !IS_VOLATILE,
        IS_CHANGEABLE,
        !IS_UNSETTABLE,
        !IS_ID,
        IS_UNIQUE,
        !IS_DERIVED,
        !IS_ORDERED);
    initEAttribute(
        getAddress_ZipArea(),
        ecorePackage.getEString(),
        "zipArea",
        null,
        1,
        1,
        Address.class,
        !IS_TRANSIENT,
        !IS_VOLATILE,
        IS_CHANGEABLE,
        !IS_UNSETTABLE,
        !IS_ID,
        IS_UNIQUE,
        !IS_DERIVED,
        !IS_ORDERED);
    initEAttribute(
        getAddress_Country(),
        ecorePackage.getEString(),
        "country",
        null,
        1,
        1,
        Address.class,
        !IS_TRANSIENT,
        !IS_VOLATILE,
        IS_CHANGEABLE,
        !IS_UNSETTABLE,
        !IS_ID,
        IS_UNIQUE,
        !IS_DERIVED,
        !IS_ORDERED);
    initEAttribute(
        getAddress_Region(),
        ecorePackage.getEString(),
        "region",
        null,
        1,
        1,
        Address.class,
        !IS_TRANSIENT,
        !IS_VOLATILE,
        IS_CHANGEABLE,
        !IS_UNSETTABLE,
        !IS_ID,
        IS_UNIQUE,
        !IS_DERIVED,
        !IS_ORDERED);
    initEAttribute(
        getAddress_Municipality(),
        ecorePackage.getEString(),
        "municipality",
        null,
        1,
        1,
        Address.class,
        !IS_TRANSIENT,
        !IS_VOLATILE,
        IS_CHANGEABLE,
        !IS_UNSETTABLE,
        !IS_ID,
        IS_UNIQUE,
        !IS_DERIVED,
        !IS_ORDERED);
    initEAttribute(
        getAddress_CareOf(),
        ecorePackage.getEString(),
        "careOf",
        null,
        1,
        1,
        Address.class,
        !IS_TRANSIENT,
        !IS_VOLATILE,
        IS_CHANGEABLE,
        !IS_UNSETTABLE,
        !IS_ID,
        IS_UNIQUE,
        !IS_DERIVED,
        !IS_ORDERED);

    initEClass(
        iClientEClass,
        IClient.class,
        "IClient",
        IS_ABSTRACT,
        IS_INTERFACE,
        IS_GENERATED_INSTANCE_CLASS);

    EOperation op =
        addEOperation(
            iClientEClass, this.getCustomer(), "createCustomer", 1, 1, IS_UNIQUE, !IS_ORDERED);
    addEParameter(op, theIdentitiesPackage.getIdentity(), "identity", 1, 1, IS_UNIQUE, !IS_ORDERED);
    addEParameter(
        op, thePaymentPackage.getPaymentMethod(), "paymentMethod", 1, 1, IS_UNIQUE, !IS_ORDERED);
    addEParameter(op, ecorePackage.getEString(), "email", 1, 1, IS_UNIQUE, !IS_ORDERED);
    addEParameter(op, thePaymentPackage.getCreditCard(), "card", 1, 1, IS_UNIQUE, !IS_ORDERED);
    addEParameter(op, this.getAddress(), "address", 1, 1, IS_UNIQUE, !IS_ORDERED);

    op = addEOperation(iClientEClass, this.getGuest(), "createGuest", 1, 1, IS_UNIQUE, !IS_ORDERED);
    addEParameter(op, ecorePackage.getEString(), "name", 1, 1, IS_UNIQUE, !IS_ORDERED);
    addEParameter(op, ecorePackage.getEString(), "ssn", 1, 1, IS_UNIQUE, !IS_ORDERED);
    addEParameter(op, ecorePackage.getEInt(), "age", 1, 1, IS_UNIQUE, !IS_ORDERED);

    op =
        addEOperation(
            iClientEClass, this.getAddress(), "createAddress", 1, 1, IS_UNIQUE, !IS_ORDERED);
    addEParameter(op, ecorePackage.getEString(), "street", 1, 1, IS_UNIQUE, !IS_ORDERED);
    addEParameter(op, ecorePackage.getEInt(), "zipCode", 1, 1, IS_UNIQUE, !IS_ORDERED);
    addEParameter(op, ecorePackage.getEString(), "zipArea", 1, 1, IS_UNIQUE, !IS_ORDERED);
    addEParameter(op, ecorePackage.getEString(), "country", 1, 1, IS_UNIQUE, !IS_ORDERED);
    addEParameter(op, ecorePackage.getEString(), "region", 1, 1, IS_UNIQUE, !IS_ORDERED);
    addEParameter(op, ecorePackage.getEString(), "municipality", 1, 1, IS_UNIQUE, !IS_ORDERED);
    addEParameter(op, ecorePackage.getEString(), "careOf", 1, 1, IS_UNIQUE, !IS_ORDERED);

    initEClass(
        clientEClass,
        Client.class,
        "Client",
        IS_ABSTRACT,
        IS_INTERFACE,
        IS_GENERATED_INSTANCE_CLASS);
    initEReference(
        getClient_Invoices(),
        theOrderingPackage.getInvoice(),
        null,
        "invoices",
        null,
        0,
        -1,
        Client.class,
        !IS_TRANSIENT,
        !IS_VOLATILE,
        IS_CHANGEABLE,
        !IS_COMPOSITE,
        IS_RESOLVE_PROXIES,
        !IS_UNSETTABLE,
        IS_UNIQUE,
        !IS_DERIVED,
        !IS_ORDERED);
  }

  /**
   *
   * <!-- begin-user-doc -->
   * Defines literals for the meta objects that represent
   *
   * <ul>
   *   <li>each class,
   *   <li>each feature of each class,
   *   <li>each enum,
   *   <li>and each data type
   * </ul>
   *
   * <!-- end-user-doc -->
   *
   * @generated
   */
  public interface Literals {
    /**
     * The meta object literal for the '{@link sechalmersmdsdgroup5.hotel.clients.impl.CustomerImpl
     * <em>Customer</em>}' class.
     * <!-- begin-user-doc -->
     * <!-- end-user-doc -->
     *
     * @see sechalmersmdsdgroup5.hotel.clients.impl.CustomerImpl
     * @see sechalmersmdsdgroup5.hotel.clients.impl.ClientsPackageImpl#getCustomer()
     * @generated
     */
    public static final EClass CUSTOMER = eINSTANCE.getCustomer();

    /**
     * The meta object literal for the '<em><b>Payment Method</b></em>' attribute feature.
     * <!-- begin-user-doc -->
     * <!-- end-user-doc -->
     *
     * @generated
     */
    public static final EAttribute CUSTOMER__PAYMENT_METHOD = eINSTANCE.getCustomer_PaymentMethod();

    /**
     * The meta object literal for the '<em><b>Card</b></em>' reference feature.
     * <!-- begin-user-doc -->
     * <!-- end-user-doc -->
     *
     * @generated
     */
    public static final EReference CUSTOMER__CARD = eINSTANCE.getCustomer_Card();

    /**
     * The meta object literal for the '<em><b>Associated Adress</b></em>' reference feature.
     * <!-- begin-user-doc -->
     * <!-- end-user-doc -->
     *
     * @generated
     */
    public static final EReference CUSTOMER__ASSOCIATED_ADRESS =
        eINSTANCE.getCustomer_AssociatedAdress();

    /**
     * The meta object literal for the '<em><b>Identity</b></em>' reference feature.
     * <!-- begin-user-doc -->
     * <!-- end-user-doc -->
     *
     * @generated
     */
    public static final EReference CUSTOMER__IDENTITY = eINSTANCE.getCustomer_Identity();

    /**
     * The meta object literal for the '<em><b>Email</b></em>' attribute feature.
     * <!-- begin-user-doc -->
     * <!-- end-user-doc -->
     *
     * @generated
     */
    public static final EAttribute CUSTOMER__EMAIL = eINSTANCE.getCustomer_Email();

    /**
     * The meta object literal for the '{@link sechalmersmdsdgroup5.hotel.clients.impl.AddressImpl
     * <em>Address</em>}' class.
     * <!-- begin-user-doc -->
     * <!-- end-user-doc -->
     *
     * @see sechalmersmdsdgroup5.hotel.clients.impl.AddressImpl
     * @see sechalmersmdsdgroup5.hotel.clients.impl.ClientsPackageImpl#getAddress()
     * @generated
     */
    public static final EClass ADDRESS = eINSTANCE.getAddress();

    /**
     * The meta object literal for the '<em><b>Street</b></em>' attribute feature.
     * <!-- begin-user-doc -->
     * <!-- end-user-doc -->
     *
     * @generated
     */
    public static final EAttribute ADDRESS__STREET = eINSTANCE.getAddress_Street();

    /**
     * The meta object literal for the '<em><b>Zip Code</b></em>' attribute feature.
     * <!-- begin-user-doc -->
     * <!-- end-user-doc -->
     *
     * @generated
     */
    public static final EAttribute ADDRESS__ZIP_CODE = eINSTANCE.getAddress_ZipCode();

    /**
     * The meta object literal for the '<em><b>Zip Area</b></em>' attribute feature.
     * <!-- begin-user-doc -->
     * <!-- end-user-doc -->
     *
     * @generated
     */
    public static final EAttribute ADDRESS__ZIP_AREA = eINSTANCE.getAddress_ZipArea();

    /**
     * The meta object literal for the '<em><b>Country</b></em>' attribute feature.
     * <!-- begin-user-doc -->
     * <!-- end-user-doc -->
     *
     * @generated
     */
    public static final EAttribute ADDRESS__COUNTRY = eINSTANCE.getAddress_Country();

    /**
     * The meta object literal for the '<em><b>Region</b></em>' attribute feature.
     * <!-- begin-user-doc -->
     * <!-- end-user-doc -->
     *
     * @generated
     */
    public static final EAttribute ADDRESS__REGION = eINSTANCE.getAddress_Region();

    /**
     * The meta object literal for the '<em><b>Municipality</b></em>' attribute feature.
     * <!-- begin-user-doc -->
     * <!-- end-user-doc -->
     *
     * @generated
     */
    public static final EAttribute ADDRESS__MUNICIPALITY = eINSTANCE.getAddress_Municipality();

    /**
     * The meta object literal for the '<em><b>Care Of</b></em>' attribute feature.
     * <!-- begin-user-doc -->
     * <!-- end-user-doc -->
     *
     * @generated
     */
    public static final EAttribute ADDRESS__CARE_OF = eINSTANCE.getAddress_CareOf();

    /**
     * The meta object literal for the '{@link sechalmersmdsdgroup5.hotel.clients.IClient
     * <em>IClient</em>}' class.
     * <!-- begin-user-doc -->
     * <!-- end-user-doc -->
     *
     * @see sechalmersmdsdgroup5.hotel.clients.IClient
     * @see sechalmersmdsdgroup5.hotel.clients.impl.ClientsPackageImpl#getIClient()
     * @generated
     */
    public static final EClass ICLIENT = eINSTANCE.getIClient();

    /**
     * The meta object literal for the '{@link sechalmersmdsdgroup5.hotel.clients.Client
     * <em>Client</em>}' class.
     * <!-- begin-user-doc -->
     * <!-- end-user-doc -->
     *
     * @see sechalmersmdsdgroup5.hotel.clients.Client
     * @see sechalmersmdsdgroup5.hotel.clients.impl.ClientsPackageImpl#getClient()
     * @generated
     */
    public static final EClass CLIENT = eINSTANCE.getClient();

    /**
     * The meta object literal for the '<em><b>Invoices</b></em>' reference list feature.
     * <!-- begin-user-doc -->
     * <!-- end-user-doc -->
     *
     * @generated
     */
    public static final EReference CLIENT__INVOICES = eINSTANCE.getClient_Invoices();

    /**
     * The meta object literal for the '{@link sechalmersmdsdgroup5.hotel.clients.impl.GuestImpl
     * <em>Guest</em>}' class.
     * <!-- begin-user-doc -->
     * <!-- end-user-doc -->
     *
     * @see sechalmersmdsdgroup5.hotel.clients.impl.GuestImpl
     * @see sechalmersmdsdgroup5.hotel.clients.impl.ClientsPackageImpl#getGuest()
     * @generated
     */
    public static final EClass GUEST = eINSTANCE.getGuest();

    /**
     * The meta object literal for the '<em><b>Key</b></em>' reference feature.
     * <!-- begin-user-doc -->
     * <!-- end-user-doc -->
     *
     * @generated
     */
    public static final EReference GUEST__KEY = eINSTANCE.getGuest_Key();
  }
} // ClientsPackageImpl