create arrays by passing a collection and closure to the json builder. The (builder) closure will be called for each object in the collection
cleanup.
simplified loops.
optimized array handling, removed double clone().
GROOVY-6314 ResourceGroovyMethods uses BufferedWriter/BufferedOutputStream
Update version number of @since to 2.3
Groovy NIO module first commit [GROOVY-6377]
Excluding the groovy dependency by the Spock module
Make the module description generated by the build process
Updated tests
Port Griffon's ConfigReader enhancements back to Groovy's ConfigSlurper.

configSlurper now has the ability to support multiple conditional blocks, not just 'environments'.
The 'environments' block is still set as the default conditional if none is specified. These patch
also allows for nested conditionals, for example

    projects { // conditional
        sample {
            environments { // conditional
                test { ... }
                prod { ... }
            }
        }
        experimental { ... }
    }

The aforementioned script can be parsed with

    ConfigSlurper slurper = new ConfigSlurper()
    slurper.registerConditionalBlock('projects', 'sample')
    slurper.registerConditionalBlock('environments', 'prod')
    ConfigObject config = slurper.parse(theScript)
More tests
GROOVY-3328: Automatic imports for selected text execution

Created pull request to of suggested solution by Jose Osinde and test by Sergey Bondarenko
GROOVY-4639: Add isSet()/hasValue()/similar method to ConfigObject
GROOVY-4639: Add isSet()/hasValue()/similar method to ConfigObject

refactored and added java doc
DelegatesTo in AstSpecificationCompiler to help IDE auto-complete
added collection/closure support to StreamingJsonBuilder.
removed some duplication.
improved readability.
removed some duplication.