def jjtree(*args)
options = Hash === args.last ? args.pop : {}
rake_check_options options, :output, :build_node_files
args = args.flatten.map(&:to_s).collect { |f| File.directory?(f) ? FileList[f + "**/*.jjt"] : f }.flatten
args.unshift "-OUTPUT_DIRECTORY=#{options[:output]}" if options[:output]
args.unshift "-BUILD_NODE_FILES=#{options[:build_node_files] || false}"
Java.load
Java.org.javacc.jjtree.JJTree.new.main(args.to_java(Java.java.lang.String)) == 0 or
fail "Failed to run JJTree, see errors above."
end