# Debugging options for the org.eclipse.ocl.examples.domain plug-in

# Turn on tracing of the nsURI to *.ecore mapping discovery
org.eclipse.ocl.examples.domain/projectMap/addEPackage=false

# Turn on tracing of the nsURI to GenModel location discovery 
org.eclipse.ocl.examples.domain/projectMap/addGenModel=false

# Turn on tracing of the plgin.xml generated_package extension point 
org.eclipse.ocl.examples.domain/projectMap/addGeneratedPackage=false

# Turn on tracing of the ResourceSet.Converter.URI_MAP URI initialisation 
org.eclipse.ocl.examples.domain/projectMap/addURIMap=false

# Turn on tracing of the resource load strategy configuration commands
org.eclipse.ocl.examples.domain/projectMap/configure=false

# Turn on tracing of the package/resource gets that trigger resolutions
org.eclipse.ocl.examples.domain/projectMap/get=false

# Turn on tracing of the install/uninstall of EPackage.Registry descriptors
org.eclipse.ocl.examples.domain/projectMap/install=false

# Turn on tracing of the resolution of EPackage.Registry and ResourceSet.URIResourceMap entries 
org.eclipse.ocl.examples.domain/projectMap/resolve=false
