public static ExpectedExceptionFactoryImpl init() {
    if (isInited)
      return (ExpectedExceptionFactoryImpl)
          FactoryBase.getStaticFactory(ExpectedExceptionFactoryImpl.NAMESPACE_URI);
    ExpectedExceptionFactoryImpl theExpectedExceptionFactoryImpl =
        new ExpectedExceptionFactoryImpl();
    isInited = true;

    // Initialize dependencies
    SDOUtil.registerStaticTypes(SDOFactory.class);
    SDOUtil.registerStaticTypes(ModelFactory.class);
    SDOUtil.registerStaticTypes(InternalFactory.class);

    // Create package meta-data objects
    theExpectedExceptionFactoryImpl.createMetaData();

    // Initialize created meta-data
    theExpectedExceptionFactoryImpl.initializeMetaData();

    // Mark meta-data to indicate it can't be changed
    // theExpectedExceptionFactoryImpl.freeze(); //FB do we need to freeze / should we freeze ????

    return theExpectedExceptionFactoryImpl;
  }
  public void initializeMetaData() {
    if (isInitialized) return;
    isInitialized = true;

    // Obtain other dependent packages
    ModelFactoryImpl theModelPackageImpl =
        (ModelFactoryImpl) FactoryBase.getStaticFactory(ModelFactoryImpl.NAMESPACE_URI);
    Property property = null;

    // Add supertypes to types

    // Initialize types and properties
    initializeType(
        expectedExceptionTypeType, ExpectedExceptionType.class, "ExpectedExceptionType", false);
    property = getLocalProperty(expectedExceptionTypeType, 0);
    initializeProperty(
        property,
        theModelPackageImpl.getString(),
        "stringVal",
        null,
        1,
        1,
        ExpectedExceptionType.class,
        false,
        true,
        false);

    property = getLocalProperty(expectedExceptionTypeType, 1);
    initializeProperty(
        property,
        theModelPackageImpl.getBoolean(),
        "booleanVal",
        null,
        1,
        1,
        ExpectedExceptionType.class,
        false,
        true,
        false);

    property = getLocalProperty(expectedExceptionTypeType, 2);
    initializeProperty(
        property,
        theModelPackageImpl.getByte(),
        "byteVal",
        null,
        1,
        1,
        ExpectedExceptionType.class,
        false,
        true,
        false);

    property = getLocalProperty(expectedExceptionTypeType, 3);
    initializeProperty(
        property,
        theModelPackageImpl.getDecimal(),
        "decimalVal",
        null,
        1,
        1,
        ExpectedExceptionType.class,
        false,
        true,
        false);

    property = getLocalProperty(expectedExceptionTypeType, 4);
    initializeProperty(
        property,
        theModelPackageImpl.getInt(),
        "intVal",
        null,
        1,
        1,
        ExpectedExceptionType.class,
        false,
        true,
        false);

    property = getLocalProperty(expectedExceptionTypeType, 5);
    initializeProperty(
        property,
        theModelPackageImpl.getFloat(),
        "floatVal",
        null,
        1,
        1,
        ExpectedExceptionType.class,
        false,
        true,
        false);

    property = getLocalProperty(expectedExceptionTypeType, 6);
    initializeProperty(
        property,
        theModelPackageImpl.getDouble(),
        "doubleVal",
        null,
        1,
        1,
        ExpectedExceptionType.class,
        false,
        true,
        false);

    property = getLocalProperty(expectedExceptionTypeType, 7);
    initializeProperty(
        property,
        theModelPackageImpl.getDateTime(),
        "dateVal",
        null,
        1,
        1,
        ExpectedExceptionType.class,
        false,
        true,
        false);

    property = getLocalProperty(expectedExceptionTypeType, 8);
    initializeProperty(
        property,
        theModelPackageImpl.getShort(),
        "shortVal",
        null,
        1,
        1,
        ExpectedExceptionType.class,
        false,
        true,
        false);

    property = getLocalProperty(expectedExceptionTypeType, 9);
    initializeProperty(
        property,
        theModelPackageImpl.getLong(),
        "longVal",
        null,
        1,
        1,
        ExpectedExceptionType.class,
        false,
        true,
        false);

    property = getLocalProperty(expectedExceptionTypeType, 10);
    initializeProperty(
        property,
        theModelPackageImpl.getString(),
        "listVal",
        null,
        0,
        -1,
        ExpectedExceptionType.class,
        false,
        false,
        false);

    property = getLocalProperty(expectedExceptionTypeType, 11);
    initializeProperty(
        property,
        theModelPackageImpl.getBytes(),
        "bytesVal",
        null,
        1,
        1,
        ExpectedExceptionType.class,
        false,
        true,
        false);

    property = getLocalProperty(expectedExceptionTypeType, 12);
    initializeProperty(
        property,
        theModelPackageImpl.getInteger(),
        "integerVal",
        null,
        1,
        1,
        ExpectedExceptionType.class,
        false,
        true,
        false);

    property = getLocalProperty(expectedExceptionTypeType, 13);
    initializeProperty(
        property,
        this.getchar(),
        "charVal",
        null,
        1,
        1,
        ExpectedExceptionType.class,
        false,
        true,
        false);

    property = getLocalProperty(expectedExceptionTypeType, 14);
    initializeProperty(
        property,
        theModelPackageImpl.getString(),
        "readOnlyVal",
        null,
        1,
        1,
        ExpectedExceptionType.class,
        true,
        true,
        false);
    setInstanceProperty(property, "commonj.sdo/xml", "readOnly", "true");

    property = getLocalProperty(expectedExceptionTypeType, 15);
    initializeProperty(
        property,
        theModelPackageImpl.getString(),
        "readOnlyListVal",
        null,
        1,
        1,
        ExpectedExceptionType.class,
        true,
        true,
        false);
    setInstanceProperty(property, "commonj.sdo/xml", "readOnly", "true");

    initializeType(
        sequenceReadOnlyTypeType, SequenceReadOnlyType.class, "SequenceReadOnlyType", false);
    property = getLocalProperty(sequenceReadOnlyTypeType, 0);
    initializeProperty(
        property,
        getSequence(),
        "mixed",
        null,
        0,
        -1,
        SequenceReadOnlyType.class,
        false,
        false,
        false);

    property = getLocalProperty(sequenceReadOnlyTypeType, 1);
    initializeProperty(
        property,
        theModelPackageImpl.getString(),
        "readOnlyVal",
        null,
        1,
        1,
        SequenceReadOnlyType.class,
        true,
        true,
        true);
    setInstanceProperty(property, "commonj.sdo/xml", "readOnly", "true");

    property = getLocalProperty(sequenceReadOnlyTypeType, 2);
    initializeProperty(
        property,
        theModelPackageImpl.getString(),
        "readOnlyListVal",
        null,
        1,
        1,
        SequenceReadOnlyType.class,
        true,
        true,
        true);
    setInstanceProperty(property, "commonj.sdo/xml", "readOnly", "true");

    property = getLocalProperty(sequenceReadOnlyTypeType, 3);
    initializeProperty(
        property,
        theModelPackageImpl.getString(),
        "uniqueName",
        null,
        1,
        1,
        SequenceReadOnlyType.class,
        false,
        true,
        true);

    // Initialize data types
    initializeType(char_Type, String.class, "char", true, false);

    createXSDMetaData(theModelPackageImpl);
  }