Bug fixes
diff --git a/tools/org.eclipse.persistence.tools.mapping/src/org/eclipse/persistence/tools/mapping/orm/dom/AbstractQuery.java b/tools/org.eclipse.persistence.tools.mapping/src/org/eclipse/persistence/tools/mapping/orm/dom/AbstractQuery.java
index 5228988..f8a8b81 100644
--- a/tools/org.eclipse.persistence.tools.mapping/src/org/eclipse/persistence/tools/mapping/orm/dom/AbstractQuery.java
+++ b/tools/org.eclipse.persistence.tools.mapping/src/org/eclipse/persistence/tools/mapping/orm/dom/AbstractQuery.java
@@ -55,6 +55,7 @@
 	@Override
 	public final ExternalQueryHint addQueryHint(String name, String value) {
 		QueryHint queryHint = buildQueryHint(-1);
+		queryHint.addSelf();
 		queryHint.setName(name);
 		queryHint.setValue(value);
 		return queryHint;
diff --git a/tools/org.eclipse.persistence.tools.mapping/src/org/eclipse/persistence/tools/mapping/orm/dom/AssociationOverride.java b/tools/org.eclipse.persistence.tools.mapping/src/org/eclipse/persistence/tools/mapping/orm/dom/AssociationOverride.java
index bab1eda..410a539 100644
--- a/tools/org.eclipse.persistence.tools.mapping/src/org/eclipse/persistence/tools/mapping/orm/dom/AssociationOverride.java
+++ b/tools/org.eclipse.persistence.tools.mapping/src/org/eclipse/persistence/tools/mapping/orm/dom/AssociationOverride.java
@@ -56,6 +56,7 @@
 	@Override
 	public ExternalJoinColumn addJoinColumn(String name) {
 		JoinColumn joinColumn = buildJoinColumn(-1);
+		joinColumn.addSelf();
 		joinColumn.setName(name);
 		return joinColumn;
 	}
@@ -66,6 +67,7 @@
 	@Override
 	public ExternalJoinTable addJoinTable(String tableName) {
 		JoinTable joinTable = buildJoinTable();
+		joinTable.addSelf();
 		joinTable.setName(tableName);
 		return joinTable;
 	}
diff --git a/tools/org.eclipse.persistence.tools.mapping/src/org/eclipse/persistence/tools/mapping/orm/dom/BasicCollectionMapping.java b/tools/org.eclipse.persistence.tools.mapping/src/org/eclipse/persistence/tools/mapping/orm/dom/BasicCollectionMapping.java
index 07375c6..ebe7d2e 100644
--- a/tools/org.eclipse.persistence.tools.mapping/src/org/eclipse/persistence/tools/mapping/orm/dom/BasicCollectionMapping.java
+++ b/tools/org.eclipse.persistence.tools.mapping/src/org/eclipse/persistence/tools/mapping/orm/dom/BasicCollectionMapping.java
@@ -60,6 +60,7 @@
 	@Override
 	public ExternalCollectionTable addCollectionTable(String name) {
 		CollectionTable collectionTable = buildCollectionTable();
+		collectionTable.addSelf();
 		collectionTable.setName(name);
 		return collectionTable;
 	}
@@ -70,6 +71,7 @@
 	@Override
 	public ExternalEntityColumn addValueColumn(String columnName) {
 		EntityColumn valueColumn = buildValueColumn();
+		valueColumn.addSelf();
 		valueColumn.setName(columnName);
 		return valueColumn;
 	}
diff --git a/tools/org.eclipse.persistence.tools.mapping/src/org/eclipse/persistence/tools/mapping/orm/dom/BasicMapMapping.java b/tools/org.eclipse.persistence.tools.mapping/src/org/eclipse/persistence/tools/mapping/orm/dom/BasicMapMapping.java
index 25d5bea..574d2e2 100644
--- a/tools/org.eclipse.persistence.tools.mapping/src/org/eclipse/persistence/tools/mapping/orm/dom/BasicMapMapping.java
+++ b/tools/org.eclipse.persistence.tools.mapping/src/org/eclipse/persistence/tools/mapping/orm/dom/BasicMapMapping.java
@@ -64,6 +64,7 @@
 	@Override
 	public ExternalCollectionTable addCollectionTable(String name) {
 		CollectionTable collectionTable = buildCollectionTable();
+		collectionTable.addSelf();
 		collectionTable.setName(name);
 		return collectionTable;
 	}
@@ -74,6 +75,7 @@
 	@Override
 	public ExternalEntityColumn addKeyColumn(String columnName) {
 		EntityColumn column = buildColumn(KEY_COLUMN);
+		column.addSelf();
 		column.setName(columnName);
 		return column;
 	}
@@ -92,6 +94,7 @@
 	@Override
 	public ExternalEntityColumn addValueColumn(String columnName) {
 		EntityColumn column = buildColumn(VALUE_COLUMN);
+		column.addSelf();
 		column.setName(columnName);
 		return column;
 	}
diff --git a/tools/org.eclipse.persistence.tools.mapping/src/org/eclipse/persistence/tools/mapping/orm/dom/ElementCollectionMapping.java b/tools/org.eclipse.persistence.tools.mapping/src/org/eclipse/persistence/tools/mapping/orm/dom/ElementCollectionMapping.java
index 0a2b64d..92b7f67 100644
--- a/tools/org.eclipse.persistence.tools.mapping/src/org/eclipse/persistence/tools/mapping/orm/dom/ElementCollectionMapping.java
+++ b/tools/org.eclipse.persistence.tools.mapping/src/org/eclipse/persistence/tools/mapping/orm/dom/ElementCollectionMapping.java
@@ -71,6 +71,7 @@
 	@Override
 	public ExternalAttributeOverride addAttributeOverride(String name) {
 		AttributeOverride attributeOverride = buildAttributeOverride(-1);
+		attributeOverride.addSelf();
 		attributeOverride.setName(name);
 		return attributeOverride;
 	}
@@ -141,6 +142,7 @@
 	@Override
 	public ExternalJoinColumn addMapKeyJoinColumn(String name) {
 		JoinColumn joinColumn = buildJoinColumn(MAP_KEY_JOIN_COLUMN, -1);
+		joinColumn.addSelf();
 		joinColumn.setName(name);
 		return joinColumn;
 	}
diff --git a/tools/org.eclipse.persistence.tools.mapping/src/org/eclipse/persistence/tools/mapping/orm/dom/Embeddable.java b/tools/org.eclipse.persistence.tools.mapping/src/org/eclipse/persistence/tools/mapping/orm/dom/Embeddable.java
index e1d63dd..6fcf39a 100644
--- a/tools/org.eclipse.persistence.tools.mapping/src/org/eclipse/persistence/tools/mapping/orm/dom/Embeddable.java
+++ b/tools/org.eclipse.persistence.tools.mapping/src/org/eclipse/persistence/tools/mapping/orm/dom/Embeddable.java
@@ -86,6 +86,7 @@
 	@Override
 	public final ExternalAccessMethods addAccessMethods(String getMethodName, String setMethodName) {
 		AccessMethods accessMethods = buildAccessMethods();
+		accessMethods.addSelf();
 		accessMethods.setGetMethod(getMethodName);
 		accessMethods.setSetMethod(setMethodName);
 		return accessMethods;
@@ -97,6 +98,7 @@
 	@Override
 	public final ExternalBasicCollectionMapping addBasicCollectionMapping(String name) {
 		BasicCollectionMapping mapping = buildBasicCollectionMapping(mappingsSize());
+		mapping.addSelf();
 		mapping.setName(name);
 		return mapping;
 	}
@@ -107,6 +109,7 @@
 	@Override
 	public final ExternalBasicMapMapping addBasicMapMapping(String name) {
 		BasicMapMapping mapping = buildBasicMapMapping(mappingsSize());
+		mapping.addSelf();
 		mapping.setName(name);
 		return mapping;
 	}
@@ -117,6 +120,7 @@
 	@Override
 	public final ExternalBasicMapping addBasicMapping(String name) {
 		BasicMapping mapping = buildBasicMapping(mappingsSize());
+		mapping.addSelf();
 		mapping.setName(name);
 		return mapping;
 	}
@@ -137,6 +141,7 @@
 	@Override
 	public final ExternalConverter addConverter(String name) {
 		Converter converter = buildConverter(index);
+		converter.addSelf();
 		converter.setName(name);
 		return converter;
 	}
@@ -157,6 +162,7 @@
 	@Override
 	public final ExternalElementCollectionMapping addElementCollectionMapping(String name) {
 		ElementCollectionMapping mapping = buildElementCollectionMapping(mappingsSize());
+		mapping.addSelf();
 		mapping.setName(name);
 		return mapping;
 	}
@@ -167,6 +173,7 @@
 	@Override
 	public final ExternalEmbeddedMapping addEmbeddedMapping(String name) {
 		EmbeddedMapping mapping = buildEmbeddedMapping(mappingsSize());
+		mapping.addSelf();
 		mapping.setName(name);
 		return mapping;
 	}
@@ -197,6 +204,7 @@
 	@Override
 	public final ExternalManyToManyMapping addManyToManyMapping(String name) {
 		ManyToManyMapping mapping = buildManyToManyMapping(mappingsSize());
+		mapping.addSelf();
 		mapping.setName(name);
 		return mapping;
 	}
@@ -207,6 +215,7 @@
 	@Override
 	public final ExternalManyToOneMapping addManyToOneMapping(String name) {
 		ManyToOneMapping mapping = buildManyToOneMapping(mappingsSize());
+		mapping.addSelf();
 		mapping.setName(name);
 		return mapping;
 	}
@@ -227,6 +236,7 @@
 	@Override
 	public final ExternalObjectTypeConverter addObjectTypeConverter(String name) {
 		ObjectTypeConverter converter = buildObjectTypeConverter(index);
+		converter.addSelf();
 		converter.setName(name);
 		return converter;
 	}
@@ -237,6 +247,7 @@
 	@Override
 	public final ExternalOneToManyMapping addOneToManyMapping(String name) {
 		OneToManyMapping mapping = buildOneToManyMapping(mappingsSize());
+		mapping.addSelf();
 		mapping.setName(name);
 		return mapping;
 	}
@@ -247,6 +258,7 @@
 	@Override
 	public final ExternalOneToOneMapping addOneToOneMapping(String name) {
 		OneToOneMapping mapping = buildOneToOneMapping(mappingsSize());
+		mapping.addSelf();
 		mapping.setName(name);
 		return mapping;
 	}
@@ -257,6 +269,7 @@
 	@Override
 	public final ExternalProperty addProperty(String name, String value) {
 		Property property = buildProperty(index);
+		property.addSelf();
 		property.setName(name);
 		property.setValue(value);
 		return property;
@@ -268,6 +281,7 @@
 	@Override
 	public final ExternalStructConverter addStructConverter(String name) {
 		StructConverter converter = buildStructConverter(index);
+		converter.addSelf();
 		converter.setName(name);
 		return converter;
 	}
@@ -278,6 +292,7 @@
 	@Override
 	public final ExternalTransientMapping addTransientMapping(String name) {
 		TransientMapping mapping = buildTransientMapping(mappingsSize());
+		mapping.addSelf();
 		mapping.setName(name);
 		return mapping;
 	}
@@ -288,6 +303,7 @@
 	@Override
 	public final ExternalTypeConverter addTypeConverter(String name) {
 		TypeConverter converter = buildTypeConverter(index);
+		converter.addSelf();
 		converter.setName(name);
 		return converter;
 	}
@@ -548,7 +564,7 @@
 	 * {@inheritDoc}
 	 */
 	@Override
-	public TextRange getAccessTypeTextRange() {
+	public final TextRange getAccessTypeTextRange() {
 		return getAttributeTextRange(ACCESS);
 	}
 
@@ -564,7 +580,7 @@
 	 * {@inheritDoc}
 	 */
 	@Override
-	public TextRange getChangeTrackingTypeTextRange() {
+	public final TextRange getChangeTrackingTypeTextRange() {
 		return getChildAttributeTextRange(CHANGE_TRACKING, TYPE);
 	}
 
@@ -580,7 +596,7 @@
 	 * {@inheritDoc}
 	 */
 	@Override
-	public TextRange getClassNameTextRange() {
+	public final TextRange getClassNameTextRange() {
 		return getAttributeTextRange(CLASS);
 	}
 
@@ -643,7 +659,7 @@
 	 * {@inheritDoc}
 	 */
 	@Override
-	public TextRange getCustomizerClassNameTextRange() {
+	public final TextRange getCustomizerClassNameTextRange() {
 		return getChildAttributeTextRange(CUSTOMIZER, CLASS);
 	}
 
@@ -659,7 +675,7 @@
 	 * {@inheritDoc}
 	 */
 	@Override
-	public TextRange getDescriptionTextRange() {
+	public final TextRange getDescriptionTextRange() {
 		return getChildTextNodeTextRange(DESCRIPTION);
 	}
 
@@ -726,15 +742,11 @@
 		return this.mappingElementNamesOrder;
 	}
 
-	public final List<ExternalMapping> getMappings() {
-		return ListTools.list(mappings());
-	}
-
 	/**
 	 * {@inheritDoc}
 	 */
 	@Override
-	public TextRange getMetadataCompleteTextRange() {
+	public final TextRange getMetadataCompleteTextRange() {
 		return getAttributeTextRange(METADATA_COMPLETE);
 	}
 
@@ -768,7 +780,7 @@
 	 * {@inheritDoc}
 	 */
 	@Override
-	public List<ExternalProperty> getProperties(String name) {
+	public final List<ExternalProperty> getProperties(String name) {
 		return null;
 	}
 
@@ -789,7 +801,7 @@
 	 * {@inheritDoc}
 	 */
 	@Override
-	public ExternalProperty getProperty(String name) {
+	public final ExternalProperty getProperty(String name) {
 
 		for (ExternalProperty property : properties()) {
 			if (ObjectTools.equals(property.getName(), name)) {
@@ -804,7 +816,7 @@
 	 * {@inheritDoc}
 	 */
 	@Override
-	public ExternalProperty getProperty(String name, int index) {
+	public final ExternalProperty getProperty(String name, int index) {
 
 		ExternalProperty property = getProperty(index);
 
@@ -819,7 +831,7 @@
 	 * {@inheritDoc}
 	 */
 	@Override
-	public ExternalProperty getProperty(String name, String value) {
+	public final ExternalProperty getProperty(String name, String value) {
 
 		for (ExternalProperty property : properties()) {
 			if (ObjectTools.equals(property.getName(),  name) &&
@@ -836,7 +848,7 @@
 	 * {@inheritDoc}
 	 */
 	@Override
-	public TextRange getPropertyNameTextRange(String name) {
+	public final TextRange getPropertyNameTextRange(String name) {
 
 		for (ExternalProperty property : properties()) {
 			if (ObjectTools.equals(property.getName(), name)) {
@@ -851,7 +863,7 @@
 	 * {@inheritDoc}
 	 */
 	@Override
-	public TextRange getPropertyTextRange(String name) {
+	public final TextRange getPropertyTextRange(String name) {
 
 		for (ExternalProperty property : properties()) {
 			if (ObjectTools.equals(property.getName(), name)) {
@@ -866,7 +878,7 @@
 	 * {@inheritDoc}
 	 */
 	@Override
-	public TextRange getPropertyTextRange(String name, String value) {
+	public final TextRange getPropertyTextRange(String name, String value) {
 
 		for (ExternalProperty property : properties()) {
 
@@ -884,7 +896,7 @@
 	 * {@inheritDoc}
 	 */
 	@Override
-	public TextRange getPropertyValueTextRange(String name) {
+	public final TextRange getPropertyValueTextRange(String name) {
 
 		for (ExternalProperty property : properties()) {
 			if (ObjectTools.equals(property.getName(), name)) {
@@ -1054,7 +1066,7 @@
 	 * {@inheritDoc}
 	 */
 	@Override
-	public int propertiesSize(String name) {
+	public final int propertiesSize(String name) {
 
 		int count = 0;
 
@@ -1155,7 +1167,7 @@
 	 * {@inheritDoc}
 	 */
 	@Override
-	public void removeProperty(String name) {
+	public final void removeProperty(String name) {
 		Property property = (Property) getProperty(name);
 		property.removeSelf();
 	}
@@ -1164,7 +1176,9 @@
 	 * {@inheritDoc}
 	 */
 	@Override
-	public void removeProperty(String name, String value) {
+	public final void removeProperty(String name, String value) {
+		Property property = (Property) getProperty(name, value);
+		property.removeSelf();
 	}
 
 	/**
@@ -1197,7 +1211,7 @@
 	 * {@inheritDoc}
 	 */
 	@Override
-	public void setAccessType(AccessType type) {
+	public final void setAccessType(AccessType type) {
 		setAttribute(ACCESS, type);
 	}
 
diff --git a/tools/org.eclipse.persistence.tools.mapping/src/org/eclipse/persistence/tools/mapping/orm/dom/EmbeddedIDMapping.java b/tools/org.eclipse.persistence.tools.mapping/src/org/eclipse/persistence/tools/mapping/orm/dom/EmbeddedIDMapping.java
index 21e17df..13b52ff 100644
--- a/tools/org.eclipse.persistence.tools.mapping/src/org/eclipse/persistence/tools/mapping/orm/dom/EmbeddedIDMapping.java
+++ b/tools/org.eclipse.persistence.tools.mapping/src/org/eclipse/persistence/tools/mapping/orm/dom/EmbeddedIDMapping.java
@@ -44,6 +44,7 @@
 	@Override
 	public ExternalAttributeOverride addAttributeOverride(String name) {
 		AttributeOverride attributeOverride = buildAttributeOverride(-1);
+		attributeOverride.addSelf();
 		attributeOverride.setName(name);
 		return attributeOverride;
 	}
diff --git a/tools/org.eclipse.persistence.tools.mapping/src/org/eclipse/persistence/tools/mapping/orm/dom/Entity.java b/tools/org.eclipse.persistence.tools.mapping/src/org/eclipse/persistence/tools/mapping/orm/dom/Entity.java
index e293fc2..fd188e7 100644
--- a/tools/org.eclipse.persistence.tools.mapping/src/org/eclipse/persistence/tools/mapping/orm/dom/Entity.java
+++ b/tools/org.eclipse.persistence.tools.mapping/src/org/eclipse/persistence/tools/mapping/orm/dom/Entity.java
@@ -59,6 +59,7 @@
 	@Override
 	public ExternalAssociationOverride addAssociationOverride(String name) {
 		AssociationOverride associationOverride = buildAssociationOverride(-1);
+		associationOverride.addSelf();
 		associationOverride.setName(name);
 		return associationOverride;
 	}
@@ -69,6 +70,7 @@
 	@Override
 	public ExternalAttributeOverride addAttributeOverride(String name) {
 		AttributeOverride attributeOverride = buildAttributeOverride(-1);
+		attributeOverride.addSelf();
 		attributeOverride.setName(name);
 		return attributeOverride;
 	}
@@ -96,6 +98,7 @@
 	@Override
 	public ExternalNamedQuery addNamedQuery(String name) {
 		NamedQuery namedQuery = buildNamedQuery(-1);
+		namedQuery.addSelf();
 		namedQuery.setName(name);
 		return namedQuery;
 	}
@@ -106,6 +109,7 @@
 	@Override
 	public ExternalNativeQuery addNativeQuery(String name) {
 		NamedNativeQuery namedNativeQuery = buildNamedNativeQuery(-1);
+		namedNativeQuery.addSelf();
 		namedNativeQuery.setName(name);
 		return namedNativeQuery;
 	}
@@ -116,6 +120,7 @@
 	@Override
 	public ExternalPrimaryKeyJoinColumn addPrimaryKeyJoinColumn(String name) {
 		PrimaryKeyJoinColumn pkJoinColumn = buildPrimaryKeyJoinColumn(-1);
+		pkJoinColumn.addSelf();
 		pkJoinColumn.setName(name);
 		return pkJoinColumn;
 	}
@@ -137,6 +142,7 @@
 	@Override
 	public ExternalSecondaryTable addSecondaryTable(String name, String catalog, String schema) {
 		SecondaryTable secondaryTable = buildSecondaryTable(-1);
+		secondaryTable.addSelf();
 		secondaryTable.setName(name);
 		secondaryTable.setCatalogName(catalog);
 		secondaryTable.setSchemaName(schema);
@@ -149,6 +155,7 @@
 	@Override
 	public ExternalSQLResultSetMapping addSqlResultSetMapping(String name) {
 		SQLResultSetMapping sqlResultSetMapping = buildSqlResultSetMapping(-1);
+		sqlResultSetMapping.addSelf();
 		sqlResultSetMapping.setName(name);
 		return sqlResultSetMapping;
 	}
@@ -159,6 +166,7 @@
 	@Override
 	public ExternalStoredProcedureQuery addStoredProcedureQuery(String name, String procedureName) {
 		NamedStoredProcedureQuery storedProcedureQuery = buildStoredProcedureQuery(-1);
+		storedProcedureQuery.addSelf();
 		storedProcedureQuery.setName(name);
 		storedProcedureQuery.setProcedureName(procedureName);
 		return storedProcedureQuery;
diff --git a/tools/org.eclipse.persistence.tools.mapping/src/org/eclipse/persistence/tools/mapping/orm/dom/EntityResult.java b/tools/org.eclipse.persistence.tools.mapping/src/org/eclipse/persistence/tools/mapping/orm/dom/EntityResult.java
index 1eac3f5..8ade1f5 100644
--- a/tools/org.eclipse.persistence.tools.mapping/src/org/eclipse/persistence/tools/mapping/orm/dom/EntityResult.java
+++ b/tools/org.eclipse.persistence.tools.mapping/src/org/eclipse/persistence/tools/mapping/orm/dom/EntityResult.java
@@ -53,6 +53,7 @@
 	@Override
 	public ExternalFieldResult addFieldResult(String name) {
 		FieldResult fieldResult = buildFieldResult(-1);
+		fieldResult.addSelf();
 		fieldResult.setName(name);
 		return fieldResult;
 	}
diff --git a/tools/org.eclipse.persistence.tools.mapping/src/org/eclipse/persistence/tools/mapping/orm/dom/JoinTable.java b/tools/org.eclipse.persistence.tools.mapping/src/org/eclipse/persistence/tools/mapping/orm/dom/JoinTable.java
index 5b8f25f..2bbf6fe 100644
--- a/tools/org.eclipse.persistence.tools.mapping/src/org/eclipse/persistence/tools/mapping/orm/dom/JoinTable.java
+++ b/tools/org.eclipse.persistence.tools.mapping/src/org/eclipse/persistence/tools/mapping/orm/dom/JoinTable.java
@@ -52,6 +52,7 @@
 	@Override
 	public ExternalInverseJoinColumn addInverseJoinColumn(String name) {
 		InverseJoinColumn joinColumn = buildInverseJoinColumn(-1);
+		joinColumn.addSelf();
 		joinColumn.setName(name);
 		return joinColumn;
 	}
@@ -62,6 +63,7 @@
 	@Override
 	public ExternalJoinColumn addJoinColumn(String name) {
 		JoinColumn joinColumn = buildJoinColumn(-1);
+		joinColumn.addSelf();
 		joinColumn.setName(name);
 		return joinColumn;
 	}
diff --git a/tools/org.eclipse.persistence.tools.mapping/src/org/eclipse/persistence/tools/mapping/orm/dom/ManyToManyMapping.java b/tools/org.eclipse.persistence.tools.mapping/src/org/eclipse/persistence/tools/mapping/orm/dom/ManyToManyMapping.java
index e899cd0..1a9ba7d 100644
--- a/tools/org.eclipse.persistence.tools.mapping/src/org/eclipse/persistence/tools/mapping/orm/dom/ManyToManyMapping.java
+++ b/tools/org.eclipse.persistence.tools.mapping/src/org/eclipse/persistence/tools/mapping/orm/dom/ManyToManyMapping.java
@@ -44,7 +44,8 @@
 	 */
 	@Override
 	public ExternalNoSqlJoinField addJoinField(String name) {
-		ExternalNoSqlJoinField joinField = buildJoinField(-1);
+		NoSqlJoinField joinField = buildJoinField(-1);
+		joinField.addSelf();
 		joinField.setName(name);
 		return joinField;
 	}
diff --git a/tools/org.eclipse.persistence.tools.mapping/src/org/eclipse/persistence/tools/mapping/orm/dom/ManyToOneMapping.java b/tools/org.eclipse.persistence.tools.mapping/src/org/eclipse/persistence/tools/mapping/orm/dom/ManyToOneMapping.java
index 4126fa0..8f1a3d4 100644
--- a/tools/org.eclipse.persistence.tools.mapping/src/org/eclipse/persistence/tools/mapping/orm/dom/ManyToOneMapping.java
+++ b/tools/org.eclipse.persistence.tools.mapping/src/org/eclipse/persistence/tools/mapping/orm/dom/ManyToOneMapping.java
@@ -46,6 +46,7 @@
 	@Override
 	public ExternalJoinColumn addJoinColumn(String name) {
 		JoinColumn joinColumn = buildJoinColumn(-1);
+		joinColumn.addSelf();
 		joinColumn.setName(name);
 		return joinColumn;
 	}
@@ -55,7 +56,8 @@
 	 */
 	@Override
 	public ExternalNoSqlJoinField addJoinField(String name) {
-		ExternalNoSqlJoinField joinField = buildJoinField(-1);
+		NoSqlJoinField joinField = buildJoinField(-1);
+		joinField.addSelf();
 		joinField.setName(name);
 		return joinField;
 	}
@@ -96,7 +98,7 @@
 		return new JoinColumn(this, JoinColumn.JOIN_COLUMN, index);
 	}
 
-	private ExternalNoSqlJoinField buildJoinField(int index) {
+	private NoSqlJoinField buildJoinField(int index) {
 		return new NoSqlJoinField(this, index);
 	}
 
diff --git a/tools/org.eclipse.persistence.tools.mapping/src/org/eclipse/persistence/tools/mapping/orm/dom/MappedSuperClassEntity.java b/tools/org.eclipse.persistence.tools.mapping/src/org/eclipse/persistence/tools/mapping/orm/dom/MappedSuperClassEntity.java
index 94e0612..11cc63e 100644
--- a/tools/org.eclipse.persistence.tools.mapping/src/org/eclipse/persistence/tools/mapping/orm/dom/MappedSuperClassEntity.java
+++ b/tools/org.eclipse.persistence.tools.mapping/src/org/eclipse/persistence/tools/mapping/orm/dom/MappedSuperClassEntity.java
@@ -72,6 +72,7 @@
 	@Override
 	public final ExternalEmbeddedIDMapping addEmbeddedIdMapping(String name) {
 		EmbeddedIDMapping mapping = buildEmbeddedIdMapping(mappingsSize());
+		mapping.addSelf();
 		mapping.setName(name);
 		return mapping;
 	}
@@ -82,6 +83,7 @@
 	@Override
 	public final ExternalEntityListener addEntityListener(String name) {
 		EntityListener entityListener = buildEntityListener(-1);
+		entityListener.addSelf();
 		entityListener.setClassName(name);
 		return entityListener;
 	}
@@ -92,6 +94,7 @@
 	@Override
 	public final ExternalFetchGroup addFetchGroup(String name) {
 		FetchGroup fetchGroup = buildFetchGroup(-1);
+		fetchGroup.addSelf();
 		fetchGroup.setName(name);
 		return fetchGroup;
 	}
@@ -102,6 +105,7 @@
 	@Override
 	public final ExternalIDMapping addIdMapping(String name) {
 		IdMapping mapping = buildIdMapping(mappingsSize());
+		mapping.addSelf();
 		mapping.setName(name);
 		return mapping;
 	}
@@ -162,6 +166,7 @@
 	@Override
 	public final ExternalTransformationMapping addTransformationMapping(String name) {
 		TransformationMapping mapping = buildTransformationMapping(mappingsSize());
+		mapping.addSelf();
 		mapping.setName(name);
 		return mapping;
 	}
@@ -172,6 +177,7 @@
 	@Override
 	public final ExternalVariableOneToOneMapping addVariableOneToOneMapping(String name) {
 		VariableOneToOneMapping mapping = buildVariableOneToOneMapping(mappingsSize());
+		mapping.addSelf();
 		mapping.setName(name);
 		return mapping;
 	}
@@ -182,6 +188,7 @@
 	@Override
 	public final ExternalVersionMapping addVersionMapping(String name) {
 		VersionMapping mapping = buildVersionMapping(mappingsSize());
+		mapping.addSelf();
 		mapping.setName(name);
 		return mapping;
 	}
diff --git a/tools/org.eclipse.persistence.tools.mapping/src/org/eclipse/persistence/tools/mapping/orm/dom/NonTransientMapping.java b/tools/org.eclipse.persistence.tools.mapping/src/org/eclipse/persistence/tools/mapping/orm/dom/NonTransientMapping.java
index ba27ac4..5a04603 100644
--- a/tools/org.eclipse.persistence.tools.mapping/src/org/eclipse/persistence/tools/mapping/orm/dom/NonTransientMapping.java
+++ b/tools/org.eclipse.persistence.tools.mapping/src/org/eclipse/persistence/tools/mapping/orm/dom/NonTransientMapping.java
@@ -49,6 +49,7 @@
 	@Override
 	public final ExternalAccessMethods addAccessMethods(String getMethodName, String setMethodName) {
 		AccessMethods accessMethods = buildAccessMethods();
+		accessMethods.addSelf();
 		accessMethods.setGetMethod(getMethodName);
 		accessMethods.setSetMethod(setMethodName);
 		return accessMethods;
@@ -60,6 +61,7 @@
 	@Override
 	public final ExternalProperty addProperty(String name, String value) {
 		Property property = buildProperty(-1);
+		property.addSelf();
 		property.setName(name);
 		property.setValue(value);
 		return property;
diff --git a/tools/org.eclipse.persistence.tools.mapping/src/org/eclipse/persistence/tools/mapping/orm/dom/ORMConfiguration.java b/tools/org.eclipse.persistence.tools.mapping/src/org/eclipse/persistence/tools/mapping/orm/dom/ORMConfiguration.java
index 6a19288..fb87b75 100644
--- a/tools/org.eclipse.persistence.tools.mapping/src/org/eclipse/persistence/tools/mapping/orm/dom/ORMConfiguration.java
+++ b/tools/org.eclipse.persistence.tools.mapping/src/org/eclipse/persistence/tools/mapping/orm/dom/ORMConfiguration.java
@@ -181,7 +181,7 @@
 	 */
 	@Override
 	public Element addSelf(String elementName, List<String> elementNamesOrder) {
-		return getHelper().buildORMConfiguration(this);
+		return helper.buildORMConfiguration(this);
 	}
 
 	/**
diff --git a/tools/org.eclipse.persistence.tools.mapping/src/org/eclipse/persistence/tools/mapping/orm/dom/ObjectCollectionMapping.java b/tools/org.eclipse.persistence.tools.mapping/src/org/eclipse/persistence/tools/mapping/orm/dom/ObjectCollectionMapping.java
index a04b7d4..7d2222b 100644
--- a/tools/org.eclipse.persistence.tools.mapping/src/org/eclipse/persistence/tools/mapping/orm/dom/ObjectCollectionMapping.java
+++ b/tools/org.eclipse.persistence.tools.mapping/src/org/eclipse/persistence/tools/mapping/orm/dom/ObjectCollectionMapping.java
@@ -82,6 +82,7 @@
 	@Override
 	public ExternalJoinColumn addMapKeyJoinColumn(String name) {
 		JoinColumn joinColumn = buildJoinColumn(MAP_KEY_JOIN_COLUMN, -1);
+		joinColumn.addSelf();
 		joinColumn.setName(name);
 		return joinColumn;
 	}
diff --git a/tools/org.eclipse.persistence.tools.mapping/src/org/eclipse/persistence/tools/mapping/orm/dom/OneToManyMapping.java b/tools/org.eclipse.persistence.tools.mapping/src/org/eclipse/persistence/tools/mapping/orm/dom/OneToManyMapping.java
index 7ac2fe1..e363b8d 100644
--- a/tools/org.eclipse.persistence.tools.mapping/src/org/eclipse/persistence/tools/mapping/orm/dom/OneToManyMapping.java
+++ b/tools/org.eclipse.persistence.tools.mapping/src/org/eclipse/persistence/tools/mapping/orm/dom/OneToManyMapping.java
@@ -49,6 +49,7 @@
 	@Override
 	public ExternalJoinColumn addJoinColumn(String name) {
 		JoinColumn joinColumn = buildJoinColumn(JoinColumn.JOIN_COLUMN, -1);
+		joinColumn.addSelf();
 		joinColumn.setName(name);
 		return joinColumn;
 	}
@@ -58,7 +59,8 @@
 	 */
 	@Override
 	public ExternalNoSqlJoinField addJoinField(String name) {
-		ExternalNoSqlJoinField joinField = buildJoinField(-1);
+		NoSqlJoinField joinField = buildJoinField(-1);
+		joinField.addSelf();
 		joinField.setName(name);
 		return joinField;
 	}
@@ -108,7 +110,7 @@
 		return names;
 	}
 
-	private ExternalNoSqlJoinField buildJoinField(int index) {
+	private NoSqlJoinField buildJoinField(int index) {
 		return new NoSqlJoinField(this, index);
 	}
 
diff --git a/tools/org.eclipse.persistence.tools.mapping/src/org/eclipse/persistence/tools/mapping/orm/dom/OneToOneMapping.java b/tools/org.eclipse.persistence.tools.mapping/src/org/eclipse/persistence/tools/mapping/orm/dom/OneToOneMapping.java
index f1290cb..36cffc0 100644
--- a/tools/org.eclipse.persistence.tools.mapping/src/org/eclipse/persistence/tools/mapping/orm/dom/OneToOneMapping.java
+++ b/tools/org.eclipse.persistence.tools.mapping/src/org/eclipse/persistence/tools/mapping/orm/dom/OneToOneMapping.java
@@ -48,6 +48,7 @@
 	@Override
 	public ExternalJoinColumn addJoinColumn(String name) {
 		JoinColumn joinColumn = buildJoinColumn(-1);
+		joinColumn.addSelf();
 		joinColumn.setName(name);
 		return joinColumn;
 	}
@@ -57,7 +58,8 @@
 	 */
 	@Override
 	public ExternalNoSqlJoinField addJoinField(String name) {
-		ExternalNoSqlJoinField joinField = buildJoinField(-1);
+		NoSqlJoinField joinField = buildJoinField(-1);
+		joinField.addSelf();
 		joinField.setName(name);
 		return joinField;
 	}
@@ -68,6 +70,7 @@
 	@Override
 	public ExternalPrimaryKeyJoinColumn addPrimaryKeyJoinColumn(String name) {
 		PrimaryKeyJoinColumn pkJoinColumn = buildPrimaryKeyJoinColumn(-1);
+		pkJoinColumn.addSelf();
 		pkJoinColumn.setName(name);
 		return pkJoinColumn;
 	}
@@ -112,7 +115,7 @@
 		return new JoinColumn(this, JoinColumn.JOIN_COLUMN, index);
 	}
 
-	private ExternalNoSqlJoinField buildJoinField(int index) {
+	private NoSqlJoinField buildJoinField(int index) {
 		return new NoSqlJoinField(this, index);
 	}
 
diff --git a/tools/org.eclipse.persistence.tools.mapping/src/org/eclipse/persistence/tools/mapping/orm/dom/OptimisticLocking.java b/tools/org.eclipse.persistence.tools.mapping/src/org/eclipse/persistence/tools/mapping/orm/dom/OptimisticLocking.java
index fed35cb..f9b6d85 100644
--- a/tools/org.eclipse.persistence.tools.mapping/src/org/eclipse/persistence/tools/mapping/orm/dom/OptimisticLocking.java
+++ b/tools/org.eclipse.persistence.tools.mapping/src/org/eclipse/persistence/tools/mapping/orm/dom/OptimisticLocking.java
@@ -47,6 +47,7 @@
 	@Override
 	public ExternalEntityColumn addColumn(String columnName) {
 		EntityColumn column = buildColumn(-1);
+		column.addSelf();
 		column.setName(columnName);
 		return column;
 	}
diff --git a/tools/org.eclipse.persistence.tools.mapping/src/org/eclipse/persistence/tools/mapping/orm/dom/PersistenceUnit.java b/tools/org.eclipse.persistence.tools.mapping/src/org/eclipse/persistence/tools/mapping/orm/dom/PersistenceUnit.java
index 77bcb58..1fd465b 100644
--- a/tools/org.eclipse.persistence.tools.mapping/src/org/eclipse/persistence/tools/mapping/orm/dom/PersistenceUnit.java
+++ b/tools/org.eclipse.persistence.tools.mapping/src/org/eclipse/persistence/tools/mapping/orm/dom/PersistenceUnit.java
@@ -59,6 +59,7 @@
 	@Override
 	public ExternalEntityListener addEntityListener(String className) {
 		EntityListener entityListener = buildEntityListener(-1);
+		entityListener.addSelf();
 		entityListener.setClassName(className);
 		return entityListener;
 	}
diff --git a/tools/org.eclipse.persistence.tools.mapping/src/org/eclipse/persistence/tools/mapping/orm/dom/PrimaryKey.java b/tools/org.eclipse.persistence.tools.mapping/src/org/eclipse/persistence/tools/mapping/orm/dom/PrimaryKey.java
index aeed572..99073f4 100644
--- a/tools/org.eclipse.persistence.tools.mapping/src/org/eclipse/persistence/tools/mapping/orm/dom/PrimaryKey.java
+++ b/tools/org.eclipse.persistence.tools.mapping/src/org/eclipse/persistence/tools/mapping/orm/dom/PrimaryKey.java
@@ -48,6 +48,7 @@
 	@Override
 	public ExternalEntityColumn addColumn(String columnName) {
 		EntityColumn column = buildColumn(-1);
+		column.addSelf();
 		column.setName(columnName);
 		return column;
 	}
diff --git a/tools/org.eclipse.persistence.tools.mapping/src/org/eclipse/persistence/tools/mapping/orm/dom/SQLResultSetMapping.java b/tools/org.eclipse.persistence.tools.mapping/src/org/eclipse/persistence/tools/mapping/orm/dom/SQLResultSetMapping.java
index 596ef04..14a0d94 100644
--- a/tools/org.eclipse.persistence.tools.mapping/src/org/eclipse/persistence/tools/mapping/orm/dom/SQLResultSetMapping.java
+++ b/tools/org.eclipse.persistence.tools.mapping/src/org/eclipse/persistence/tools/mapping/orm/dom/SQLResultSetMapping.java
@@ -55,6 +55,7 @@
 	@Override
 	public ExternalColumnResult addColumnResult(String name) {
 		ColumnResult entityResult = buildColumnResult(-1);
+		entityResult.addSelf();
 		entityResult.setName(name);
 		return entityResult;
 	}
@@ -65,6 +66,7 @@
 	@Override
 	public ExternalEntityResult addEntityResult(String className) {
 		EntityResult entityResult = buildEntityResult(index);
+		entityResult.addSelf();
 		entityResult.setEntityClassName(className);
 		return entityResult;
 	}
diff --git a/tools/org.eclipse.persistence.tools.mapping/src/org/eclipse/persistence/tools/mapping/orm/dom/SecondaryTable.java b/tools/org.eclipse.persistence.tools.mapping/src/org/eclipse/persistence/tools/mapping/orm/dom/SecondaryTable.java
index db64e37..03cabad 100644
--- a/tools/org.eclipse.persistence.tools.mapping/src/org/eclipse/persistence/tools/mapping/orm/dom/SecondaryTable.java
+++ b/tools/org.eclipse.persistence.tools.mapping/src/org/eclipse/persistence/tools/mapping/orm/dom/SecondaryTable.java
@@ -51,6 +51,7 @@
 	@Override
 	public ExternalPrimaryKeyJoinColumn addPrimaryKeyJoinColumn(String name) {
 		PrimaryKeyJoinColumn primaryKeyJoinColumn = buildPrimaryKeyJoinColumn(-1);
+		primaryKeyJoinColumn.addSelf();
 		primaryKeyJoinColumn.setName(name);
 		return primaryKeyJoinColumn;
 	}
diff --git a/tools/org.eclipse.persistence.tools.mapping/src/org/eclipse/persistence/tools/mapping/orm/dom/Table.java b/tools/org.eclipse.persistence.tools.mapping/src/org/eclipse/persistence/tools/mapping/orm/dom/Table.java
index 8a7839d..29137db 100644
--- a/tools/org.eclipse.persistence.tools.mapping/src/org/eclipse/persistence/tools/mapping/orm/dom/Table.java
+++ b/tools/org.eclipse.persistence.tools.mapping/src/org/eclipse/persistence/tools/mapping/orm/dom/Table.java
@@ -47,6 +47,7 @@
 	@Override
 	public ExternalUniqueConstraint addUniqueConstraint(ListIterable<String> columnNames) {
 		UniqueConstraint uniqueConstraint = buildUniqueConstraint(-1);
+		uniqueConstraint.addSelf();
 		uniqueConstraint.setColumnNames(columnNames);
 		return uniqueConstraint;
 	}
diff --git a/tools/org.eclipse.persistence.tools.mapping/src/org/eclipse/persistence/tools/mapping/orm/dom/TableGenerator.java b/tools/org.eclipse.persistence.tools.mapping/src/org/eclipse/persistence/tools/mapping/orm/dom/TableGenerator.java
index 993d510..8e4ddc4 100644
--- a/tools/org.eclipse.persistence.tools.mapping/src/org/eclipse/persistence/tools/mapping/orm/dom/TableGenerator.java
+++ b/tools/org.eclipse.persistence.tools.mapping/src/org/eclipse/persistence/tools/mapping/orm/dom/TableGenerator.java
@@ -51,6 +51,7 @@
 	@Override
 	public ExternalUniqueConstraint addUniqueConstraint(ListIterable<String> columnNames) {
 		UniqueConstraint uniqueConstraint = buildUniqueConstraint(-1);
+		uniqueConstraint.addSelf();
 		uniqueConstraint.setColumnNames(columnNames);
 		return uniqueConstraint;
 	}
diff --git a/tools/org.eclipse.persistence.tools.mapping/src/org/eclipse/persistence/tools/mapping/orm/dom/VariableOneToOneMapping.java b/tools/org.eclipse.persistence.tools.mapping/src/org/eclipse/persistence/tools/mapping/orm/dom/VariableOneToOneMapping.java
index 8b331a7..6220b22 100644
--- a/tools/org.eclipse.persistence.tools.mapping/src/org/eclipse/persistence/tools/mapping/orm/dom/VariableOneToOneMapping.java
+++ b/tools/org.eclipse.persistence.tools.mapping/src/org/eclipse/persistence/tools/mapping/orm/dom/VariableOneToOneMapping.java
@@ -72,6 +72,7 @@
 	@Override
 	public ExternalDiscriminatorClass addDiscriminatorClass(String discrimator, String value) {
 		DiscriminatorClass discriminatorClass = buildDiscriminatorClass(-1);
+		discriminatorClass.addSelf();
 		discriminatorClass.setDiscriminator(discrimator);
 		discriminatorClass.setValue(value);
 		return discriminatorClass;
@@ -93,6 +94,7 @@
 	@Override
 	public ExternalJoinColumn addJoinColumn(String name) {
 		JoinColumn joinColumn = buildJoinColumn(-1);
+		joinColumn.addSelf();
 		joinColumn.setName(name);
 		return joinColumn;
 	}
diff --git a/tools/org.eclipse.persistence.tools.mapping/src/org/eclipse/persistence/tools/mapping/persistence/dom/PersistenceConfiguration.java b/tools/org.eclipse.persistence.tools.mapping/src/org/eclipse/persistence/tools/mapping/persistence/dom/PersistenceConfiguration.java
index 2a87f14..9697e3d 100644
--- a/tools/org.eclipse.persistence.tools.mapping/src/org/eclipse/persistence/tools/mapping/persistence/dom/PersistenceConfiguration.java
+++ b/tools/org.eclipse.persistence.tools.mapping/src/org/eclipse/persistence/tools/mapping/persistence/dom/PersistenceConfiguration.java
@@ -55,6 +55,7 @@
 	@Override
 	public ExternalPersistenceUnit addPersistenceUnit(String name) {
 		PersistenceUnit persistenceUnit = buildPersistenceUnit(-1);
+		persistenceUnit.addSelf();
 		persistenceUnit.setName(name);
 		return persistenceUnit;
 	}
@@ -72,7 +73,7 @@
 	 */
 	@Override
 	public Element addSelf(String elementName, List<String> elementNamesOrder) {
-		return getHelper().buildPersistenceConfiguration(this);
+		return helper.buildPersistenceConfiguration(this);
 	}
 
 	private PersistenceUnit buildPersistenceUnit(int index) {
diff --git a/tools/org.eclipse.persistence.tools.mapping/src/org/eclipse/persistence/tools/mapping/persistence/dom/PersistenceUnit.java b/tools/org.eclipse.persistence.tools.mapping/src/org/eclipse/persistence/tools/mapping/persistence/dom/PersistenceUnit.java
index 67f3cd8..317659b 100644
--- a/tools/org.eclipse.persistence.tools.mapping/src/org/eclipse/persistence/tools/mapping/persistence/dom/PersistenceUnit.java
+++ b/tools/org.eclipse.persistence.tools.mapping/src/org/eclipse/persistence/tools/mapping/persistence/dom/PersistenceUnit.java
@@ -57,6 +57,7 @@
 	@Override
 	public ExternalProperty addProperty(String name, String value) {
 		Property property = buildProperty(-1);
+		property.addSelf();
 		property.setName(name);
 		property.setValue(value);
 		return property;