document = DocumentMap

DocumentMap.body = BodyMap

BodyMap.ObjectIndex = ObjectIndexMap
BodyMap.Project = ProjectMap
BodyMap.RepositoryObject = RepositoryObjectMap

# These objects are mapping by class of RepositoryObject declared in body of XML document
BodyMap.Class = ClassMap
BodyMap.Interface = InterfaceMap
BodyMap.Method = MethodMap
BodyMap.Field = FieldMap
BodyMap.Package = PackageMap
BodyMap.ExplicitParameter = ExplicitParameterMap
BodyMap.ImplicitParameter = ImplicitParameterMap
BodyMap.TypeParameter = TypeParameterMap
BodyMap.MethodTypeParameter = MethodTypeParameterMap
BodyMap.Condition = ConditionMap
BodyMap.TextDocument = TextDocumentMap

ProjectMap.RepositoryObject = ProjectListMap
# These properites would be also processed by ProjectMap
ProjectMap.TextEncoding = ProjectMap
ProjectMap.String = ProjectMap
ProjectMap.Relationship = ProjectMap

ClassMap.String = RepositoryObjectPropertyMap
ClassMap.Boolean = RepositoryObjectPropertyMap
ClassMap.TimeStamp = RepositoryObjectPropertyMap
ClassMap.Reference = ImportsMap
ClassMap.Enumeration = RepositoryObjectPropertyMap
ClassMap.Relationship = ClassRelationshipMap
ClassMap.RepositoryObject = ProjectRepositoryObjectMap
ClassMap.Package = ProjectRepositoryObjectMap
ClassMap.NonprocessedObject = CopyRelationshipMap

InterfaceMap.String = RepositoryObjectPropertyMap
InterfaceMap.Boolean = RepositoryObjectPropertyMap
InterfaceMap.TimeStamp = RepositoryObjectPropertyMap
InterfaceMap.Reference = ImportsMap
InterfaceMap.Enumeration = RepositoryObjectPropertyMap
InterfaceMap.Relationship = ClassRelationshipMap
InterfaceMap.RepositoryObject = ProjectRepositoryObjectMap
InterfaceMap.Package = ProjectRepositoryObjectMap
InterfaceMap.NonprocessedObject = CopyRelationshipMap

ClassRelationshipMap.Class = RelationToClassMap
ClassRelationshipMap.Interface = RelationToInterfaceMap
ClassRelationshipMap.Field = RelationToFieldMap
ClassRelationshipMap.Method = RelationToMethodMap
ClassRelationshipMap.TypeParameter = RelationToTypeParameterMap
# Other relations from class/interface keep unchanged as properties
ClassRelationshipMap.Relationship = CopyRelationshipMap

#do not process residingPackage or project relationship
ClassRelationshipMap.Package = NullMap
ClassRelationshipMap.Project = NullMap

MethodMap.String = RepositoryObjectPropertyMap
MethodMap.Boolean = RepositoryObjectPropertyMap
MethodMap.Reference = RepositoryObjectPropertyMap
MethodMap.TimeStamp = RepositoryObjectPropertyMap
MethodMap.Enumeration = RepositoryObjectPropertyMap
MethodMap.Relationship = MethodRelationshipMap
MethodMap.RepositoryObject = ProjectRepositoryObjectMap

MethodRelationshipMap.ExplicitParameter = RelationToExplicitParameterMap
MethodRelationshipMap.ImplicitParameter = RelationToImplicitParameterMap
MethodRelationshipMap.MethodTypeParameter = RelationToMethodTypeParameterMap
MethodRelationshipMap.Condition = RelationToConditionMap
MethodRelationshipMap.Project = NullMap
MethodRelationshipMap.Relationship = CopyRelationshipMap

FieldMap.String = FieldPropertyMap
FieldMap.Boolean = RepositoryObjectPropertyMap
FieldMap.Reference = RepositoryObjectPropertyMap
FieldMap.TimeStamp = RepositoryObjectPropertyMap
FieldMap.Enumeration = RepositoryObjectPropertyMap
FieldMap.Relationship = FieldRelationshipMap
FieldMap.RepositoryObject = ProjectRepositoryObjectMap

FieldRelationshipMap.Condition = RelationToConditionMap
FieldRelationshipMap.Relationship = CopyRelationshipMap

