<owb:definition xmlns:owb="http://www.oracle.com/owb/">

    <owb:instruction owb:ClassLocator="oracle.wh.repos.impl.seed.SeedUtils"/>

    <owb:instruction owb:lookup="oracle.wh.repos.impl.metaModel.DefaultLookupFactory"/>

    <owb:classes xmlns:owb="http://www.oracle.com/owb">

        <owb:class name="Comparator" ref="oracle.wh.repos.sdk.Comparator"/>

        <owb:class name="Comparable" ref="java.lang.Comparable"/>
        
        <owb:class name="PropertyException" ref="WBPropertyException"/>

        <owb:class name="WrongTypeException" ref="WrongTypeException">
            <extends>
                <class name="PropertyException"/>
            </extends>
        </owb:class>

        <owb:class name="WrongFormatException" ref="WrongFormatException">
            <extends>
                <class name="PropertyException"/>
            </extends>
        </owb:class>

        <owb:class name="iPropertyOwner" ref="iPropertyOwner"/>

        <owb:class name="iModelDefinitionService" ref="iModelDefinitionService"/>

        <owb:class name="iTyped" ref="iWBTyped"/>

        <owb:class name="iInterestingObject" ref="iInterestingObject"/>

        <owb:class name="iDefinitionElement" ref="iDefinitionElement">
            <extends>
                <class name="iInterestingObject"/>
            </extends>
            <implements>
                <class name="iPropertyOwner"/>
            </implements>
        </owb:class>

        <owb:class name="iAbstractType" ref="iWBAbstractType">
            <extends>
                <class name="iDefinitionElement"/>
            </extends>
        </owb:class>

        <owb:class name="iCollectionType" ref="iWBCollectionType">
            <extends>
                <class name="iAbstractType"/>
            </extends>
        </owb:class>

        <owb:class name="iArrayType" ref="iWBArrayType">
            <extends>
                <class name="iCollectionType"/>
            </extends>
        </owb:class>

        <owb:class name="iDomain" ref="iWBDomain">
            <extends>
                <class name="iAbstractType"/>
            </extends>
            <implements>
                <class name="iTyped"/>
            </implements>
        </owb:class>

        <owb:class name="iRange" ref="iWBRange">
            <extends>
                <class name="iDefinitionElement"/>
            </extends>
        </owb:class>

	<owb:class name="iScalarType" ref="iWBScalarType">
	    <extends>
	        <class name="iAbstractType"/>
	    </extends>
        </owb:class>

	<owb:class name="iPrimitiveType" ref="iWBPrimitiveType">
	    <extends>
	        <class name="iScalarType"/>
	    </extends>
        </owb:class>

        <owb:class name="iPropertyGroupOwner" ref="iPropertyGroupOwner"/>

	<owb:class name="iClassDefinition" ref="iClassDefinition">
	    <extends>
	        <class name="iScalarType"/>
            </extends>
        </owb:class>

        <owb:class name="iAssociationDefinition" ref="iAssociationDefinition">
            <extends>
                <class name="iDefinitionElement"/>
            </extends>
        </owb:class>

        <owb:class name="iClassInheritanceDefinition" ref="iClassInheritanceDefinition">
            <extends>
                <class name="iDefinitionElement"/>
            </extends>
        </owb:class>

        <owb:class name="iClassUsageDefinition" ref="iClassUsageDefinition">
            <extends>
                <class name="iDefinitionElement"/>
            </extends>
        </owb:class>

        <owb:class name="iComponentDefinition" ref="iComponentDefinition">
            <extends>
                <class name="iDefinitionElement"/>
            </extends>
        </owb:class>

        <owb:class name="iInterestSet" ref="iInterestSet">
            <extends>
                <class name="iDefinitionElement"/>
            </extends>
        </owb:class>

        <owb:class name="iInterestUsage" ref="iInterestUsage">
            <extends>
                <class name="iDefinitionElement"/>
            </extends>
        </owb:class>        

        <owb:class name="iPropertyDefinition" ref="iPropertyDefinition">
            <extends>
                <class name="iDefinitionElement"/>
            </extends>
        </owb:class>

        <owb:class name="iPropertyGroupDefinition" ref="iPropertyGroupDefinition">
            <extends>
                <class name="iDefinitionElement"/>
            </extends>
            <implements>
                <class name="iPropertyGroupOwner"/>
            </implements>
        </owb:class>

        <owb:class name="iPropertySetDefinition" ref="iPropertySetDefinition">
            <extends>
                <class name="iDefinitionElement"/>
            </extends>
            <implements>
                <class name="iPropertyGroupOwner"/>
            </implements>
        </owb:class>

        <owb:class name="iPropertyUsageDefinition" ref="iPropertyUsageDefinition">
            <extends>
                <class name="iDefinitionElement"/>
            </extends>
        </owb:class>

        <owb:class name="iRoleDefinition" ref="iRoleDefinition">
            <extends>
                <class name="iDefinitionElement"/>
            </extends>
        </owb:class>

        <owb:class name="iExtensible" ref="iWBExtensible"/>

	<owb:class name="iProperty" ref="iWBProperty"/>

	<owb:class name="iScalarProperty" ref="iWBScalarProperty">
	    <extends>
	        <class name="iProperty"/>
	    </extends>
        </owb:class>

        <owb:class name="iCollectionProperty" ref="iWBCollectionProperty">
            <extends>
                <class name="iProperty"/>
            </extends>
        </owb:class>

        <owb:class name="iArrayProperty" ref="iWBArrayProperty">
            <extends>
                <class name="iCollectionProperty"/>
            </extends>
        </owb:class>

	<owb:class name="iPrimitiveProperty" ref="iWBPrimitiveProperty">
	    <extends>
	        <class name="iScalarProperty"/>
	    </extends>
	</owb:class>

        <owb:class name="SeedUtils" ref="SeedUtils">
            <method name="concatStr" type="String">
                <parameter name="s1" type="String"/>
                <parameter name="s2" type="String"/>
            </method>
            <method name="getInstance" type="SeedUtils">
            </method>
            <method name="getNextUOID" type="String">
                <exception name="CMPException"/>
            </method>
        </owb:class>
    
        <owb:class name="OWBRoot" ref="OWBRoot">
            <property name="LogicalName" type="String">
                <exception name="CMPException"/>
            </property>
            <property name="Name" type="String">
                <exception name="CMPException"/>
            </property>
            <property name="CustomerRenamable" type="boolean" default="false">
                <exception name="CMPException"/>
            </property>
            <property name="CustomerDeletable" type="boolean" default="false">
                <exception name="CMPException"/>
            </property>
            <property name="UOID" type="String">
                <exception name="CMPException"/>
            </property>
            <property name="Seeded" type="boolean" default="true">
                <exception name="CMPException"/>
            </property>
            <property name="PhysicalName" type="String">
                <exception name="CMPException"/>
            </property>
            <property name="Editable" type="boolean" default="false">
                <exception name="CMPException"/>
            </property>
            <property name="Renamable" type="boolean" default="false">
                <exception name="CMPException"/>
            </property>
            <property name="Deletable" type="boolean" default="false">
                <exception name="CMPException"/>
            </property>
        </owb:class>

        <owb:class name="DefinitionElement" ref="DefinitionElement">
            <extends>
                <class name="OWBRoot"/>
            </extends>
            <implements>
                <class name="iDefinitionElement"/>
            </implements>
            <property name="Description" type="String">
                <exception name="CMPException"/>
            </property>
            <property name="Persistent" type="boolean" readonly="true">
                <exception name="CMPException"/>
            </property>
            <method name="findOrCreateWBArrayProperty" type="ArrayProperty">
                <parameter name="type" type="iAbstractType"/>
                <parameter name="name" type="String"/>
                <exception name="CMPException"/>
            </method>
            <method name="findOrCreateWBPrimitiveProperty" type="PrimitiveProperty">
                <parameter name="type" type="iAbstractType"/>
                <parameter name="name" type="String"/>
                <exception name="CMPException"/>
            </method>
        </owb:class>

        <owb:class name="Domain" ref="WBDomain">
            <extends>
                <class name="AbstractType"/>
            </extends>
            <implements>
                <class name="iDomain"/>
            </implements>
            <constructor>
                <parameter name="persistent" type="boolean"/>
                <parameter name="name" type="String"/>
                <parameter name="dataType" type="iAbstractType"/>
                <exception name="CMPException"/>
            </constructor>
            <constructor>
                <parameter name="persistent" type="boolean"/>
                <parameter name="name" type="String"/>
                <parameter name="baseTypeName" type="String"/>
                <exception name="CMPException"/>
            </constructor>
            <constructor>
                <parameter name="persistent" type="boolean"/>
                <parameter name="name" type="String"/>
                <parameter name="comparator" type="String"/>
                <parameter name="dataType" type="iAbstractType"/>
                <exception name="CMPException"/>
            </constructor>
            <property name="BaseTypeName" type="String" readonly="true">
                <exception name="CMPException"/>
            </property>
            <property name="DataType" type="iAbstractType" readonly="true">
                <exception name="CMPException"/>
            </property>
            <property name="ValueInterpreter" type="String">
                <exception name="CMPException"/>
            </property>
            <property name="Chooser" type="String">
                <exception name="CMPException"/>
            </property>     
            <property name="Choices" type="String">
                <exception name="CMPException"/>
            </property>
            <property name="DefaultValueString" type="String">
                <exception name="CMPException"/>
            </property>
            <property name="MaxLength" type="int">
                <exception name="CMPException"/>
            </property>
            <method name="findOrCreateRange" type="Range">
                <parameter name="name" type="String"/>
                <exception name="CMPException"/>
            </method>
            <method name="seedAddValidator" type="PrimitiveProperty">
                <parameter name="validator" type="String"/>
                <exception name="CMPException"/>
            </method>
        </owb:class>

	<owb:class name="ModelDefinitionService" ref="ModelDefinitionService">
	    <implements>
	        <class name="iModelDefinitionService"/>
	    </implements>
	    <method name="getInstance" type="ModelDefinitionService">
            </method>
            <method name="getTypeByName" type="iAbstractType">
                <parameter name="name" type="String"/>
                <exception name="CMPException"/>
            </method>
            <method name="getClassDefinitionByName" type="iClassDefinition">
                <parameter name="name" type="String"/>
                <exception name="CMPException"/>
            </method>
            <method name="getAssociationDefinition" type="iAssociationDefinition">
                <parameter name="classAName" type="String"/>
                <parameter name="roleAName" type="String"/>
                <parameter name="classBName" type="String"/>
                <parameter name="roleBName" type="String"/>
                <exception name="CMPException"/>
            </method>
            <method name="getInheritance" type="iClassInheritanceDefinition">
                <parameter name="parent" type="int"/>
                <parameter name="child" type="int"/>
                <exception name="CMPException"/>
            </method>
            <method name="findOrCreateClassDefinition" type="ClassDefinition">
                <parameter name="name" type="String"/>
                <exception name="CMPException"/>
            </method>
            <method name="findOrCreateClassDefinition" type="ClassDefinition">
                <parameter name="name" type="String"/>
                <parameter name="weaklyTyped" type="boolean"/>
                <exception name="CMPException"/>
            </method>
            <method name="findOrCreateClassInheritanceDefinition" type="ClassInheritanceDefinition">
                <parameter name="parent" type="ClassDefinition"/>
                <parameter name="child" type="ClassDefinition"/>
                <exception name="CMPException"/>
            </method>
            <method name="findOrCreateAssociationDefinition" type="AssociationDefinition">
                <parameter name="classA" type="ClassDefinition"/>
                <parameter name="roleAName" type="String"/>
                <parameter name="classB" type="ClassDefinition"/>
                <parameter name="roleBName" type="String"/>
                <exception name="CMPException"/>
            </method>
            <method name="findOrCreateComponentDefinition" type="ComponentDefinition">
                <parameter name="classDefinition" type="ClassDefinition"/>
                <exception name="CMPException"/>
            </method>
            <method name="findOrCreatePrimitiveType" type="PrimitiveType">
                <parameter name="name" type="String"/>
                <exception name="CMPException"/>
            </method>
            <method name="findOrCreateDomain" type="Domain">
                <parameter name="name" type="String"/>
                <parameter name="type" type="AbstractType"/>
                <exception name="CMPException"/>
            </method>
            <method name="findOrCreateArrayType" type="ArrayType">
                <parameter name="name" type="String"/>
                <parameter name="baseType" type="AbstractType"/>
                <exception name="CMPException"/>
            </method>
            <method name="getDataTypeByAPI" type="AbstractType">
                <parameter name="name" type="String"/>
                <exception name="CMPException"/>
            </method>
            <method name="getClassDefinitionByAPI" type="ClassDefinition">
                <parameter name="name" type="String"/>
                <exception name="CMPException"/>
            </method>
            <method name="getArrayType" type="iArrayType">
                <parameter name="type" type="iAbstractType"/>
                <exception name="CMPException"/>
            </method>
            <method name="getArrayTypeByAPI" type="ArrayType">
                <parameter name="type" type="AbstractType"/>
                <exception name="CMPException"/>
            </method>
        </owb:class>

	<owb:class name="AbstractType" ref="WBAbstractType">	
	    <extends>
	        <class name="DefinitionElement"/>
	    </extends>
	    <implements>
	        <class name="iAbstractType"/>
	    </implements>
            <property name="Comparator" type="String"/>	    
        </owb:class>

        <owb:class name="CollectionType" ref="WBCollectionType">
            <extends>
                <class name="AbstractType"/>
            </extends>
            <implements>
                <class name="iCollectionType"/>
            </implements>
        </owb:class>

	<owb:class name="ScalarType" ref="WBScalarType">
	    <extends>
	        <class name="AbstractType"/>
	    </extends>
	    <implements>
	        <class name="iScalarType"/>
	    </implements>
	</owb:class>

	<owb:class name="PrimitiveType" ref="WBPrimitiveType">
	    <extends>
	        <class name="ScalarType"/>
            </extends>
	    <implements>
	        <class name="iPrimitiveType"/>
	    </implements>
	    <constructor>
	        <parameter name="persistent" type="boolean"/>
                <parameter name="name" type="String"/>
                <exception name="CMPException"/>
            </constructor> 
            <constructor>
	        <parameter name="persistent" type="boolean"/>
                <parameter name="name" type="String"/>
		<parameter name="comparator" type="String"/>
		<parameter name="formator" type="String"/>
                <exception name="CMPException"/>
            </constructor>
	    <property name="Formator" type="String">
	        <exception name="CMPException"/>
            </property>
            <property name="DefaultValueString" type="String">
                <exception name="CMPException"/>
            </property>
        </owb:class>

        <owb:class name="ArrayType" ref="WBArrayType">
	    <extends>
                <class name="CollectionType"/>
            </extends>
	    <implements>
                <class name="iArrayType"/>
	    </implements>
	    <constructor>
	        <parameter name="persistent" type="boolean"/>
                <parameter name="name" type="String"/>
                <parameter name="baseElementType" type="iAbstractType"/>
                <exception name="CMPException"/>
            </constructor> 
            <constructor>
	        <parameter name="persistent" type="boolean"/>
                <parameter name="name" type="String"/>
                <parameter name="elementTypeName" type="String"/>
                <exception name="CMPException"/>
            </constructor> 
            <constructor>
	        <parameter name="persistent" type="boolean"/>
                <parameter name="name" type="String"/>
		<parameter name="comparator" type="String"/>
                <parameter name="baseType" type="iAbstractType"/>
                <exception name="CMPException"/>
            </constructor>
            <property name="ElementTypeName" type="String" readonly="true">
	        <exception name="CMPException"/>
            </property>
            <property name="BaseElementType" type="iAbstractType" readonly="true">
	        <exception name="CMPException"/>
            </property>
        </owb:class>

        <owb:class name="Range" ref="WBRange">
            <extends>
                <class name="DefinitionElement"/>
            </extends>
            <implements>
                <class name="iRange"/>
            </implements>
            <constructor>
                <parameter name="persistent" type="boolean"/>
                <parameter name="name" type="String"/>
                <parameter name="domain" type="iDomain" parent="true"/>
                <exception name="CMPException"/>
            </constructor>
            <property name="MinValueInclusive" type="boolean">
                <exception name="CMPException"/>
            </property>
            <property name="MaxValueInclusive" type="boolean">
                <exception name="CMPException"/>
            </property>
            <property name="MinValueString" type="String">
                <exception name="CMPException"/>
            </property>
            <property name="MaxValueString" type="String">
                <exception name="CMPException"/>
            </property>
            <property name="Domain" type="iDomain" readonly="true">
                <exception name="CMPException"/>
            </property>
        </owb:class>

        <owb:class name="PropertyType" ref="PropertyType">
            <implements>
                <class name="Comparable"/>
            </implements>
            <method name="getPropertyType" type="PropertyType">
                <parameter name="id" type="int"/>
            </method>
            <method name="getId" type="int">
            </method>
        </owb:class>

        <owb:class name="Property" ref="WBProperty">
	    <implements>
	        <class name="iProperty"/>
            </implements>
            <extends>
                <class name="DefinitionElement"/>
            </extends>
            <property name="HasPosition" type="boolean">
                <exception name="CMPException"/>
            </property>
            <property name="Position" type="int">
                <exception name="CMPException"/>
            </property>
            <property name="Owner" type="iPropertyOwner" readonly="true">
                <exception name="CMPException"/>
            </property>
            <property name="Type" type="iAbstractType" readonly="true">
                <exception name="CMPException"/>
            </property>
	</owb:class>

	<owb:class name="ScalarProperty" ref="WBScalarProperty">
	    <extends>
	        <class name="Property"/>
	    </extends>
	    <implements>
	        <class name="iScalarProperty"/>
	    </implements>
	</owb:class>

	<owb:class name="PrimitiveProperty" ref="WBPrimitiveProperty">
	    <extends>
	        <class name="ScalarProperty"/>
            </extends>
	    <implements>
	        <class name="iPrimitiveProperty"/>
            </implements>
            <constructor>
                <parameter name="persistent" type="boolean"/>
                <parameter name="name" type="String"/>
                <parameter name="owner" type="iPropertyOwner" parent="true"/>
                <parameter name="type" type="iAbstractType"/>
                <exception name="CMPException"/>
            </constructor>
            <constructor>
                <parameter name="persistent" type="boolean"/>
                <parameter name="position" type="int"/>
                <parameter name="owner" type="iPropertyOwner" parent="true"/>
                <parameter name="type" type="iAbstractType"/>
                <exception name="CMPException"/>
            </constructor>
	    <property name="Value" type="Object">
	        <exception name="CMPException"/>
            </property>
            <property name="ValueByString" type="String">
                <exception name="CMPException"/>
            </property>
        </owb:class>

        <owb:class name="CollectionProperty" ref="WBCollectionProperty">
            <extends>
                <class name="Property"/>
            </extends>
            <implements>
                <class name="iCollectionProperty"/>
            </implements>
        </owb:class>

        <owb:class name="ArrayProperty" ref="WBArrayProperty">
            <extends>
                <class name="CollectionProperty"/>
            </extends>
            <implements>
                <class name="iArrayProperty"/>
            </implements>
            <constructor>
                <parameter name="persistent" type="boolean"/>
                <parameter name="name" type="String"/>
                <parameter name="owner" type="iPropertyOwner" parent="true"/>
                <parameter name="type" type="iAbstractType"/>
                <exception name="CMPException"/>
            </constructor>
        </owb:class>

        <owb:class name="AssociationDefinition" ref="AssociationDefinition">
            <extends>
                <class name="DefinitionElement"/>
            </extends>
            <constructor>
                <parameter name="persistent" type="boolean"/>
                <parameter name="roleAName" type="String"/>
                <parameter name="classAName" type="String"/>
                <parameter name="roleBName" type="String"/>
                <parameter name="classBName" type="String"/>
                <exception name="CMPException"/>
            </constructor>
            <implements>
                <class name="iAssociationDefinition"/>
            </implements>
            <property name="RoleA" type="iRoleDefinition" readonly="true">
                <exception name="CMPException"/>
            </property>
            <property name="RoleB" type="iRoleDefinition" readonly="true">
                <exception name="CMPException"/>
            </property>
            <property name="ClassA" type="iClassDefinition" readonly="true">
                <exception name="CMPException"/>
            </property>
            <property name="ClassB" type="iClassDefinition" readonly="true">
                <exception name="CMPException"/>
            </property>
            <property name="ClassAName" type="String" readonly="true">
                <exception name="CMPException"/>
            </property>
            <property name="RoleAName" type="String" readonly="true">
                <exception name="CMPException"/>
            </property>
            <property name="ClassBName" type="String" readonly="true">
                <exception name="CMPException"/>
            </property>
            <property name="RoleBName" type="String" readonly="true">
                <exception name="CMPException"/>
            </property>
            <property name="AssociationType" type="int">
                <exception name="CMPException"/>
            </property>
            <property name="WeaklyTyped" type="boolean">
                <exception name="CMPException"/>
            </property>
        </owb:class>

        <owb:class name="ClassDefinition" ref="ClassDefinition">
	    <extends>
	        <class name="ScalarType"/>
	    </extends>
	    <implements>
	        <class name="iClassDefinition"/>
            </implements>
	    <constructor>
	        <parameter name="persistent" type="boolean"/>
                <parameter name="name" type="String"/>
                <parameter name="comparator" type="String"/>
		<parameter name="packageName" type="String"/>
                <exception name="CMPException"/>
            </constructor>
	    <constructor>
	        <parameter name="persistent" type="boolean"/>
                <parameter name="name" type="String"/>
                <exception name="CMPException"/>
            </constructor> 
            <constructor>
	        <parameter name="persistent" type="boolean"/>
                <parameter name="name" type="String"/>
                <parameter name="comparator" type="String"/>
                <parameter name="packageName" type="String"/>
                <parameter name="weaklyTyped" type="boolean"/>
                <exception name="CMPException"/>
            </constructor>
	    <constructor>
	        <parameter name="persistent" type="boolean"/>
                <parameter name="name" type="String"/>
                <parameter name="weaklyTyped" type="boolean"/>
                <exception name="CMPException"/>
            </constructor>
            <property name="Extensible" type="boolean">
                <exception name="CMPException"/>
            </property>
            <property name="CoreExtensible" type="boolean">
                <exception name="CMPException"/>
            </property>
            <property name="LogicalExtensible" type="boolean">
                <exception name="CMPException"/>
            </property>
            <property name="ConfigurationExtensible" type="boolean">
                <exception name="CMPException"/>
            </property>
            <property name="UDPExtensible" type="boolean">
                <exception name="CMPException"/>
            </property>
            <property name="ComponentDefinition" type="iComponentDefinition" readonly="true">
                <exception name="CMPException"/>
            </property>
            <property name="ClassPersistent" type="boolean">
                <exception name="CMPException"/>
            </property>
            <property name="WeaklyTyped" type="boolean">
                <exception name="CMPException"/>
            </property>
            <property name="Stereotype" type="int">
                <exception name="CMPException"/>
            </property>
            <property name="Generatable" type="boolean">
                <exception name="CMPException"/>
            </property>
            <property name="Abstract" type="boolean">
                <exception name="CMPException"/>
            </property>
            <property name="PackageName" type="String">
                <exception name="CMPException"/>
            </property>
            <property name="Implements" type="String">
                <exception name="CMPException"/>
            </property>
            <property name="Extends" type="String">
                <exception name="CMPException"/>
            </property>
            <property name="NamespaceParent" type="String">
                <exception name="CMPException"/>
            </property>
            <property name="NamespaceDomain" type="String">
                <exception name="CMPException"/>
            </property>
            <property name="PropertyParent" type="iClassDefinition">
                <exception name="CMPException"/>
            </property>
            <method name="getPropertyParent" type="iClassDefinition">
                <exception name="CMPException"/>
            </method>
            <method name="getPropertySetDefinition" type="iPropertySetDefinition">
                <parameter name="propertyType" type="PropertyType"/>
                <exception name="CMPException"/>
            </method>
            <method name="getPropertySetDefinition" type="iPropertySetDefinition">
                <parameter name="propertyType" type="PropertyType"/>
                <parameter name="name" type="String"/>
                <exception name="CMPException"/>
            </method>
            <method name="getPropertySetDefinition" type="iPropertySetDefinition">
                <parameter name="parentSet" type="iPropertySetDefinition"/>
                <exception name="CMPException"/>
            </method>
            <method name="getPropertySetDefinition" type="iPropertySetDefinition">
                <parameter name="parentSet" type="iPropertySetDefinition"/>
                <parameter name="name" type="String"/>
                <exception name="CMPException"/>
            </method>
            <method name="findOrCreatePropertyGroupDefinition" type="PropertyGroupDefinition">
                <parameter name="name" type="String"/>
                <parameter name="definitionKey" type="String"/>
                <exception name="CMPException"/>
            </method>
            <method name="getPropertyDefinitionByName" type="iPropertyDefinition">
                <parameter name="name" type="String"/>
                <exception name="CMPException"/>
            </method>
            <method name="getComponentDefinition" type="iComponentDefinition">
                <exception name="CMPException"/>
            </method>
            <method name="findOrCreatePropertySetDefinition" type="PropertySetDefinition">
                <parameter name="propertyType" type="PropertyType"/>
                <exception name="CMPException"/>
            </method>
            <method name="findOrCreatePropertySetDefinition" type="PropertySetDefinition">
                <parameter name="propertyType" type="PropertyType"/>
                <parameter name="name" type="String"/>
                <exception name="CMPException"/>
            </method>
            <method name="findOrCreatePropertySetDefinition" type="PropertySetDefinition">
                <parameter name="parentSet" type="iPropertySetDefinition"/>
                <exception name="CMPException"/>
            </method>
            <method name="findOrCreatePropertySetDefinition" type="PropertySetDefinition">
                <parameter name="parentSet" type="iPropertySetDefinition"/>
                <parameter name="name" type="String"/>
                <exception name="CMPException"/>
            </method>
            <method name="findOrCreatePropertyDefinition" type="PropertyDefinition">
                <parameter name="name" type="String"/>
                <parameter name="type" type="AbstractType"/>
                <parameter name="propertyType" type="PropertyType"/>
                <exception name="CMPException"/>
            </method>
            <method name="findOrCreateRoleDefinition" type="RoleDefinition">
                <parameter name="name" type="String"/>
                <parameter name="targetClass" type="ClassDefinition"/>
                <parameter name="targetRole" type="String"/>
                <exception name="CMPException"/>
            </method>                           
            <method name="addImplementedInterface" type="void">
                <parameter name="name" type="String"/>
                <exception name="CMPException"/>
            </method>                           
            
        </owb:class>    

        <owb:class name="ClassInheritanceDefinition" ref="ClassInheritanceDefinition">
            <extends>
                <class name="DefinitionElement"/>
            </extends>
            <implements>
                <class name="iClassInheritanceDefinition"/>
            </implements>
            <constructor>
                <parameter name="persistent" type="boolean"/>
                <parameter name="parent" type="iClassDefinition"/>
                <parameter name="child" type="iClassDefinition"/>
                <exception name="CMPException"/>
            </constructor>
            <constructor>
                <parameter name="persistent" type="boolean"/>
                <parameter name="parentClassName" type="String"/>
                <parameter name="childClassName" type="String"/>
                <exception name="CMPException"/>
            </constructor>
            <property name="InheritanceParent" type="iClassDefinition" readonly="true">
                <exception name="CMPException"/>
            </property>
            <property name="InheritanceChild" type="iClassDefinition" readonly="true">
                <exception name="CMPException"/>
            </property>
            <property name="Child" type="iClassDefinition" readonly="true">
                <exception name="CMPException"/>
            </property>
            <property name="Parent" type="iClassDefinition" readonly="true">
                <exception name="CMPException"/>
            </property>
            <property name="ChildClassName" type="String" readonly="true">
                <exception name="CMPException"/>
            </property>
            <property name="ParentClassName" type="String" readonly="true">
                <exception name="CMPException"/>
            </property>
        </owb:class>

        <owb:class name="ClassUsageDefinition" ref="ClassUsageDefinition">
            <extends>
                <class name="DefinitionElement"/>
            </extends>
            <implements>
                <class name="iClassUsageDefinition"/>
            </implements>
            <constructor>
                <parameter name="persistent" type="boolean"/>
                <parameter name="componentDefinition" type="iComponentDefinition" parent="true"/>
                <parameter name="targetClassName" type="String"/>
                <parameter name="usageType" type="int"/>
                <exception name="CMPException"/>
            </constructor>
            <property name="ClassDefinition" type="iClassDefinition">
                <exception name="CMPException"/>
            </property>
            <property name="TargetClassName" type="String">
                <exception name="CMPException"/>
            </property>
            <property name="ComponentDefinition" type="iComponentDefinition" readonly="true">
                <exception name="CMPException"/>
            </property>
            <property name="UsageType" type="int">
                <exception name="CMPException"/>
            </property>
        </owb:class>

        <owb:class name="ComponentDefinition" ref="ComponentDefinition">
            <extends>
                <class name="DefinitionElement"/>
            </extends>
            <implements>
                <class name="iComponentDefinition"/>
            </implements>
            <constructor>
                <parameter name="persistent" type="boolean"/>
                <parameter name="componentClass" type="String"/>
                <exception name="CMPException"/>
            </constructor>
            <property name="ClassDefinition" type="iClassDefinition" readonly="true">
                <exception name="CMPException"/>
            </property>
            <property name="ComponentClass" type="String" readonly="true">
                <exception name="CMPException"/>
            </property>
            <method name="findOrCreateClassUsageDefinition" type="ClassUsageDefinition">
                <parameter name="classDefinition" type="ClassDefinition"/>
                <parameter name="usageType" type="int"/>
                <exception name="CMPException"/>
            </method>
        </owb:class>

        <owb:class name="PublicAPISet" ref="PublicAPISet">
            <extends>
                <class name="InterestSet"/>
            </extends>
            <constructor>
                <parameter name="persistent" type="boolean"/>
                <parameter name="name" type="String"/>
                <exception name="CMPException"/>
            </constructor>
        </owb:class>

        <owb:class name="DefinitionInterestUsage" ref="DefinitionInterestUsage">
            <extends>
                <class name="InterestUsage"/>
            </extends>
            <constructor>
                <parameter name="persistent" type="boolean"/>
                <parameter name="name" type="String"/>
                <parameter name="set" type="PublicAPISet" parent="true"/>
                <parameter name="target" type="iInterestingObject"/>
                <exception name="CMPException"/>
            </constructor>
            <constructor>
                <parameter name="persistent" type="boolean"/>
                <parameter name="name" type="String"/>
                <parameter name="set" type="PublicAPISet" parent="true"/>
                <parameter name="target" type="iInterestingObject"/>
                <parameter name="targetType" type="int"/>
                <exception name="CMPException"/>
            </constructor>
            <constructor>
                <parameter name="persistent" type="boolean"/>
                <parameter name="name" type="String"/>
                <parameter name="set" type="PublicAPISet" parent="true"/>
                <parameter name="target" type="iInterestingObject"/>
                <parameter name="targetType" type="int"/>
                <parameter name="parentInterest" type="DefinitionInterestUsage"/>
                <exception name="CMPException"/>
            </constructor>
            <property name="ParentInterest" type="DefinitionInterestUsage">
                <exception name="CMPException"/>
            </property>
            <property name="ScriptName" type="String">
                <exception name="CMPException"/>
            </property>
            <property name="PublicWeaklyTyped" type="boolean">
                <exception name="CMPException"/>
            </property>
            <property name="RealInterestUsage" type="DefinitionInterestUsage">
                <exception name="CMPException"/>
            </property>
            <property name="Set" type="PublicAPISet" readonly="true">
                <exception name="CMPException"/>
            </property>
            <property name="Target" type="iInterestingObject">
                <exception name="CMPException"/>
            </property>
            <property name="TargetType" type="int" readonly="true">
                <exception name="CMPException"/>
            </property>
        </owb:class>

        <owb:class name="InterestSet" ref="InterestSet">
            <extends>
                <class name="DefinitionElement"/>
            </extends>
            <implements>
                <class name="iInterestSet"/>
            </implements>
        </owb:class>

        <owb:class name="InterestUsage" ref="InterestUsage">
            <extends>
                <class name="DefinitionElement"/>
            </extends>
            <implements>
                <class name="iInterestUsage"/>
            </implements>
            <property name="InterestingObject" type="iInterestingObject">
                <exception name="CMPException"/>
            </property>
            <property name="InterestSet" type="iInterestSet" readonly="true">
                <exception name="CMPException"/>
            </property>
        </owb:class>        

        <owb:class name="PropertyGroupDefinition" ref="PropertyGroupDefinition">
            <extends>
                <class name="DefinitionElement"/>
            </extends>
            <implements>
                <class name="iPropertyGroupDefinition"/>
            </implements>
            <constructor>
                <parameter name="persistent" type="boolean"/>
                <parameter name="name" type="String"/>
                <parameter name="owner" type="iPropertyGroupOwner" parent="true"/>
                <exception name="CMPException"/>
            </constructor>
            <property name="DefinitionKey" type="String">
                <exception name="CMPException"/>
            </property>
            <property name="Hidden" type="boolean">
                <exception name="CMPException"/>
            </property>
            <property name="PropertyGroupOwner" type="iPropertyGroupOwner" readonly="true">
                <exception name="CMPException"/>
            </property>
            <property name="Owner" type="iPropertyGroupOwner" readonly="true">
                <exception name="CMPException"/>
            </property>
            <method name="findOrCreatePropertyDefinition" type="PropertyDefinition">
                <parameter name="name" type="String"/>
                <exception name="CMPException"/>
            </method>                
        </owb:class>

        <owb:class name="PropertySetDefinition" ref="PropertySetDefinition">
            <extends>
                <class name="DefinitionElement"/>
            </extends>
            <implements>
                <class name="iPropertySetDefinition"/>
            </implements>
            <constructor>
                <parameter name="persistent" type="boolean"/>
                <parameter name="owningClass" type="iClassDefinition" parent="true"/>
                <parameter name="propertyType" type="PropertyType"/>
                <parameter name="name" type="String"/>
                <exception name="CMPException"/>
            </constructor>
            <constructor>
                <parameter name="persistent" type="boolean"/>
                <parameter name="owningClass" type="iClassDefinition" parent="true"/>
                <parameter name="parentSet" type="iPropertySetDefinition"/>
                <parameter name="name" type="String"/>
                <exception name="CMPException"/>
            </constructor>
            <constructor>
                <parameter name="owningClass" type="iClassDefinition" parent="true"/>
                <parameter name="parentSet" type="iPropertySetDefinition"/>
                <exception name="CMPException"/>
            </constructor>
            <constructor>
                <parameter name="owningClass" type="iClassDefinition" parent="true"/>
                <parameter name="propertyType" type="PropertyType"/>
                <exception name="CMPException"/>
            </constructor>
            <constructor>
                <parameter name="owningClass" type="iClassDefinition" parent="true"/>
                <parameter name="propertyType" type="PropertyType"/>
                <parameter name="name" type="String"/>
                <exception name="CMPException"/>
            </constructor>
            <constructor>
                <parameter name="owningClass" type="iClassDefinition" parent="true"/>
                <parameter name="parentSet" type="iPropertySetDefinition"/>
                <parameter name="name" type="String"/>
                <exception name="CMPException"/>
            </constructor> 
            <property name="ClassDefinition" type="iClassDefinition" readonly="true">
                <exception name="CMPException"/>
            </property>
            <property name="OwningClass" type="iClassDefinition" readonly="true">
                <exception name="CMPException"/>
            </property>
            <property name="DefinitionKey" type="String">
                <exception name="CMPException"/>
            </property>
            <property name="PropertyType" type="PropertyType" readonly="true">
                <exception name="CMPException"/>
            </property>
            <property name="ParentSet" type="iPropertySetDefinition">
                <exception name="CMPException"/>
            </property>
            <property name="ParentPropertySetDefinition" type="iPropertySetDefinition">
                <exception name="CMPException"/>
            </property>
            <property name="RealPropertySetDefinition" type="iPropertySetDefinition">
                <exception name="CMPException"/>
            </property>
            <property name="SuperPropertySetDefinition" type="iPropertySetDefinition">
                <exception name="CMPException"/>
            </property>
            <method name="findOrCreatePropertyUsageDefinition" type="PropertyUsageDefinition">
                <parameter name="name" type="String"/>
                <exception name="CMPException"/>
            </method>
            <method name="findOrCreatePropertyUsageDefinition" type="PropertyUsageDefinition">
                <parameter name="name" type="String"/>
                <parameter name="usageType" type="iAbstractType"/>
                <exception name="CMPException"/>
            </method>
            <method name="findOrCreatePropertyGroupDefinition" type="PropertyGroupDefinition">
                <parameter name="name" type="String"/>
                <parameter name="definitionKey" type="String"/>
                <exception name="CMPException"/>
            </method>    
            
        </owb:class>

        <owb:class name="PropertyUsageDefinition" ref="PropertyUsageDefinition">
            <extends>
                <class name="DefinitionElement"/>
            </extends>
            <implements>
                <class name="iPropertyUsageDefinition"/>
            </implements>
            <constructor>
                <parameter name="propertySetDefinition" type="iPropertySetDefinition" parent="true"/>
                <parameter name="propertyDefinition" type="iPropertyDefinition"/>
                <parameter name="definitionKey" type="String"/>
                <exception name="CMPException"/>
            </constructor>
            <constructor>
                <parameter name="propertySetDefinition" type="iPropertySetDefinition" parent="true"/>
                <parameter name="propertyDefinition" type="iPropertyDefinition"/>
                <exception name="CMPException"/>
            </constructor>
            <constructor>
                <parameter name="propertySetDefinition" type="iPropertySetDefinition" parent="true"/>
                <parameter name="name" type="String"/>
                <exception name="CMPException"/>
            </constructor>
            <property name="DefinitionKey" type="String">
                <exception name="CMPException"/>
            </property>
            <property name="PropertySetDefinition" type="iPropertySetDefinition" readonly="true">
                <exception name="CMPException"/>
            </property>
            <property name="PropertyDefinition" type="iPropertyDefinition" readonly="true">
                <exception name="CMPException"/>
            </property>
            <property name="DefaultValueString" type="String">
                <exception name="CMPException"/>
                <exception name="WrongTypeException"/>
            </property>
            <property name="DefaultValue" type="iProperty">
                <exception name="CMPException"/>
                <exception name="WrongTypeException"/>
            </property>
            <property name="DefaultValueObject" type="Object">
                <exception name="CMPException"/>
                <exception name="WrongTypeException"/>
            </property>
            <property name="Hidden" type="boolean">
                <exception name="CMPException"/>
            </property>
            <property name="PropertyReadOnly" type="boolean">
                <exception name="CMPException"/>
            </property>
            <property name="UserChoiceAllowed" type="boolean">
                <exception name="CMPException"/>
            </property>
            <property name="DynamicDefault" type="String">
                <exception name="CMPException"/>
            </property>
            <property name="InPlaceEditor" type="String">
                <exception name="CMPException"/>
            </property>
            <property name="CustomEditor" type="String">
                <exception name="CMPException"/>
            </property>

        </owb:class>

	<owb:class name="PropertyDefinition" ref="PropertyDefinition">
	    <extends>
	        <class name="DefinitionElement"/>
	    </extends>
	    <implements>
	        <class name="iPropertyDefinition"/>
	    </implements>
	    <constructor>
	        <parameter name="name" type="String"/>
                <parameter name="classDefinition" type="iClassDefinition" parent="true"/>
		<parameter name="type" type="iAbstractType"/>
		<exception name="CMPException"/>
	    </constructor>
	    <property name="DefaultValueString" type="String">
	        <exception name="CMPException"/>
            </property>
            <property name="DefaultValueObject" type="Object">
                <exception name="CMPException"/>
            </property>        
	    <property name="DefaultValue" type="iProperty">
	        <exception name="CMPException"/>
	    </property>
            <property name="PropertyType" type="PropertyType">
	        <exception name="CMPException"/>
            </property>
            <property name="DefinitionKey" type="String">
                <exception name="CMPException"/>
            </property>
	    <property name="Position" type="int">
	        <exception name="CMPException"/>
            </property>
            <property name="ClassDefinition" type="iClassDefinition" readonly="true">
                <exception name="CMPException"/>
            </property>
            <property name="Type" type="iAbstractType" readonly="true">
                <exception name="CMPException"/>
            </property>
            <property name="ExportControl" type="int">
                <exception name="CMPException"/>
            </property>
            <property name="Override" type="boolean">
                <exception name="CMPException"/>
            </property>
            <property name="IsRole" type="boolean">
                <exception name="CMPException"/>
            </property>
            <property name="PropertyGroupDefinition" type="iPropertyGroupDefinition">
                <exception name="CMPException"/>
            </property>
            <property name="RoleDefinition" type="iRoleDefinition">
                <exception name="CMPException"/>
            </property>
            <property name="Translatable" type="boolean">
                <exception name="CMPException"/>
            </property>
            <property name="Password" type="boolean">
                <exception name="CMPException"/>
            </property>
            <property name="Hidden" type="boolean">
                <exception name="CMPException"/>
            </property>
            <property name="PropertyReadOnly" type="boolean">
                <exception name="CMPException"/>
            </property>
            <property name="NameChecked" type="boolean">
                <exception name="CMPException"/>
            </property>
            <property name="UserChoiceAllowed" type="boolean">
                <exception name="CMPException"/>
            </property>
            <property name="DynamicDefault" type="String">
                <exception name="CMPException"/>
            </property>
            <property name="InPlaceEditor" type="String">
                <exception name="CMPException"/>
            </property>
            <property name="CustomEditor" type="String">
                <exception name="CMPException"/>
            </property>
            <property name="ContributeToSignature" type="boolean">
                <exception name="CMPException"/>
            </property>
        </owb:class>

        <owb:class name="RoleDefinition" ref="RoleDefinition">
            <extends>
                <class name="DefinitionElement"/>
            </extends>
            <implements>
                <class name="iRoleDefinition"/>
            </implements>
            <property name="Aggregate" type="boolean">
                <exception name="CMPException"/>
            </property>
            <property name="Navigable" type="boolean">
                <exception name="CMPException"/>
            </property>
            <property name="MinCardinality" type="int">
                <exception name="CMPException"/>
            </property>
            <property name="MaxCardinality" type="int">
                <exception name="CMPException"/>
            </property>
            <property name="ClassDefinition" type="iClassDefinition" readonly="true">
                <exception name="CMPException"/>
            </property>
            <property name="PropertyDefinition" type="iPropertyDefinition">
                <exception name="CMPException"/>
            </property>
            <property name="PropertyDefinitionName" type="String">
                <exception name="CMPException"/>
            </property>
            <property name="OwningClassName" type="String" readonly="true">
                <exception name="CMPException"/>
            </property>
            <property name="TargetClassName" type="String" readonly="true">
                <exception name="CMPException"/>
            </property>
            <property name="TargetRoleName" type="String" readonly="true">
                <exception name="CMPException"/>
            </property>
        </owb:class>

    </owb:classes>

    <SeedUtils owb:InternalName="seedtool">
        <owb:instantiate owb:class="SeedUtils" owb:method="getInstance"/>
    </SeedUtils>

    <ModelDefinitionService owb:InternalName="modelService">
        <owb:instantiate owb:class="ModelDefinitionService" owb:method="getInstance"/>
    </ModelDefinitionService>

    <PropertyType owb:InternalName="CorePropertyType">
        <owb:instantiate owb:class="PropertyType" owb:method="getPropertyType" id="0"/>
    </PropertyType>

    <PropertyType owb:InternalName="LogicalPropertyType">
        <owb:instantiate owb:class="PropertyType" owb:method="getPropertyType" id="1"/>
    </PropertyType>

    <PropertyType owb:InternalName="ConfigurationPropertyType">
        <owb:instantiate owb:class="PropertyType" owb:method="getPropertyType" id="2"/>
    </PropertyType>

    <PropertyType owb:InternalName="UserDefinedPropertyType">
        <owb:instantiate owb:class="PropertyType" owb:method="getPropertyType" id="3"/>
    </PropertyType>
 
    <owb:alias owb:InternalName="getClassDefinition">
        <owb:invoke owb:object="modelService" owb:method="getClassDefinition"/>
    </owb:alias>

    <owb:alias owb:InternalName="getNextUOID" owb:object="seedtool" owb:method="getNextUOID"/>

    <owb:alias owb:InternalName="getType" owb:object="modelService" owb:method="getDataTypeByAPI"/>

    <owb:alias owb:InternalName="getClassDefinition" owb:object="modelService" owb:method="getClassDefinitionByAPI"/>

    <owb:alias owb:InternalName="getArrayType" owb:object="modelService" owb:method="getArrayType"/>

    <PrimitiveType owb:InternalName="stringType">
        <owb:instantiate owb:object="modelService" owb:method="findOrCreatePrimitiveType"
                         name="'String'"/>
    </PrimitiveType>

    <PrimitiveType owb:InternalName="integerType">
        <owb:instantiate owb:object="modelService" owb:method="findOrCreatePrimitiveType"
                         name="'Integer'"/>
    </PrimitiveType>

    <PrimitiveType owb:InternalName="longType">
        <owb:instantiate owb:object="modelService" owb:method="findOrCreatePrimitiveType"
                         name="'Long'"/>
    </PrimitiveType>

    <PrimitiveType owb:InternalName="floatType">
        <owb:instantiate owb:object="modelService" owb:method="findOrCreatePrimitiveType"
                         name="'Float'"/>
    </PrimitiveType>

    <PrimitiveType owb:InternalName="doubleType">
        <owb:instantiate owb:object="modelService" owb:method="findOrCreatePrimitiveType"
                         name="'Double'"/>
    </PrimitiveType>

    <PrimitiveType owb:InternalName="timestampType">
        <owb:instantiate owb:object="modelService" owb:method="findOrCreatePrimitiveType"
                         name="'Timestamp'"/>
    </PrimitiveType>

    <PrimitiveType owb:InternalName="dateType">
        <owb:instantiate owb:object="modelService" owb:method="findOrCreatePrimitiveType"
                         name="'Date'"/>
    </PrimitiveType>

    <PrimitiveType owb:InternalName="BooleanType">
        <owb:instantiate owb:object="modelService" owb:method="findOrCreatePrimitiveType"
                         name="'Boolean'"/>
    </PrimitiveType>

    <Domain owb:InternalName="FileType">
        <owb:instantiate owb:object="modelService"
                         owb:method="findOrCreateDomain"
                         name="'FILE'">
            <type owb:object="stringType"/>
        </owb:instantiate>
    </Domain>

    <Domain owb:InternalName="ClobType">
        <owb:instantiate owb:object="modelService"
                         owb:method="findOrCreateDomain"
                         name="'CLOB'">
            <type owb:object="stringType"/>
        </owb:instantiate>
    </Domain>

    <Domain owb:InternalName="BlobType">
        <owb:instantiate owb:object="modelService" 
                         owb:method="findOrCreateDomain"
                         name="'BLOB'">
            <type owb:object="stringType"/>
        </owb:instantiate>
    </Domain>
    
    <Domain owb:InternalName="DirectoryType">
        <owb:instantiate owb:object="modelService" 
                         owb:method="findOrCreateDomain"
                         name="'Directory'">
            <type owb:object="stringType"/>
        </owb:instantiate>
    </Domain>
    
    <Domain owb:InternalName="UrlType">
        <owb:instantiate owb:object="modelService" 
                         owb:method="findOrCreateDomain"
                         name="'URL'">
            <type owb:object="stringType"/>
        </owb:instantiate>
    </Domain>
    
    <Domain owb:InternalName="String2000Type">
        <owb:instantiate owb:object="modelService" 
                         owb:method="findOrCreateDomain"
                         name="'String2000'">
            <type owb:object="stringType"/>
        </owb:instantiate>
    </Domain>
    
    <Domain owb:InternalName="String255Type">
        <owb:instantiate owb:object="modelService" 
                         owb:method="findOrCreateDomain"
                         name="'String255'">
            <type owb:object="stringType"/>
        </owb:instantiate>
    </Domain>
    
    <ArrayType owb:InternalName="stringArrayType">
        <owb:instantiate owb:object="modelService" owb:method="findOrCreateArrayType"
                         name="'String[]'">
            <baseType owb:object="stringType"/>
        </owb:instantiate>
    </ArrayType>
    
</owb:definition>
