# Debugging options for the org.eclipse.gmf.common plug-in

# Log info about OrganizeImportsPostprocessor activities
org.eclipse.gmf.common/debug/organizeImports=false

## Reconciler trace (log with INFO level)
# print every pair of elements matched 
org.eclipse.gmf.common/reconciler/traceMatches=false
# pring each decision applied 
org.eclipse.gmf.common/reconciler/traceDecision=false
# along with decision, print feature name being updated
org.eclipse.gmf.common/reconciler/traceDecision/features=false
# print recorded and updated cross-referenced values
org.eclipse.gmf.common/reconciler/traceCrossRefUpdate=false
