# Eclipse project files 
.classpath
.project
.settings/
.checkstyle

# IntelliJ project files
*.idea
**/*.iml
*.ipr
*.iws

# Additional tools
.clover/

# OSX files
**/.DS_Store

# Compiler output, class files
*.class
bin/

# Log file
*.log

# BlueJ files
*.ctxt

# Mobile Tools for Java (J2ME)
.mtj.tmp/

# Package Files #
*.jar
*.war
*.ear
*.zip
*.tar.gz
*.rar

# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
hs_err_pid*

#Test config and output
test-output/
local/
reports/
.pmd
tmp/

# Build artifacts
target/
serialization_test_data/
out/
build/
jarsIn/
build.xml
*.properties
*.releaseBackup
*.next
*.tag
doc/

# Jekyll
_site/
_*
_*/

# Sketch binary test files
*.sk