# Turn on debug tracing for org.eclipse.wst.jsdt.core plugin
org.eclipse.wst.jsdt.core/debug=false

# Reports buffer manager activity
org.eclipse.wst.jsdt.core/debug/buffermanager=false

# Reports builder activity : nature of build, built state reading, indictment process
org.eclipse.wst.jsdt.core/debug/builder=false

# Reports compiler
org.eclipse.wst.jsdt.core/debug/compiler=false

# Reports codeassist completion activity : recovered unit, inferred completions
org.eclipse.wst.jsdt.core/debug/completion=false

# Reports classpath variable initialization, and classpath container resolution
org.eclipse.wst.jsdt.core/debug/cpresolution=false

# Reports internals of classpath variable initialization, and classpath container resolution
org.eclipse.wst.jsdt.core/debug/cpresolution/advanced=false

# Report type hierarchy connections, refreshes and deltas
org.eclipse.wst.jsdt.core/debug/hierarchy=false

# Reports background indexer activity: indexing, saving index file, index queries
org.eclipse.wst.jsdt.core/debug/indexmanager=false

# Print notified element deltas
org.eclipse.wst.jsdt.core/debug/javadelta=false
org.eclipse.wst.jsdt.core/debug/javadelta/verbose=false

# Reports InferEngine activity
org.eclipse.wst.jsdt.core/debug/inferEngine=false

# Reports various Java model activities
org.eclipse.wst.jsdt.core/debug/javamodel=false

# Reports Java model elements opening/closing
org.eclipse.wst.jsdt.core/debug/javamodel/cache=false

# Reports post actions addition/run
org.eclipse.wst.jsdt.core/debug/postaction=false

# Reports name resolution activity
org.eclipse.wst.jsdt.core/debug/resolution=false

# Reports search activity
org.eclipse.wst.jsdt.core/debug/search=false

# Reports source mapper activity
org.eclipse.wst.jsdt.core/debug/sourcemapper=false

# Reports open on selection activity : recovered unit, inferred selection
org.eclipse.wst.jsdt.core/debug/selection=false

# Reports access to zip and jar files through the Java model
org.eclipse.wst.jsdt.core/debug/zipaccess=false

org.eclipse.wst.jsdt.core/perf/Parser/inferTypes=10
org.eclipse.wst.jsdt.core/perfReport/Parser/inferTypes=false                 