PackageMap.String = PackagePropertyMap
PackageMap.Boolean = PackagePropertyMap
PackageMap.Reference = PackagePropertyMap
PackageMap.TimeStamp = PackagePropertyMap
PackageMap.Enumeration = PackagePropertyMap
PackageMap.Relationship = PackagePropertyMap
PackageMap.RepositoryObject = RepositoryObjectPropertyMap
PackageMap.Package = ProjectRepositoryObjectMap

ExplicitParameterMap.String = OperationParameterPropertyMap
ExplicitParameterMap.Boolean = OperationParameterPropertyMap
ExplicitParameterMap.TimeStamp = OperationParameterPropertyMap
ExplicitParameterMap.Reference = OperationParameterPropertyMap
ExplicitParameterMap.Enumeration = OperationParameterPropertyMap

ImplicitParameterMap.String = OperationParameterPropertyMap
ImplicitParameterMap.Boolean = OperationParameterPropertyMap
ImplicitParameterMap.TimeStamp = OperationParameterPropertyMap
ImplicitParameterMap.Reference = OperationParameterPropertyMap
ImplicitParameterMap.Enumeration = OperationParameterPropertyMap

MethodTypeParameterMap.String = RepositoryObjectPropertyMap
MethodTypeParameterMap.Boolean = RepositoryObjectPropertyMap
MethodTypeParameterMap.TimeStamp = RepositoryObjectPropertyMap
MethodTypeParameterMap.Reference = RepositoryObjectPropertyMap
MethodTypeParameterMap.Enumeration = RepositoryObjectPropertyMap

TypeParameterMap.String = SimplePropertyMap
TypeParameterMap.Boolean = RepositoryObjectPropertyMap
TypeParameterMap.TimeStamp = RepositoryObjectPropertyMap
TypeParameterMap.Reference = RepositoryObjectPropertyMap
TypeParameterMap.Enumeration = RepositoryObjectPropertyMap

ConditionMap.String = RepositoryObjectPropertyMap
ConditionMap.Boolean = RepositoryObjectPropertyMap
ConditionMap.TimeStamp = RepositoryObjectPropertyMap
ConditionMap.Reference = RepositoryObjectPropertyMap
ConditionMap.Enumeration = RepositoryObjectPropertyMap

TextDocumentMap.String = NullMap
TextDocumentMap.TimeStamp = NullMap
TextDocumentMap.Package = ProjectRepositoryObjectMap
TextDocumentMap.Relationship = NullMap

# Temporary ignore ObjectKey
ProjectMap.ObjectKey = NullMap
ProjectRepositoryObjectMap.ObjectKey = NullMap
RepositoryObjectPropertyMap.ObjectKey = NullMap
PackagePropertyMap.ObjectKey = NullMap
ClassMap.ObjectKey = NullMap
ClassRelationshipMap.ObjectKey = NullMap
CopyRelationshipMap.ObjectKey = NullMap
InterfaceMap.ObjectKey = NullMap
PackageMap.ObjectKey = NullMap
FieldMap.ObjectKey = NullMap
MethodMap.ObjectKey = NullMap
RelationToClassMap.ObjectKey = NullMap
RelationToInterfaceMap.ObjectKey = NullMap
RelationToFieldMap.ObjectKey = NullMap
RelationToMethodMap.ObjectKey = NullMap
RelationToTypeParameterMap.ObjectKey = NullMap
TypeParameterMap.ObjectKey = NullMap
ImportsMap.ObjectKey = NullMap
TextDocumentMap.ObjectKey = NullMap

ProjectMap.TJKey = NullMap
ProjectRepositoryObjectMap.TJKey = NullMap
RepositoryObjectPropertyMap.TJKey = NullMap
PackagePropertyMap.TJKey = NullMap
ClassMap.TJKey = NullMap
ClassRelationshipMap.TJKey = NullMap
InterfaceMap.TJKey = NullMap
PackageMap.TJKey = NullMap
FieldMap.TJKey = NullMap
MethodMap.TJKey = NullMap
RelationToClassMap.TJKey = NullMap
RelationToInterfaceMap.TJKey = NullMap
RelationToFieldMap.TJKey = NullMap
RelationToMethodMap.TJKey = NullMap
RelationToTypeParameterMap.TJKey = NullMap
TypeParameterMap.TJKey = NullMap
ImportsMap.TJKey = NullMap
TextDocumentMap.TJKey = NullMap
