groovy-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From pa...@apache.org
Subject [groovy] 04/06: whitespace/formatting plus cleanup/remove @author tags as per Apache recommended practices cont'd
Date Fri, 01 Feb 2019 08:01:21 GMT
This is an automated email from the ASF dual-hosted git repository.

paulk pushed a commit to branch GROOVY_2_5_X
in repository https://gitbox.apache.org/repos/asf/groovy.git

commit 3b3ad67c5ce1550c9e2bc8a91ad3e73e71b33073
Author: Paul King <paulk@asert.com.au>
AuthorDate: Fri Feb 1 16:46:05 2019 +1000

    whitespace/formatting plus cleanup/remove @author tags as per Apache recommended practices cont'd
---
 gradle/pomconfigurer.gradle                        |   39 +
 .../groovy/groovy/lang/GroovyResourceLoader.java   |    2 -
 src/main/groovy/groovy/lang/MapWithDefault.java    |    1 -
 .../groovy/lang/MetaArrayLengthProperty.java       |    2 -
 src/main/groovy/groovy/lang/MetaClass.java         |    3 -
 src/main/groovy/groovy/lang/MetaClassRegistry.java |    5 -
 .../groovy/lang/MetaClassRegistryChangeEvent.java  |    2 -
 .../lang/MetaClassRegistryChangeEventListener.java |    2 -
 .../groovy/groovy/lang/MetaExpandoProperty.java    |    2 -
 src/main/groovy/groovy/lang/MetaMethod.java        |    3 -
 .../groovy/groovy/lang/MetaObjectProtocol.java     |    2 -
 src/main/groovy/groovy/lang/MetaProperty.java      |    2 -
 .../groovy/groovy/lang/MissingClassException.java  |    2 -
 .../groovy/groovy/lang/MissingFieldException.java  |    2 -
 src/main/groovy/groovy/lang/Mixin.java             |    2 -
 src/main/groovy/groovy/lang/MutableMetaClass.java  |    1 -
 src/main/groovy/groovy/lang/ParameterArray.java    |    2 -
 .../groovy/lang/PropertyAccessInterceptor.java     |    1 -
 src/main/groovy/groovy/lang/ProxyMetaClass.java    |    2 -
 .../groovy/lang/ReadOnlyPropertyException.java     |    2 -
 src/main/groovy/groovy/lang/Reference.java         |    2 -
 src/main/groovy/groovy/lang/Script.java            |    3 -
 src/main/groovy/groovy/lang/Singleton.java         |    3 -
 .../groovy/lang/StringWriterIOException.java       |    2 -
 src/main/groovy/groovy/lang/TrampolineClosure.java |    2 -
 src/main/groovy/groovy/lang/Tuple.java             |    2 -
 src/main/groovy/groovy/lang/Writable.java          |    2 -
 .../security/GroovyCodeSourcePermission.java       |    2 -
 src/main/groovy/groovy/time/BaseDuration.java      |    1 -
 .../groovy/groovy/time/DatumDependentDuration.java |    2 -
 src/main/groovy/groovy/time/Duration.java          |    2 -
 .../groovy/time/TimeDatumDependentDuration.java    |    2 -
 src/main/groovy/groovy/time/TimeDuration.java      |    2 -
 .../groovy/transform/builder/SimpleStrategy.java   |    2 -
 .../groovy/transform/stc/ClosureSignatureHint.java |    1 -
 .../groovy/groovy/transform/stc/FirstParam.java    |    4 -
 .../transform/stc/FromAbstractTypeMethods.java     |    1 -
 .../groovy/groovy/transform/stc/FromString.java    |    1 -
 .../groovy/transform/stc/PickAnyArgumentHint.java  |    1 -
 .../groovy/groovy/transform/stc/SecondParam.java   |    4 -
 .../transform/stc/SingleSignatureClosureHint.java  |    1 -
 .../groovy/groovy/transform/stc/ThirdParam.java    |    4 -
 src/main/groovy/groovy/ui/GroovySocketServer.java  |    2 -
 src/main/groovy/groovy/util/AbstractFactory.java   |    4 -
 src/main/groovy/groovy/util/BufferedIterator.java  |    1 -
 src/main/groovy/groovy/util/BuilderSupport.java    |    5 +-
 src/main/groovy/groovy/util/CharsetToolkit.java    |    2 -
 src/main/groovy/groovy/util/ClosureComparator.java |    2 -
 src/main/groovy/groovy/util/ConfigObject.java      |    2 -
 src/main/groovy/groovy/util/DelegatingScript.java  |    2 -
 src/main/groovy/groovy/util/Eval.java              |    1 -
 src/main/groovy/groovy/util/Expando.java           |    4 -
 src/main/groovy/groovy/util/Factory.java           |    4 -
 .../groovy/groovy/util/FactoryBuilderSupport.java  |    4 -
 src/main/groovy/groovy/util/GroovyCollections.java |    3 -
 .../groovy/groovy/util/GroovyScriptEngine.java     |    6 -
 src/main/groovy/groovy/util/IndentPrinter.java     |    2 -
 src/main/groovy/groovy/util/MapEntry.java          |    2 -
 src/main/groovy/groovy/util/Node.java              |    3 -
 src/main/groovy/groovy/util/NodeBuilder.java       |    2 -
 src/main/groovy/groovy/util/NodePrinter.java       |    3 -
 .../groovy/groovy/util/ObjectGraphBuilder.java     |    3 -
 src/main/groovy/groovy/util/OrderBy.java           |    2 -
 src/main/groovy/groovy/util/Proxy.java             |    3 -
 src/main/groovy/groovy/util/ProxyGenerator.java    |    4 -
 src/main/groovy/groovy/util/ResourceConnector.java |    2 -
 src/main/groovy/groovy/util/ResourceException.java |    3 -
 src/main/groovy/groovy/util/ScriptException.java   |    3 -
 .../groovy/tools/ast/TransformTestHelper.groovy    |   58 +-
 .../tailrec/ReturnAdderForClosures.groovy          |    4 +-
 .../ReturnStatementToIterationConverter.groovy     |    6 +-
 .../transform/tailrec/StatementReplacer.groovy     |   14 +-
 .../tailrec/TailRecursiveASTTransformation.groovy  |   24 +-
 .../tailrec/TernaryToIfStatementConverter.groovy   |    2 -
 .../tailrec/VariableAccessReplacer.groovy          |    2 -
 .../tailrec/VariableExpressionReplacer.groovy      |   44 +-
 .../tailrec/VariableExpressionTransformer.groovy   |    2 -
 .../ConcurrentLinkedHashMap.java                   |    1 -
 .../util/concurrentlinkedhashmap/EntryWeigher.java |    1 -
 .../concurrentlinkedhashmap/EvictionListener.java  |    1 -
 .../util/concurrentlinkedhashmap/LinkedDeque.java  |    1 -
 .../util/concurrentlinkedhashmap/Weigher.java      |    1 -
 .../util/concurrentlinkedhashmap/Weighers.java     |    1 -
 .../groovy/antlr/AntlrASTProcessSnippets.java      |    2 -
 .../codehaus/groovy/antlr/AntlrASTProcessor.java   |    2 -
 .../codehaus/groovy/antlr/AntlrParserPlugin.java   |    2 -
 .../codehaus/groovy/antlr/GroovySourceToken.java   |    2 -
 .../java/org/codehaus/groovy/antlr/LineColumn.java |    2 -
 .../org/codehaus/groovy/antlr/SourceBuffer.java    |    2 -
 .../groovy/antlr/UnicodeLexerSharedInputState.java |    1 -
 .../groovy/antlr/treewalker/CompositeVisitor.java  |    2 -
 .../antlr/treewalker/FlatNodeListTraversal.java    |    2 -
 .../groovy/antlr/treewalker/MindMapPrinter.java    |    2 -
 .../groovy/antlr/treewalker/NodeAsHTMLPrinter.java |    3 -
 .../groovy/antlr/treewalker/NodeCollector.java     |    3 -
 .../groovy/antlr/treewalker/NodePrinter.java       |    3 -
 .../groovy/antlr/treewalker/PreOrderTraversal.java |    2 -
 .../antlr/treewalker/SourceCodeTraversal.java      |    2 -
 .../groovy/antlr/treewalker/SourcePrinter.java     |    4 -
 .../groovy/antlr/treewalker/TraversalHelper.java   |    2 -
 .../codehaus/groovy/antlr/treewalker/Visitor.java  |    3 -
 .../groovy/antlr/treewalker/VisitorAdapter.java    |    3 -
 src/main/java/org/codehaus/groovy/ast/ASTNode.java |    3 -
 .../org/codehaus/groovy/ast/AnnotatedNode.java     |    2 -
 .../org/codehaus/groovy/ast/AstToTextHelper.java   |    1 -
 .../groovy/ast/ClassCodeExpressionTransformer.java |  290 ++--
 .../codehaus/groovy/ast/CodeVisitorSupport.java    |    2 -
 .../org/codehaus/groovy/ast/ConstructorNode.java   |    2 -
 .../codehaus/groovy/ast/EnumConstantClassNode.java |   76 +-
 .../java/org/codehaus/groovy/ast/GenericsType.java |    1 -
 .../codehaus/groovy/ast/GroovyClassVisitor.java    |    2 -
 .../org/codehaus/groovy/ast/GroovyCodeVisitor.java |    3 -
 .../java/org/codehaus/groovy/ast/ImportNode.java   |    4 -
 .../org/codehaus/groovy/ast/InnerClassNode.java    |    2 -
 .../groovy/ast/InterfaceHelperClassNode.java       |  100 +-
 .../groovy/ast/MethodCallTransformation.java       |    8 +-
 .../codehaus/groovy/ast/MethodInvocationTrap.java  |   13 +-
 .../java/org/codehaus/groovy/ast/MethodNode.java   |    3 -
 .../java/org/codehaus/groovy/ast/MixinNode.java    |    2 -
 .../java/org/codehaus/groovy/ast/ModuleNode.java   |    4 -
 .../java/org/codehaus/groovy/ast/PackageNode.java  |   90 +-
 .../java/org/codehaus/groovy/ast/Parameter.java    |    2 -
 .../java/org/codehaus/groovy/ast/PropertyNode.java |    2 -
 .../java/org/codehaus/groovy/ast/Variable.java     |    2 -
 .../org/codehaus/groovy/ast/VariableScope.java     |    3 -
 .../ast/builder/AstBuilderTransformation.java      |  369 +++--
 .../groovy/ast/decompiled/Annotations.java         |    3 -
 .../ast/decompiled/AsmReferenceResolver.java       |    2 -
 .../ast/decompiled/ClassSignatureParser.java       |    3 -
 .../groovy/ast/decompiled/DecompiledClassNode.java |    1 -
 .../ast/decompiled/FormalParameterParser.java      |    3 -
 .../groovy/ast/decompiled/TypeSignatureParser.java |    3 -
 .../ast/expr/AnnotationConstantExpression.java     |   98 +-
 .../groovy/ast/expr/ArgumentListExpression.java    |    2 -
 .../codehaus/groovy/ast/expr/ArrayExpression.java  |    2 -
 .../groovy/ast/expr/AttributeExpression.java       |    3 -
 .../codehaus/groovy/ast/expr/BinaryExpression.java |    2 -
 .../groovy/ast/expr/BitwiseNegationExpression.java |    3 -
 .../groovy/ast/expr/BooleanExpression.java         |    2 -
 .../codehaus/groovy/ast/expr/CastExpression.java   |    2 -
 .../codehaus/groovy/ast/expr/ClassExpression.java  |    2 -
 .../groovy/ast/expr/ClosureExpression.java         |    3 -
 .../groovy/ast/expr/ClosureListExpression.java     |    3 -
 .../groovy/ast/expr/ConstantExpression.java        |    2 -
 .../groovy/ast/expr/ConstructorCallExpression.java |    3 -
 .../groovy/ast/expr/DeclarationExpression.java     |    3 -
 .../groovy/ast/expr/ElvisOperatorExpression.java   |    1 -
 .../codehaus/groovy/ast/expr/EmptyExpression.java  |   79 +-
 .../org/codehaus/groovy/ast/expr/Expression.java   |    2 -
 .../groovy/ast/expr/ExpressionTransformer.java     |    2 -
 .../codehaus/groovy/ast/expr/FieldExpression.java  |    2 -
 .../groovy/ast/expr/GStringExpression.java         |    2 -
 .../codehaus/groovy/ast/expr/ListExpression.java   |    2 -
 .../groovy/ast/expr/MapEntryExpression.java        |    2 -
 .../codehaus/groovy/ast/expr/MapExpression.java    |    2 -
 .../org/codehaus/groovy/ast/expr/MethodCall.java   |    1 -
 .../groovy/ast/expr/MethodCallExpression.java      |    2 -
 .../ast/expr/NamedArgumentListExpression.java      |    2 -
 .../codehaus/groovy/ast/expr/NotExpression.java    |    3 -
 .../groovy/ast/expr/PostfixExpression.java         |    2 -
 .../codehaus/groovy/ast/expr/PrefixExpression.java |    2 -
 .../groovy/ast/expr/PropertyExpression.java        |    2 -
 .../codehaus/groovy/ast/expr/RangeExpression.java  |    2 -
 .../ast/expr/StaticMethodCallExpression.java       |    2 -
 .../groovy/ast/expr/TernaryExpression.java         |    2 -
 .../codehaus/groovy/ast/expr/TupleExpression.java  |    2 -
 .../groovy/ast/expr/UnaryMinusExpression.java      |    3 -
 .../groovy/ast/expr/UnaryPlusExpression.java       |    3 -
 .../groovy/ast/expr/VariableExpression.java        |    2 -
 .../codehaus/groovy/ast/stmt/AssertStatement.java  |    2 -
 .../codehaus/groovy/ast/stmt/BlockStatement.java   |    2 -
 .../codehaus/groovy/ast/stmt/BreakStatement.java   |    3 -
 .../codehaus/groovy/ast/stmt/CaseStatement.java    |    2 -
 .../codehaus/groovy/ast/stmt/CatchStatement.java   |    2 -
 .../groovy/ast/stmt/ContinueStatement.java         |    2 -
 .../codehaus/groovy/ast/stmt/DoWhileStatement.java |    2 -
 .../codehaus/groovy/ast/stmt/EmptyStatement.java   |    2 -
 .../groovy/ast/stmt/ExpressionStatement.java       |    2 -
 .../org/codehaus/groovy/ast/stmt/ForStatement.java |    2 -
 .../org/codehaus/groovy/ast/stmt/IfStatement.java  |    2 -
 .../codehaus/groovy/ast/stmt/LoopingStatement.java |    4 +-
 .../codehaus/groovy/ast/stmt/ReturnStatement.java  |    2 -
 .../org/codehaus/groovy/ast/stmt/Statement.java    |    2 -
 .../codehaus/groovy/ast/stmt/SwitchStatement.java  |    2 -
 .../groovy/ast/stmt/SynchronizedStatement.java     |    2 -
 .../codehaus/groovy/ast/stmt/ThrowStatement.java   |    2 -
 .../groovy/ast/stmt/TryCatchStatement.java         |    2 -
 .../codehaus/groovy/ast/stmt/WhileStatement.java   |    2 -
 .../groovy/ast/tools/WideningCategories.java       |    3 -
 .../groovy/classgen/BytecodeExpression.java        |    2 -
 .../groovy/classgen/BytecodeInstruction.java       |   62 +-
 .../codehaus/groovy/classgen/ClassGenerator.java   |    3 -
 .../groovy/classgen/ClassGeneratorException.java   |    2 -
 .../groovy/classgen/DummyClassGenerator.java       |    3 -
 .../codehaus/groovy/classgen/GeneratorContext.java |    2 -
 .../groovy/classgen/VerifierCodeVisitor.java       |    2 -
 .../classgen/asm/BinaryDoubleExpressionHelper.java |    3 -
 .../classgen/asm/BinaryExpressionWriter.java       |    1 -
 .../classgen/asm/BinaryFloatExpressionHelper.java  |    3 -
 .../classgen/asm/BinaryLongExpressionHelper.java   |    3 -
 .../classgen/asm/BinaryObjectExpressionHelper.java |    3 -
 .../groovy/classgen/asm/BytecodeDumper.java        |    1 -
 .../groovy/classgen/asm/BytecodeHelper.java        |    4 -
 .../groovy/classgen/asm/BytecodeVariable.java      |    3 -
 .../codehaus/groovy/classgen/asm/CompileStack.java |    1 -
 .../groovy/classgen/asm/DelegatingController.java  |    1 -
 .../classgen/asm/ExpressionAsVariableSlot.java     |    1 -
 .../codehaus/groovy/classgen/asm/MethodCaller.java |    2 -
 .../classgen/asm/StatementMetaTypeChooser.java     |    3 -
 .../codehaus/groovy/classgen/asm/TypeChooser.java  |    2 -
 .../groovy/classgen/asm/UnaryExpressionHelper.java |    2 -
 .../classgen/asm/WriterControllerFactory.java      |    1 -
 .../classgen/asm/indy/IndyCallSiteWriter.java      |    1 -
 .../classgen/asm/indy/InvokeDynamicWriter.java     |    2 -
 .../sc/IndyStaticTypesMultiTypeDispatcher.java     |    2 +-
 .../asm/sc/StaticCompilationMopWriter.java         |    1 -
 .../asm/sc/StaticPropertyAccessHelper.java         |    1 -
 ...icTypesBinaryExpressionMultiTypeDispatcher.java |    3 -
 .../classgen/asm/sc/StaticTypesCallSiteWriter.java |    2 -
 .../classgen/asm/sc/StaticTypesClosureWriter.java  |    2 -
 .../asm/sc/StaticTypesStatementWriter.java         |    1 -
 .../classgen/asm/sc/StaticTypesTypeChooser.java    |    2 -
 .../asm/sc/StaticTypesUnaryExpressionHelper.java   |    2 -
 .../asm/sc/StaticTypesWriterController.java        |    2 -
 .../sc/StaticTypesWriterControllerFactoryImpl.java |    3 -
 .../groovy/control/ASTTransformationsContext.java  |    2 -
 .../codehaus/groovy/control/ClassNodeResolver.java |    3 -
 .../groovy/control/CompilationFailedException.java |    3 -
 .../codehaus/groovy/control/CompilationUnit.java   |    4 -
 .../org/codehaus/groovy/control/CompilePhase.java  |  234 ++--
 .../org/codehaus/groovy/control/HasCleanup.java    |   10 +-
 .../java/org/codehaus/groovy/control/Janitor.java  |   35 +-
 .../org/codehaus/groovy/control/LabelVerifier.java |    2 -
 .../java/org/codehaus/groovy/control/Phases.java   |   69 +-
 .../codehaus/groovy/control/ProcessingUnit.java    |   17 +-
 .../org/codehaus/groovy/control/SourceUnit.java    |   21 +-
 .../control/customizers/CompilationCustomizer.java |    3 -
 .../control/customizers/DelegatingCustomizer.java  |    1 -
 .../control/customizers/ImportCustomizer.java      |    3 -
 .../control/customizers/SecureASTCustomizer.java   |    3 -
 .../control/customizers/SourceAwareCustomizer.java |    1 -
 .../customizers/builder/CustomizersFactory.java    |    1 -
 .../builder/ImportCustomizerFactory.java           |    1 -
 .../builder/InlinedASTCustomizerFactory.java       |    1 -
 .../customizers/builder/PostCompletionFactory.java |    1 -
 .../builder/SecureASTCustomizerFactory.java        |    1 -
 .../builder/SourceAwareCustomizerFactory.java      |    2 -
 .../groovy/control/io/AbstractReaderSource.java    |    3 -
 .../groovy/control/io/FileReaderSource.java        |    2 -
 .../groovy/control/io/InputStreamReaderSource.java |    2 -
 .../org/codehaus/groovy/control/io/NullWriter.java |    2 -
 .../codehaus/groovy/control/io/ReaderSource.java   |    2 -
 .../groovy/control/io/StringReaderSource.java      |    3 -
 .../groovy/control/io/URLReaderSource.java         |    2 -
 .../groovy/control/messages/ExceptionMessage.java  |   59 +-
 .../groovy/control/messages/LocatedMessage.java    |   51 +-
 .../codehaus/groovy/control/messages/Message.java  |   97 +-
 .../groovy/control/messages/SimpleMessage.java     |   55 +-
 .../control/messages/SyntaxErrorMessage.java       |    7 +-
 .../groovy/control/messages/WarningMessage.java    |  121 +-
 .../codehaus/groovy/reflection/CachedClass.java    |    3 -
 .../groovy/reflection/CachedConstructor.java       |    3 -
 .../codehaus/groovy/reflection/CachedMethod.java   |  685 +++++-----
 .../org/codehaus/groovy/reflection/ClassInfo.java  |    2 -
 .../reflection/stdclasses/ArrayCachedClass.java    |    3 -
 .../stdclasses/BigDecimalCachedClass.java          |    3 -
 .../stdclasses/BigIntegerCachedClass.java          |    3 -
 .../reflection/stdclasses/BooleanCachedClass.java  |    3 -
 .../reflection/stdclasses/ByteCachedClass.java     |    3 -
 .../stdclasses/CharacterCachedClass.java           |    3 -
 .../reflection/stdclasses/DoubleCachedClass.java   |    3 -
 .../reflection/stdclasses/FloatCachedClass.java    |    3 -
 .../reflection/stdclasses/IntegerCachedClass.java  |    3 -
 .../reflection/stdclasses/LongCachedClass.java     |    3 -
 .../reflection/stdclasses/NumberCachedClass.java   |    3 -
 .../reflection/stdclasses/ObjectCachedClass.java   |    3 -
 .../reflection/stdclasses/ShortCachedClass.java    |    3 -
 .../reflection/stdclasses/StringCachedClass.java   |    3 -
 .../groovy/runtime/AbstractComparator.java         |    3 -
 .../groovy/runtime/BytecodeInterface8.java         |    1 -
 .../groovy/runtime/DefaultCachedMethodKey.java     |    2 -
 .../codehaus/groovy/runtime/DefaultMethodKey.java  |    2 -
 .../groovy/runtime/FlushingStreamWriter.java       |    2 -
 .../codehaus/groovy/runtime/GeneratedClosure.java  |   57 +-
 .../codehaus/groovy/runtime/MetaClassHelper.java   |    4 -
 .../org/codehaus/groovy/runtime/MethodKey.java     |    2 -
 .../codehaus/groovy/runtime/MethodRankHelper.java  |    2 -
 .../groovy/runtime/ReflectionMethodInvoker.java    |    2 -
 .../org/codehaus/groovy/runtime/Reflector.java     |    2 -
 .../groovy/runtime/ResourceGroovyMethods.java      |  211 ++-
 .../groovy/runtime/ReverseListIterator.java        |    2 -
 .../groovy/runtime/ScriptBytecodeAdapter.java      |    2 -
 .../codehaus/groovy/runtime/StackTraceUtils.java   |  389 +++---
 .../groovy/runtime/StringBufferWriter.java         |    2 -
 .../runtime/callsite/BooleanClosureWrapper.java    |    1 -
 .../callsite/BooleanReturningMethodInvoker.java    |    2 -
 .../callsite/ConstructorMetaMethodSite.java        |    2 -
 .../runtime/callsite/MetaClassConstructorSite.java |    2 -
 .../groovy/runtime/callsite/MetaClassSite.java     |    2 -
 .../groovy/runtime/callsite/MetaMethodSite.java    |    2 -
 .../runtime/callsite/PogoInterceptableSite.java    |    2 -
 .../groovy/runtime/callsite/PogoMetaClassSite.java |    4 -
 .../groovy/runtime/callsite/PojoMetaClassSite.java |    2 -
 .../runtime/callsite/PojoMetaMethodSite.java       |    2 -
 .../runtime/callsite/StaticMetaClassSite.java      |    2 -
 .../runtime/callsite/StaticMetaMethodSite.java     |    2 -
 .../groovy/runtime/m12n/ExtensionModule.java       |    2 -
 .../runtime/m12n/ExtensionModuleRegistry.java      |    1 -
 .../runtime/m12n/MetaInfExtensionModule.java       |    2 -
 .../runtime/m12n/PropertiesModuleFactory.java      |    2 -
 .../groovy/runtime/m12n/SimpleExtensionModule.java |    1 -
 .../groovy/runtime/metaclass/ClosureMetaClass.java | 1425 ++++++++++----------
 .../runtime/metaclass/ClosureMetaMethod.java       |    1 -
 .../runtime/metaclass/ClosureStaticMetaMethod.java |    1 -
 .../runtime/metaclass/DefaultMetaClassInfo.java    |    2 -
 .../groovy/runtime/metaclass/MethodHelper.java     |    2 -
 .../groovy/runtime/metaclass/MixedInMetaClass.java |    4 -
 .../runtime/metaclass/NewInstanceMetaMethod.java   |    2 -
 .../runtime/metaclass/NewStaticMetaMethod.java     |    2 -
 .../groovy/runtime/metaclass/OwnedMetaClass.java   |    3 -
 .../groovy/runtime/metaclass/ReflectorLoader.java  |    2 -
 .../runtime/metaclass/TemporaryMethodKey.java      |    2 -
 .../metaclass/ThreadManagedMetaBeanProperty.java   |    4 -
 .../runtime/metaclass/TransformMetaMethod.java     |    3 -
 .../runtime/powerassert/AssertionRenderer.java     |    2 -
 .../groovy/runtime/powerassert/SourceText.java     |    2 -
 .../SourceTextNotAvailableException.java           |    2 -
 .../codehaus/groovy/runtime/powerassert/Value.java |    2 -
 .../groovy/runtime/powerassert/ValueRecorder.java  |    2 -
 .../runtime/typehandling/BigDecimalMath.java       |    2 -
 .../runtime/typehandling/BigIntegerMath.java       |    2 -
 .../runtime/typehandling/FloatingPointMath.java    |    2 -
 .../groovy/runtime/typehandling/IntegerMath.java   |    2 -
 .../groovy/runtime/typehandling/LongMath.java      |    2 -
 .../groovy/runtime/wrappers/BooleanWrapper.java    |    3 -
 .../groovy/runtime/wrappers/ByteWrapper.java       |    3 -
 .../groovy/runtime/wrappers/CharWrapper.java       |    3 -
 .../groovy/runtime/wrappers/DoubleWrapper.java     |    3 -
 .../groovy/runtime/wrappers/FloatWrapper.java      |    3 -
 .../runtime/wrappers/GroovyObjectWrapper.java      |    3 -
 .../groovy/runtime/wrappers/IntWrapper.java        |    3 -
 .../groovy/runtime/wrappers/LongWrapper.java       |    3 -
 .../groovy/runtime/wrappers/PojoWrapper.java       |    3 -
 .../groovy/runtime/wrappers/ShortWrapper.java      |    4 -
 .../codehaus/groovy/runtime/wrappers/Wrapper.java  |    7 +-
 .../java/org/codehaus/groovy/syntax/ASTHelper.java |    6 -
 .../java/org/codehaus/groovy/syntax/CSTNode.java   |  634 ++++-----
 .../java/org/codehaus/groovy/syntax/Numbers.java   |  213 ++-
 .../java/org/codehaus/groovy/syntax/Reduction.java |  255 ++--
 .../groovy/syntax/RuntimeParserException.java      |    2 -
 .../java/org/codehaus/groovy/syntax/Token.java     |  447 +++---
 .../java/org/codehaus/groovy/syntax/Types.java     |    9 +-
 .../java/org/codehaus/groovy/tools/Compiler.java   |  105 +-
 .../org/codehaus/groovy/tools/ErrorReporter.java   |  248 ++--
 .../java/org/codehaus/groovy/tools/RootLoader.java |    2 -
 .../tools/javac/JavaAwareCompilationUnit.java      |    2 -
 .../codehaus/groovy/tools/javac/JavaCompiler.java  |    3 -
 .../tools/javac/JavaStubCompilationUnit.java       |    3 -
 .../java/org/codehaus/groovy/tools/shell/IO.java   |    2 -
 .../codehaus/groovy/tools/shell/util/Logger.java   |    2 -
 .../groovy/tools/shell/util/MessageSource.java     |    2 -
 .../groovy/tools/shell/util/Preferences.java       |    2 -
 .../groovy/transform/ASTTransformation.java        |   99 +-
 .../ASTTransformationCollectorCodeVisitor.java     |    4 -
 .../groovy/transform/ASTTransformationVisitor.java |    2 -
 .../AbstractInterruptibleASTTransformation.java    |    3 -
 .../transform/AnnotationCollectorTransform.java    |    2 -
 .../transform/AutoCloneASTTransformation.java      |  612 +++++----
 .../transform/BaseScriptASTTransformation.java     |  333 +++--
 .../transform/CategoryASTTransformation.java       |  590 ++++----
 .../groovy/transform/GroovyASTTransformation.java  |  103 +-
 .../transform/GroovyASTTransformationClass.java    |   91 +-
 .../InheritConstructorsASTTransformation.java      |    2 -
 .../transform/PackageScopeASTTransformation.java   |    2 -
 .../transform/SingletonASTTransformation.java      |  271 ++--
 .../transform/SourceURIASTTransformation.java      |    5 -
 .../transform/StaticTypesTransformation.java       |    4 -
 .../transform/SynchronizedASTTransformation.java   |    2 -
 .../transform/sc/ListOfExpressionsExpression.java  |    2 -
 .../sc/StaticCompilationMetadataKeys.java          |    2 -
 .../transform/sc/StaticCompilationVisitor.java     |    2 -
 .../transform/sc/StaticCompileTransformation.java  |    2 -
 .../transform/sc/TemporaryVariableExpression.java  |    1 -
 .../sc/transformers/CompareIdentityExpression.java |    2 -
 .../transformers/RangeExpressionTransformer.java   |    2 -
 .../transformers/StaticCompilationTransformer.java |    2 -
 .../VariableExpressionTransformer.java             |    1 -
 .../stc/AbstractTypeCheckingExtension.java         |    1 -
 .../stc/DefaultTypeCheckingExtension.java          |    1 -
 .../groovy/transform/stc/DelegationMetadata.java   |    2 -
 .../groovy/transform/stc/ExtensionMethodNode.java  |    2 -
 .../stc/GroovyTypeCheckingExtensionSupport.java    |    1 -
 .../transform/stc/PropertyLookupVisitor.java       |    2 -
 .../groovy/transform/stc/SecondPassExpression.java |    2 -
 .../groovy/transform/stc/SignatureCodec.java       |    2 -
 .../transform/stc/SignatureCodecVersion1.java      |    2 -
 .../transform/stc/TypeCheckingExtension.java       |    1 -
 .../transform/trait/NAryOperationRewriter.java     |    2 -
 .../transform/trait/SuperCallTraitTransformer.java |    1 -
 .../transform/trait/TraitASTTransformation.java    |    2 -
 .../groovy/transform/trait/TraitComposer.java      |    1 -
 .../codehaus/groovy/transform/trait/Traits.java    |    1 -
 .../groovy/util/IteratorBufferedIterator.java      |    1 -
 .../codehaus/groovy/util/ListBufferedIterator.java |    1 -
 .../java/org/codehaus/groovy/util/ListHashMap.java |    2 -
 .../groovy/util/ManagedConcurrentValueMap.java     |    1 -
 .../codehaus/groovy/util/ManagedLinkedList.java    |    1 -
 .../org/codehaus/groovy/util/ManagedReference.java |    6 -
 .../java/org/codehaus/groovy/util/ReleaseInfo.java |  158 ++-
 .../org/codehaus/groovy/vmplugin/v6/Java6.java     |   66 +-
 .../groovy/vmplugin/v7/IndyArrayAccess.java        |    2 +-
 .../v7/IndyGuardsFiltersAndSignatures.java         |    1 -
 .../codehaus/groovy/vmplugin/v7/IndyInterface.java |    3 -
 .../org/codehaus/groovy/vmplugin/v7/IndyMath.java  |    1 -
 .../org/codehaus/groovy/vmplugin/v7/Selector.java  |    1 -
 .../codehaus/groovy/vmplugin/v7/TypeHelper.java    |    1 -
 .../groovy/vmplugin/v7/TypeTransformers.java       |    1 -
 .../org/codehaus/groovy/tck/BatchGenerate.groovy   |   57 +-
 .../org/codehaus/groovy/tck/GenerateTestCases.java |    5 -
 .../org/codehaus/groovy/tck/TestGenerator.groovy   |    7 +-
 src/test/groovy/lang/MetaClassTest.java            |    3 -
 src/test/groovy/lang/MockWriter.java               |    2 -
 src/test/groovy/lang/ScriptIntegerDivideTest.java  |    5 -
 src/test/groovy/lang/ScriptPrintTest.java          |    3 -
 src/test/groovy/lang/ScriptTest.java               |    3 -
 src/test/groovy/lang/SequenceTest.java             |    2 -
 src/test/groovy/lang/TupleTest.java                |    3 -
 .../gcldeadlock/GroovyClassLoaderDeadlockTest.java |    2 -
 .../mock/interceptor/MockCallSequenceTest.groovy   |    5 +-
 src/test/groovy/security/SecurityTest.java         |    2 -
 src/test/groovy/security/SecurityTestSupport.java  |    3 -
 src/test/groovy/tree/NodePrinterTest.java          |    3 -
 src/test/groovy/txn/TransactionBean.java           |    3 -
 src/test/groovy/txn/TransactionBuilder.java        |    3 -
 src/test/groovy/util/EvalTest.java                 |    2 -
 .../util/GroovyScriptEngineReloadingTest.groovy    |   77 +-
 .../groovy/antlr/AnnotationSourceParsingTest.java  |   88 +-
 .../groovy/antlr/EnumSourceParsingTest.java        |  256 ++--
 .../codehaus/groovy/antlr/SourceBufferTest.java    |    3 -
 .../groovy/antlr/treewalker/LineColumnChecker.java |    2 -
 .../groovy/antlr/treewalker/LineColumnTest.java    |    2 -
 .../groovy/antlr/treewalker/SourcePrinterTest.java |    2 -
 .../antlr/treewalker/UnimplementedSyntaxTest.java  |    2 -
 src/test/org/codehaus/groovy/ast/ASTTest.java      |   88 +-
 .../org/codehaus/groovy/ast/ClassNodeTest.java     |    2 -
 .../groovy/ast/MethodCallExpressionTest.java       |  175 ++-
 .../org/codehaus/groovy/ast/ModuleNodeTest.java    |    2 -
 .../groovy/ast/VariableExpressionTest.java         |  170 ++-
 .../groovy/ast/decompiled/AsmDecompilerTest.groovy |   18 +-
 .../IncrementalRecompilationWithStubsTest.groovy   |    6 +-
 .../groovy/ast/expr/ClosureExpressionTest.groovy   |    4 -
 .../ast/expr/MethodCallExpressionTest.groovy       |    4 -
 .../groovy/ast/expr/PropertyExpressionTest.groovy  |    4 -
 .../groovy/classgen/BytecodeHelperTest.groovy      |    3 -
 .../classgen/CallClosureFieldAsMethodTest.groovy   |   25 +-
 .../codehaus/groovy/classgen/CapitalizeTest.java   |    3 -
 .../classgen/ClassCompletionVerifierTest.java      |    3 -
 .../codehaus/groovy/classgen/ConstructorTest.java  |    3 -
 .../org/codehaus/groovy/classgen/DerivedBean.java  |    2 -
 .../codehaus/groovy/classgen/DummyReflector.java   |    2 -
 .../groovy/classgen/DumpingClassLoader.java        |    2 -
 src/test/org/codehaus/groovy/classgen/ForTest.java |    4 -
 .../org/codehaus/groovy/classgen/GStringTest.java  |    3 -
 .../codehaus/groovy/classgen/GetPropertyTest.java  |    2 -
 .../groovy/classgen/GroovyClassLoaderTest.java     |    2 -
 .../org/codehaus/groovy/classgen/IfElseTest.java   |    3 -
 .../org/codehaus/groovy/classgen/MainTest.java     |    3 -
 .../org/codehaus/groovy/classgen/MethodTest.java   |    3 -
 .../org/codehaus/groovy/classgen/PropertyTest.java |    3 -
 .../org/codehaus/groovy/classgen/RunBugsTest.java  |    2 -
 .../codehaus/groovy/classgen/RunClosureTest.java   |    3 -
 .../codehaus/groovy/classgen/RunGroovyTest.java    |    2 -
 .../org/codehaus/groovy/classgen/SimpleBean.java   |    2 -
 .../org/codehaus/groovy/classgen/TestSupport.java  |    2 -
 .../codehaus/groovy/classgen/TupleListTest.java    |    3 -
 .../classgen/asm/AbstractBytecodeTestCase.groovy   |   23 +-
 .../classgen/asm/BinaryOperationsTest.groovy       |    3 -
 .../classgen/asm/DirectMethodCallTest.groovy       |    3 -
 .../groovy/classgen/asm/HotSwapTest.groovy         |    3 -
 .../asm/InstructionSequenceHelperClassTest.groovy  |    2 -
 .../groovy/classgen/asm/MethodPatternsTest.groovy  |    4 +-
 .../control/io/AbstractReaderSourceTest.java       |  186 ++-
 .../runtime/DefaultGroovyMethodsSupportTest.groovy |  341 +++--
 .../groovy/runtime/DirectoryDeleteTest.groovy      |  114 +-
 .../org/codehaus/groovy/runtime/DummyBean.java     |    3 -
 .../runtime/FileStaticGroovyMethodsTest.groovy     |    3 -
 .../runtime/InheritedInterfaceMethodTest.java      |    3 -
 .../groovy/runtime/InvokeConstructorTest.java      |    2 -
 .../groovy/runtime/InvokeGroovyMethodTest.java     |    2 -
 .../codehaus/groovy/runtime/InvokeMethodTest.java  |    2 -
 .../org/codehaus/groovy/runtime/InvokerTest.java   |    2 -
 .../codehaus/groovy/runtime/MethodFailureTest.java |    2 -
 .../org/codehaus/groovy/runtime/MethodKeyTest.java |    3 -
 .../groovy/runtime/MethodRankHelperTest.java       |  191 +--
 .../codehaus/groovy/runtime/MockGroovyObject.java  |    2 -
 .../groovy/runtime/NewStaticMetaMethodTest.java    |    3 -
 .../org/codehaus/groovy/runtime/PropertyTest.java  |    2 -
 .../groovy/runtime/StringGroovyMethodsTest.java    |    5 -
 .../org/codehaus/groovy/runtime/TupleListTest.java |    4 -
 .../CacheCleanupCollectedSoftReferencesTest.groovy |    5 +-
 .../groovy/syntax/parser/TestParserSupport.java    |    2 -
 .../org/codehaus/groovy/tools/CompilerTest.java    |    2 -
 .../groovy/tools/FileSystemCompilerTest.java       |    2 -
 .../ClassImplementingANonPublicInterface.java      |    2 -
 .../groovy/transform/NonPublicInterface.java       |    2 -
 .../transform/SingletonASTTransformationTest.java  |    2 -
 .../tailrec/RecursivenessTesterTest.groovy         |   42 +-
 .../tailrec/ReturnAdderForClosuresTest.groovy      |    5 +-
 .../ReturnStatementToIterationConverterTest.groovy |   11 +-
 .../transform/tailrec/StatementReplacerTest.groovy |   25 +-
 .../TailRecursiveCompilationFailuresTest.groovy    |    4 -
 .../transform/tailrec/TailRecursiveExamples.groovy |    4 -
 .../TailRecursiveTogetherWithOtherASTsTest.groovy  |    4 +-
 .../tailrec/TailRecursiveTransformationTest.groovy |    3 -
 .../TernaryToIfStatementConverterTest.groovy       |    5 +-
 .../tailrec/VariableExpressionReplacerTest.groovy  |   57 +-
 516 files changed, 5218 insertions(+), 6938 deletions(-)

diff --git a/gradle/pomconfigurer.gradle b/gradle/pomconfigurer.gradle
index bd1560a..2531b14 100644
--- a/gradle/pomconfigurer.gradle
+++ b/gradle/pomconfigurer.gradle
@@ -654,6 +654,45 @@ project.ext.pomConfigureClosureWithoutTweaks = {
                 name 'Nick Grealy'
             }
             contributor {
+                name 'Vaclav Pech'
+            }
+            contributor {
+                name 'Chuck Tassoni'
+            }
+            contributor {
+                name 'Steven Devijver'
+            }
+            contributor {
+                name 'Ben Manes'
+            }
+            contributor {
+                name 'Troy Heninger'
+            }
+            contributor {
+                name 'Andrew Eisenberg'
+            }
+            contributor {
+                name 'Eric Milles'
+            }
+            contributor {
+                name 'Kohsuke Kawaguchi'
+            }
+            contributor {
+                name 'Scott Vlaminck'
+            }
+            contributor {
+                name 'Hjalmar Ekengren'
+            }
+            contributor {
+                name 'Rafael Luque'
+            }
+            contributor {
+                name 'Joachim Heldmann'
+            }
+            contributor {
+                name 'dgouyette'
+            }
+            contributor {
                 name 'Marcin Grzejszczak'
             }
             contributor {
diff --git a/src/main/groovy/groovy/lang/GroovyResourceLoader.java b/src/main/groovy/groovy/lang/GroovyResourceLoader.java
index 7abe202..4ac9c8d 100644
--- a/src/main/groovy/groovy/lang/GroovyResourceLoader.java
+++ b/src/main/groovy/groovy/lang/GroovyResourceLoader.java
@@ -23,8 +23,6 @@ import java.net.URL;
 
 /**
  * Allows frameworks that integrate with Groovy to determine how Groovy files are resolved.
- * 
- * @author Steven Devijver
  */
 public interface GroovyResourceLoader {
 
diff --git a/src/main/groovy/groovy/lang/MapWithDefault.java b/src/main/groovy/groovy/lang/MapWithDefault.java
index 166e06b..8aa1b3e 100644
--- a/src/main/groovy/groovy/lang/MapWithDefault.java
+++ b/src/main/groovy/groovy/lang/MapWithDefault.java
@@ -25,7 +25,6 @@ import java.util.Set;
 /**
  * A wrapper for Map which allows a default value to be specified.
  *
- * @author Paul King
  * @since 1.7.1
  */
 public final class MapWithDefault<K, V> implements Map<K, V> {
diff --git a/src/main/groovy/groovy/lang/MetaArrayLengthProperty.java b/src/main/groovy/groovy/lang/MetaArrayLengthProperty.java
index 8310386..e7de412 100644
--- a/src/main/groovy/groovy/lang/MetaArrayLengthProperty.java
+++ b/src/main/groovy/groovy/lang/MetaArrayLengthProperty.java
@@ -21,8 +21,6 @@ package groovy.lang;
 
 /**
  * Represents the length property of an array
- *
- * @author <a href="mailto:james@coredevelopers.net">James Strachan</a>
  */
 public class MetaArrayLengthProperty extends MetaProperty {
 
diff --git a/src/main/groovy/groovy/lang/MetaClass.java b/src/main/groovy/groovy/lang/MetaClass.java
index 42c6a83..09bb3cd 100644
--- a/src/main/groovy/groovy/lang/MetaClass.java
+++ b/src/main/groovy/groovy/lang/MetaClass.java
@@ -32,9 +32,6 @@ import java.util.List;
  *
  * @see MetaClassImpl
  * @see groovy.lang.MetaObjectProtocol
- * 
- * @author John Wilson
- * @author Graeme Rocher
  */
 public interface MetaClass extends MetaObjectProtocol {
 
diff --git a/src/main/groovy/groovy/lang/MetaClassRegistry.java b/src/main/groovy/groovy/lang/MetaClassRegistry.java
index f13c1c1..65a132d 100644
--- a/src/main/groovy/groovy/lang/MetaClassRegistry.java
+++ b/src/main/groovy/groovy/lang/MetaClassRegistry.java
@@ -31,10 +31,6 @@ import java.util.Iterator;
  *
  * @see groovy.lang.MetaClass
  *
- * @author John Wilson
- * @author Graeme Rocher
- * @author <a href="mailto:blackdrag@gmx.org">Jochen Theodorou</a>
- *
  */
 public interface MetaClassRegistry {
     
@@ -127,7 +123,6 @@ public interface MetaClassRegistry {
      * you can have any control over the creation of what MetaClass is used
      * for a class that you want to have. 
      * WARNING: experimental code, likely to change soon
-     * @author Jochen Theodorou
      */
     class MetaClassCreationHandle {
         private boolean disableCustomMetaClassLookup;
diff --git a/src/main/groovy/groovy/lang/MetaClassRegistryChangeEvent.java b/src/main/groovy/groovy/lang/MetaClassRegistryChangeEvent.java
index 484efa3..0487cc1 100644
--- a/src/main/groovy/groovy/lang/MetaClassRegistryChangeEvent.java
+++ b/src/main/groovy/groovy/lang/MetaClassRegistryChangeEvent.java
@@ -22,8 +22,6 @@ import java.util.EventObject;
 
 /**
  * An event used to propagate meta class updates
- *
- * @author <a href="mailto:blackdrag@gmx.org">Jochen Theodorou</a>
  */
 public class MetaClassRegistryChangeEvent extends EventObject {
     private static final long serialVersionUID = 1647849176793457976L;
diff --git a/src/main/groovy/groovy/lang/MetaClassRegistryChangeEventListener.java b/src/main/groovy/groovy/lang/MetaClassRegistryChangeEventListener.java
index e7fd40c..9ab8954 100644
--- a/src/main/groovy/groovy/lang/MetaClassRegistryChangeEventListener.java
+++ b/src/main/groovy/groovy/lang/MetaClassRegistryChangeEventListener.java
@@ -26,8 +26,6 @@ import java.util.EventListener;
  * @see groovy.lang.MetaClassRegistry
  * @see groovy.lang.MetaClassRegistryChangeEvent
  *
- * @author <a href="mailto:blackdrag@gmx.org">Jochen Theodorou</a>
-  *
  */
 public interface MetaClassRegistryChangeEventListener extends EventListener{
 
diff --git a/src/main/groovy/groovy/lang/MetaExpandoProperty.java b/src/main/groovy/groovy/lang/MetaExpandoProperty.java
index 6eb2cf7..9903f17 100644
--- a/src/main/groovy/groovy/lang/MetaExpandoProperty.java
+++ b/src/main/groovy/groovy/lang/MetaExpandoProperty.java
@@ -22,8 +22,6 @@ import java.util.Map.Entry;
 
 /**
  * Represents a property in an Expando object
- *
- * @author John Stump
  */
 public class MetaExpandoProperty extends MetaProperty {
 
diff --git a/src/main/groovy/groovy/lang/MetaMethod.java b/src/main/groovy/groovy/lang/MetaMethod.java
index fcc001d..ee185fb 100644
--- a/src/main/groovy/groovy/lang/MetaMethod.java
+++ b/src/main/groovy/groovy/lang/MetaMethod.java
@@ -29,9 +29,6 @@ import java.lang.reflect.Modifier;
 /**
  * Represents a Method on a Java object a little like {@link java.lang.reflect.Method}
  * except without using reflection to invoke the method
- *
- * @author <a href="mailto:james@coredevelopers.net">James Strachan</a>
- * @author Alex Tkachman
  */
 public abstract class MetaMethod extends ParameterTypes implements Cloneable {
     public static final MetaMethod[] EMPTY_ARRAY = new MetaMethod[0];
diff --git a/src/main/groovy/groovy/lang/MetaObjectProtocol.java b/src/main/groovy/groovy/lang/MetaObjectProtocol.java
index 4218831..c215a57 100644
--- a/src/main/groovy/groovy/lang/MetaObjectProtocol.java
+++ b/src/main/groovy/groovy/lang/MetaObjectProtocol.java
@@ -25,8 +25,6 @@ import java.util.List;
  * implemented by the reference implementation of the {@link groovy.lang.MetaClass} interface.
  *
  * @see MetaClassImpl
- * @author John Wilson
- * @author Graeme Rocher
  */
 public interface MetaObjectProtocol {
 
diff --git a/src/main/groovy/groovy/lang/MetaProperty.java b/src/main/groovy/groovy/lang/MetaProperty.java
index d3c9633..bf94908 100644
--- a/src/main/groovy/groovy/lang/MetaProperty.java
+++ b/src/main/groovy/groovy/lang/MetaProperty.java
@@ -24,8 +24,6 @@ import java.lang.reflect.Modifier;
 
 /**
  * Represents a property on a bean which may have a getter and/or a setter
- * 
- * @author <a href="mailto:james@coredevelopers.net">James Strachan</a>
  */
 public abstract class MetaProperty {
 
diff --git a/src/main/groovy/groovy/lang/MissingClassException.java b/src/main/groovy/groovy/lang/MissingClassException.java
index b3579a6..d54dcdc 100644
--- a/src/main/groovy/groovy/lang/MissingClassException.java
+++ b/src/main/groovy/groovy/lang/MissingClassException.java
@@ -26,8 +26,6 @@ import org.codehaus.groovy.ast.ClassNode;
  * 
  * Note that the Missing*Exception classes were named for consistency and
  * to avoid conflicts with JDK exceptions of the same name.
- * 
- * @author <a href="mailto:james@coredevelopers.net">James Strachan</a>
  */
 public class MissingClassException extends GroovyRuntimeException {
 
diff --git a/src/main/groovy/groovy/lang/MissingFieldException.java b/src/main/groovy/groovy/lang/MissingFieldException.java
index 4a222f5..3181936 100644
--- a/src/main/groovy/groovy/lang/MissingFieldException.java
+++ b/src/main/groovy/groovy/lang/MissingFieldException.java
@@ -24,8 +24,6 @@ package groovy.lang;
  * 
  * Note that the Missing*Exception classes were named for consistency and
  * to avoid conflicts with JDK exceptions of the same name.
- * 
- * @author <a href="mailto:jstrachan@protique.com">James Strachan</a>
  */
 public class MissingFieldException extends GroovyRuntimeException {
 
diff --git a/src/main/groovy/groovy/lang/Mixin.java b/src/main/groovy/groovy/lang/Mixin.java
index 22ef4b9..10b546e 100644
--- a/src/main/groovy/groovy/lang/Mixin.java
+++ b/src/main/groovy/groovy/lang/Mixin.java
@@ -29,8 +29,6 @@ import java.lang.annotation.Target;
  * Provides a mechanism for mixing in methods into a class.
  *
  * @deprecated static mixins have been deprecated in favour of traits (trait keyword).
- *
- * @author Alex Tkachman
  */
 @java.lang.annotation.Documented
 @Retention(RetentionPolicy.RUNTIME)
diff --git a/src/main/groovy/groovy/lang/MutableMetaClass.java b/src/main/groovy/groovy/lang/MutableMetaClass.java
index 903c895..b361599 100644
--- a/src/main/groovy/groovy/lang/MutableMetaClass.java
+++ b/src/main/groovy/groovy/lang/MutableMetaClass.java
@@ -32,7 +32,6 @@ import java.lang.reflect.Method;
  *
  * @see MetaClassImpl
  * @see MetaClass
- * @author Graeme Rocher
  * @since 1.5
  */
 public interface MutableMetaClass extends MetaClass {
diff --git a/src/main/groovy/groovy/lang/ParameterArray.java b/src/main/groovy/groovy/lang/ParameterArray.java
index d3a4163..ba86c8b 100644
--- a/src/main/groovy/groovy/lang/ParameterArray.java
+++ b/src/main/groovy/groovy/lang/ParameterArray.java
@@ -20,8 +20,6 @@ package groovy.lang;
 
 /**
  * Distinguish a parameter array from Object[].
- *
- * @author Pilho Kim
  */
 public class ParameterArray {
 
diff --git a/src/main/groovy/groovy/lang/PropertyAccessInterceptor.java b/src/main/groovy/groovy/lang/PropertyAccessInterceptor.java
index 6d2906e..69d2c48 100644
--- a/src/main/groovy/groovy/lang/PropertyAccessInterceptor.java
+++ b/src/main/groovy/groovy/lang/PropertyAccessInterceptor.java
@@ -22,7 +22,6 @@ package groovy.lang;
  * <p>An interface that adds the ability to intercept
  * property getters/setters
  *
- * @author Graeme Rocher
  * @since Oct 24, 2005
  */
 public interface PropertyAccessInterceptor extends Interceptor {
diff --git a/src/main/groovy/groovy/lang/ProxyMetaClass.java b/src/main/groovy/groovy/lang/ProxyMetaClass.java
index 8c41f7d..06c8d96 100644
--- a/src/main/groovy/groovy/lang/ProxyMetaClass.java
+++ b/src/main/groovy/groovy/lang/ProxyMetaClass.java
@@ -29,8 +29,6 @@ package groovy.lang;
  * as a per-instance MetaClass running in a single thread. Do not place this MetaClass in the MetaClassRegistry
  * as it will result in unpredictable behaviour
  *
- * @author Dierk Koenig
- * @author Graeme Rocher
  * @see groovy.lang.MetaClassRegistry
  */
 public class ProxyMetaClass extends MetaClassImpl implements AdaptingMetaClass {
diff --git a/src/main/groovy/groovy/lang/ReadOnlyPropertyException.java b/src/main/groovy/groovy/lang/ReadOnlyPropertyException.java
index 77231d2..cc229f9 100644
--- a/src/main/groovy/groovy/lang/ReadOnlyPropertyException.java
+++ b/src/main/groovy/groovy/lang/ReadOnlyPropertyException.java
@@ -21,8 +21,6 @@ package groovy.lang;
 
 /**
  * This exception is thrown if an attempt is made to set a read only property
- * 
- * @author <a href="mailto:james@coredevelopers.net">James Strachan</a>
  */
 public class ReadOnlyPropertyException extends MissingPropertyException {
 
diff --git a/src/main/groovy/groovy/lang/Reference.java b/src/main/groovy/groovy/lang/Reference.java
index c4bf21d..e187d2b 100644
--- a/src/main/groovy/groovy/lang/Reference.java
+++ b/src/main/groovy/groovy/lang/Reference.java
@@ -24,8 +24,6 @@ import java.io.Serializable;
 
 /**
  * Represents a reference to a value
- * 
- * @author <a href="mailto:james@coredevelopers.net">James Strachan</a>
  */
 public class Reference<T> extends GroovyObjectSupport implements Serializable {
 
diff --git a/src/main/groovy/groovy/lang/Script.java b/src/main/groovy/groovy/lang/Script.java
index ea70461..b9bda4b 100644
--- a/src/main/groovy/groovy/lang/Script.java
+++ b/src/main/groovy/groovy/lang/Script.java
@@ -28,9 +28,6 @@ import java.io.IOException;
 
 /**
  * This object represents a Groovy script
- *
- * @author <a href="mailto:james@coredevelopers.net">James Strachan</a>
- * @author Guillaume Laforge
  */
 public abstract class Script extends GroovyObjectSupport {
     private Binding binding;
diff --git a/src/main/groovy/groovy/lang/Singleton.java b/src/main/groovy/groovy/lang/Singleton.java
index 9b86c8b..9859bec 100644
--- a/src/main/groovy/groovy/lang/Singleton.java
+++ b/src/main/groovy/groovy/lang/Singleton.java
@@ -40,9 +40,6 @@ import java.lang.annotation.Target;
  * <li>provide one or more constructors with arguments for a quasi-singleton - these constructors will be used
  * to create instances that are independent of the singleton instance returned by the singleton property</li>
  * </ul>
- *
- * @author Alex Tkachman
- * @author Paul King
  */
 @java.lang.annotation.Documented
 @Retention(RetentionPolicy.SOURCE)
diff --git a/src/main/groovy/groovy/lang/StringWriterIOException.java b/src/main/groovy/groovy/lang/StringWriterIOException.java
index 9fef866..f178b48 100644
--- a/src/main/groovy/groovy/lang/StringWriterIOException.java
+++ b/src/main/groovy/groovy/lang/StringWriterIOException.java
@@ -22,8 +22,6 @@ import java.io.IOException;
 
 /**
  * An IO exception occurred trying to append to a StringWriter which should never happen.
- * 
- * @author <a href="mailto:james@coredevelopers.net">James Strachan</a>
  */
 public class StringWriterIOException extends RuntimeException {
 
diff --git a/src/main/groovy/groovy/lang/TrampolineClosure.java b/src/main/groovy/groovy/lang/TrampolineClosure.java
index 71f31c8..e94e430 100644
--- a/src/main/groovy/groovy/lang/TrampolineClosure.java
+++ b/src/main/groovy/groovy/lang/TrampolineClosure.java
@@ -25,8 +25,6 @@ package groovy.lang;
  * method, the TrampolineClosure will again be invoked. This repetitive invocation of returned TrampolineClosure instances will continue
  * until a value other than TrampolineClosure is returned.
  * That value will become the final result of the trampoline.
- *
- * @author Vaclav Pech
  */
 final class TrampolineClosure<V> extends Closure<V> {
 
diff --git a/src/main/groovy/groovy/lang/Tuple.java b/src/main/groovy/groovy/lang/Tuple.java
index 8a1a6e7..eab9101 100644
--- a/src/main/groovy/groovy/lang/Tuple.java
+++ b/src/main/groovy/groovy/lang/Tuple.java
@@ -27,8 +27,6 @@ import java.util.Objects;
 
 /**
  * Represents a list of Objects.
- * 
- * @author <a href="mailto:james@coredevelopers.net">James Strachan</a>
  */
 public class Tuple<E> extends AbstractList<E> implements Serializable {
     private static final long serialVersionUID = -6707770506387821031L;
diff --git a/src/main/groovy/groovy/lang/Writable.java b/src/main/groovy/groovy/lang/Writable.java
index ec135cd..209783b 100644
--- a/src/main/groovy/groovy/lang/Writable.java
+++ b/src/main/groovy/groovy/lang/Writable.java
@@ -30,8 +30,6 @@ import java.io.Writer;
  * It is worth noting that writable implementations often override their
  * toString() implementation as well to allow rendering the same result 
  * directly to a String; however this is not required.
- *
- * @author <a href="mailto:james@coredevelopers.net">James Strachan</a>
  */
 public interface Writable {
 
diff --git a/src/main/groovy/groovy/security/GroovyCodeSourcePermission.java b/src/main/groovy/groovy/security/GroovyCodeSourcePermission.java
index 49032cd..2524c25 100644
--- a/src/main/groovy/groovy/security/GroovyCodeSourcePermission.java
+++ b/src/main/groovy/groovy/security/GroovyCodeSourcePermission.java
@@ -25,8 +25,6 @@ import java.security.BasicPermission;
  * codebase cannot be determined.  Typically this permission is only
  * required by clients that want to associate a code source with a script which
  * is a String or an InputStream.
- *
- * @author Steve Goetze
  */
 public final class GroovyCodeSourcePermission extends BasicPermission {
 
diff --git a/src/main/groovy/groovy/time/BaseDuration.java b/src/main/groovy/groovy/time/BaseDuration.java
index e2cc023..dd21ab4 100644
--- a/src/main/groovy/groovy/time/BaseDuration.java
+++ b/src/main/groovy/groovy/time/BaseDuration.java
@@ -29,7 +29,6 @@ import java.util.List;
 /**
  * Base class for date and time durations.
  *
- * @author John Wilson tug@wilson.co.uk
  * @see Duration
  */
 public abstract class BaseDuration implements Comparable<BaseDuration> {
diff --git a/src/main/groovy/groovy/time/DatumDependentDuration.java b/src/main/groovy/groovy/time/DatumDependentDuration.java
index c73d9aa..a87cb6c 100644
--- a/src/main/groovy/groovy/time/DatumDependentDuration.java
+++ b/src/main/groovy/groovy/time/DatumDependentDuration.java
@@ -29,8 +29,6 @@ import java.util.Date;
  * <p>
  * I don't know how many days in a month unless I know the name of the month 
  * (and if it's a leap year if the month is February)
- *
- * @author John Wilson tug@wilson.co.uk
  */
 public class DatumDependentDuration extends BaseDuration {
     public DatumDependentDuration(final int years, final int months, final int days, final int hours, final int minutes, final int seconds, final int millis) {
diff --git a/src/main/groovy/groovy/time/Duration.java b/src/main/groovy/groovy/time/Duration.java
index e187957..7e652e7 100644
--- a/src/main/groovy/groovy/time/Duration.java
+++ b/src/main/groovy/groovy/time/Duration.java
@@ -31,8 +31,6 @@ import java.util.Date;
  * <p>
  * If you ask Duration to convert itself to milliseconds then it will work on the basis of 24 hours
  * in a day. If you add or subtract it from a date it will take daylight saving into account.
- *
- * @author John Wilson tug@wilson.co.uk
  */
 public class Duration extends BaseDuration {
     public Duration(final int days, final int hours, final int minutes, final int seconds, final int millis) {
diff --git a/src/main/groovy/groovy/time/TimeDatumDependentDuration.java b/src/main/groovy/groovy/time/TimeDatumDependentDuration.java
index eead45a..00e9797 100644
--- a/src/main/groovy/groovy/time/TimeDatumDependentDuration.java
+++ b/src/main/groovy/groovy/time/TimeDatumDependentDuration.java
@@ -24,8 +24,6 @@ import java.util.Date;
 /**
  * TimeDatumDuration represents a time period which results from an
  * arithmetic operation between a TimeDuration object and a DatumDuration object
- * 
- * @author John Wilson tug@wilson.co.uk
  */
 public class TimeDatumDependentDuration extends DatumDependentDuration {
     public TimeDatumDependentDuration(int years, int months, int days, int hours, int minutes, int seconds, int millis) {
diff --git a/src/main/groovy/groovy/time/TimeDuration.java b/src/main/groovy/groovy/time/TimeDuration.java
index 767b8e6..46e15b7 100644
--- a/src/main/groovy/groovy/time/TimeDuration.java
+++ b/src/main/groovy/groovy/time/TimeDuration.java
@@ -33,8 +33,6 @@ import java.util.Date;
  * <p>
  * If you ask Duration to convert itself to milliseconds then it will work on the basis of 60 seconds in a minute.
  * If you add or subtract it from a date it will take leap seconds into account.
- *
- * @author John Wilson tug@wilson.co.uk
  */
 
 public class TimeDuration extends Duration {
diff --git a/src/main/groovy/groovy/transform/builder/SimpleStrategy.java b/src/main/groovy/groovy/transform/builder/SimpleStrategy.java
index fd96b7f..b01493e 100644
--- a/src/main/groovy/groovy/transform/builder/SimpleStrategy.java
+++ b/src/main/groovy/groovy/transform/builder/SimpleStrategy.java
@@ -77,8 +77,6 @@ import static org.codehaus.groovy.transform.BuilderASTTransformation.NO_EXCEPTIO
  *
  * The 'useSetters' annotation attribute can be used for writable properties as per the {@code Builder} transform documentation.
  * The other annotation attributes for the {@code @Builder} transform for configuring the building process aren't applicable for this strategy.
- *
- * @author Paul King
  */
 public class SimpleStrategy extends BuilderASTTransformation.AbstractBuilderStrategy {
     public void build(BuilderASTTransformation transform, AnnotatedNode annotatedNode, AnnotationNode anno) {
diff --git a/src/main/groovy/groovy/transform/stc/ClosureSignatureHint.java b/src/main/groovy/groovy/transform/stc/ClosureSignatureHint.java
index 9a77d20..0525a98 100644
--- a/src/main/groovy/groovy/transform/stc/ClosureSignatureHint.java
+++ b/src/main/groovy/groovy/transform/stc/ClosureSignatureHint.java
@@ -47,7 +47,6 @@ import java.util.List;
  *
  * <p>Several predefined hints can be found, which should cover most of the use cases.</p>
  *
- * @author Cédric Champeau
  * @since 2.3.0
  *
  */
diff --git a/src/main/groovy/groovy/transform/stc/FirstParam.java b/src/main/groovy/groovy/transform/stc/FirstParam.java
index 81eb0e7..706e048 100644
--- a/src/main/groovy/groovy/transform/stc/FirstParam.java
+++ b/src/main/groovy/groovy/transform/stc/FirstParam.java
@@ -30,7 +30,6 @@ import org.codehaus.groovy.control.SourceUnit;
  *
  * <p>This class has several inner classes that also helps picking generic argument types instead of the parameter type.</p>
  *
- * @author Cédric Champeau
  * @since 2.3.0
  */
 public class FirstParam extends PickAnyArgumentHint {
@@ -42,7 +41,6 @@ public class FirstParam extends PickAnyArgumentHint {
      * <p>A hint used to instruct the type checker to pick the first generic type of the first parameter type. For example:</p>
      * <code>void &lt;T&gt; doWithElements(List&lt;T&gt; src, @ClosureParams(FirstParam.FirstGenericType.class) Closure c) { src.each { c.call(it) } }</code>
      *
-     * @author Cédric Champeau
      * @since 2.3.0
      */
     public static class FirstGenericType extends PickAnyArgumentHint {
@@ -55,7 +53,6 @@ public class FirstParam extends PickAnyArgumentHint {
      * <p>A hint used to instruct the type checker to pick the second generic type of the first parameter type. For example:</p>
      * <code>void &lt;T,U&gt; doWithElements(Tuple&lt;T,U&gt; src, @ClosureParams(FirstParam.SecondGenericType.class) Closure c) { src.each { c.call(it) } }</code>
      *
-     * @author Cédric Champeau
      * @since 2.3.0
      */
     public static class SecondGenericType extends PickAnyArgumentHint {
@@ -68,7 +65,6 @@ public class FirstParam extends PickAnyArgumentHint {
      * <p>A hint used to instruct the type checker to pick the third generic type of the first parameter type. For example:</p>
      * <code>void &lt;T,U,V&gt; doWithElements(Triple&lt;T,U,V&gt; src, @ClosureParams(FirstParam.ThirdGenericType.class) Closure c) { src.each { c.call(it) } }</code>
      *
-     * @author Cédric Champeau
      * @since 2.3.0
      */
     public static class ThirdGenericType extends PickAnyArgumentHint {
diff --git a/src/main/groovy/groovy/transform/stc/FromAbstractTypeMethods.java b/src/main/groovy/groovy/transform/stc/FromAbstractTypeMethods.java
index e5125f1..b00544b 100644
--- a/src/main/groovy/groovy/transform/stc/FromAbstractTypeMethods.java
+++ b/src/main/groovy/groovy/transform/stc/FromAbstractTypeMethods.java
@@ -34,7 +34,6 @@ import java.util.List;
  * to infer the expected parameter types. This is especially useful for closure parameter type
  * inference when implicit closure coercion is in action.
  *
- * @author Cédric Champeau
  * @since 2.3.0
  */
 public class FromAbstractTypeMethods extends ClosureSignatureHint {
diff --git a/src/main/groovy/groovy/transform/stc/FromString.java b/src/main/groovy/groovy/transform/stc/FromString.java
index 12f9371..1a812ee 100644
--- a/src/main/groovy/groovy/transform/stc/FromString.java
+++ b/src/main/groovy/groovy/transform/stc/FromString.java
@@ -46,7 +46,6 @@ import java.util.List;
  * ... hints because it is actually much slower. Using this hint should therefore be limited
  * to cases where it's not possible to express the signature using the existing hints.</p>
  *
- * @author Cédric Champeau
  * @since 2.3.0
  */
 public class FromString extends ClosureSignatureHint {
diff --git a/src/main/groovy/groovy/transform/stc/PickAnyArgumentHint.java b/src/main/groovy/groovy/transform/stc/PickAnyArgumentHint.java
index 6a5463f..0f4d92f 100644
--- a/src/main/groovy/groovy/transform/stc/PickAnyArgumentHint.java
+++ b/src/main/groovy/groovy/transform/stc/PickAnyArgumentHint.java
@@ -39,7 +39,6 @@ import org.codehaus.groovy.control.SourceUnit;
  * <p></p>
  * <p>This class is extended by several hint providers that make it easier to use as annotation values.</p>
  *
- * @author Cédric Champeau
  * @since 2.3.0
  */
 public class PickAnyArgumentHint extends SingleSignatureClosureHint {
diff --git a/src/main/groovy/groovy/transform/stc/SecondParam.java b/src/main/groovy/groovy/transform/stc/SecondParam.java
index c077750..ee9c4a1 100644
--- a/src/main/groovy/groovy/transform/stc/SecondParam.java
+++ b/src/main/groovy/groovy/transform/stc/SecondParam.java
@@ -30,7 +30,6 @@ import org.codehaus.groovy.control.SourceUnit;
  *
  * <p>This class has several inner classes that also helps picking generic argument types instead of the parameter type.</p>
  *
- * @author Cédric Champeau
  * @since 2.3.0
  */
 public class SecondParam extends PickAnyArgumentHint {
@@ -42,7 +41,6 @@ public class SecondParam extends PickAnyArgumentHint {
      * <p>A hint used to instruct the type checker to pick the first generic type of the second parameter type. For example:</p>
      * <code>void &lt;T&gt; doWithElements(String base, List&lt;T&gt; src, @ClosureParams(SecondParam.FirstGenericType.class) Closure c) { ... } }</code>
      *
-     * @author Cédric Champeau
      * @since 2.3.0
      */
     public static class FirstGenericType extends PickAnyArgumentHint {
@@ -55,7 +53,6 @@ public class SecondParam extends PickAnyArgumentHint {
      * <p>A hint used to instruct the type checker to pick the second generic type of the second parameter type. For example:</p>
      * <code>void &lt;T,U&gt; doWithElements(String base, Tuple&lt;T,U&gt; src, @ClosureParams(SecondParam.SecondGenericType.class) Closure c) { ... }</code>
      *
-     * @author Cédric Champeau
      * @since 2.3.0
      */
     public static class SecondGenericType extends PickAnyArgumentHint {
@@ -68,7 +65,6 @@ public class SecondParam extends PickAnyArgumentHint {
      * <p>A hint used to instruct the type checker to pick the second generic type of the second parameter type. For example:</p>
      * <code>void &lt;T,U,V&gt; doWithElements(String base, Triple&lt;T,U,V&gt; src, @ClosureParams(SecondParam.ThirdGenericType.class) Closure c) { ... }</code>
      *
-     * @author Cédric Champeau
      * @since 2.3.0
      */
     public static class ThirdGenericType extends PickAnyArgumentHint {
diff --git a/src/main/groovy/groovy/transform/stc/SingleSignatureClosureHint.java b/src/main/groovy/groovy/transform/stc/SingleSignatureClosureHint.java
index 3db66ff..d1085dd 100644
--- a/src/main/groovy/groovy/transform/stc/SingleSignatureClosureHint.java
+++ b/src/main/groovy/groovy/transform/stc/SingleSignatureClosureHint.java
@@ -31,7 +31,6 @@ import java.util.List;
  * A simplified version of a {@link groovy.transform.stc.ClosureSignatureHint} which is suitable
  * for monomorphic closures, that is to say closures which only respond to a single signature.
  *
- * @author Cédric Champeau
  * @since 2.3.0
  */
 public abstract class SingleSignatureClosureHint extends ClosureSignatureHint {
diff --git a/src/main/groovy/groovy/transform/stc/ThirdParam.java b/src/main/groovy/groovy/transform/stc/ThirdParam.java
index c493e36..5b7a803 100644
--- a/src/main/groovy/groovy/transform/stc/ThirdParam.java
+++ b/src/main/groovy/groovy/transform/stc/ThirdParam.java
@@ -30,7 +30,6 @@ import org.codehaus.groovy.control.SourceUnit;
  *
  * <p>This class has several inner classes that also helps picking generic argument types instead of the parameter type.</p>
  *
- * @author Cédric Champeau
  * @since 2.3.0
  */
 public class ThirdParam extends PickAnyArgumentHint {
@@ -42,7 +41,6 @@ public class ThirdParam extends PickAnyArgumentHint {
      * <p>A hint used to instruct the type checker to pick the first generic type of the third parameter type. For example:</p>
      * <code>void &lt;T&gt; doWithElements(String first, Integer second, List&lt;T&gt; third, @ClosureParams(SecondParam.FirstGenericType.class) Closure c) { ... } }</code>
      *
-     * @author Cédric Champeau
      * @since 2.3.0
      */
     public static class FirstGenericType extends PickAnyArgumentHint {
@@ -56,7 +54,6 @@ public class ThirdParam extends PickAnyArgumentHint {
      * <p>A hint used to instruct the type checker to pick the second generic type of the third parameter type. For example:</p>
      * <code>void &lt;T,U&gt; doWithElements(String first, Integer second, Tuple&lt;T,U&gt; third, @ClosureParams(SecondParam.SecondGenericType.class) Closure c) { ... }</code>
      *
-     * @author Cédric Champeau
      * @since 2.3.0
      */
     public static class SecondGenericType extends PickAnyArgumentHint {
@@ -69,7 +66,6 @@ public class ThirdParam extends PickAnyArgumentHint {
      * <p>A hint used to instruct the type checker to pick the second generic type of the third parameter type. For example:</p>
      * <code>void &lt;T,U,V&gt; doWithElements(String first, Integer second, Triple&lt;T,U,V&gt; src, @ClosureParams(SecondParam.ThirdGenericType.class) Closure c) { ... }</code>
      *
-     * @author Cédric Champeau
      * @since 2.3.0
      */
     public static class ThirdGenericType extends PickAnyArgumentHint {
diff --git a/src/main/groovy/groovy/ui/GroovySocketServer.java b/src/main/groovy/groovy/ui/GroovySocketServer.java
index b0d27c5..a06e13a 100644
--- a/src/main/groovy/groovy/ui/GroovySocketServer.java
+++ b/src/main/groovy/groovy/ui/GroovySocketServer.java
@@ -60,8 +60,6 @@ import java.util.regex.Pattern;
  * <li>out - The output PrintWriter, should you need it for some reason.</li> 
  * <li>socket - The socket, should you need it for some reason.</li> 
  * </ul>
- * 
- * @author Jeremy Rayner
  */
 public class GroovySocketServer implements Runnable {
     private URL url;
diff --git a/src/main/groovy/groovy/util/AbstractFactory.java b/src/main/groovy/groovy/util/AbstractFactory.java
index 54e68e1..eb8d509 100644
--- a/src/main/groovy/groovy/util/AbstractFactory.java
+++ b/src/main/groovy/groovy/util/AbstractFactory.java
@@ -22,10 +22,6 @@ import groovy.lang.Closure;
 
 import java.util.Map;
 
-/**
- * @author <a href="mailto:aalmiray@users.sourceforge.com">Andres Almiray</a>
- * @author Danno Ferrin
- */
 public abstract class AbstractFactory implements Factory {
     public boolean isLeaf() {
         return false;
diff --git a/src/main/groovy/groovy/util/BufferedIterator.java b/src/main/groovy/groovy/util/BufferedIterator.java
index 6fa50a9..74acfeb 100644
--- a/src/main/groovy/groovy/util/BufferedIterator.java
+++ b/src/main/groovy/groovy/util/BufferedIterator.java
@@ -23,7 +23,6 @@ import java.util.Iterator;
 /**
  * An iterator that allows examining the next element without consuming it.
  *
- * @author Andrew Taylor
  * @since 2.5.0
  */
 public interface BufferedIterator<T> extends Iterator<T> {
diff --git a/src/main/groovy/groovy/util/BuilderSupport.java b/src/main/groovy/groovy/util/BuilderSupport.java
index f634f1f..ceccd87 100644
--- a/src/main/groovy/groovy/util/BuilderSupport.java
+++ b/src/main/groovy/groovy/util/BuilderSupport.java
@@ -28,10 +28,7 @@ import java.util.List;
 import java.util.Map;
 
 /**
- * An abstract base class for creating arbitrary nested trees of objects
- * or events
- *
- * @author <a href="mailto:james@coredevelopers.net">James Strachan</a>
+ * An abstract base class for creating arbitrary nested trees of objects or events
  */
 public abstract class BuilderSupport extends GroovyObjectSupport {
 
diff --git a/src/main/groovy/groovy/util/CharsetToolkit.java b/src/main/groovy/groovy/util/CharsetToolkit.java
index d547cc7..7b2d0d8 100644
--- a/src/main/groovy/groovy/util/CharsetToolkit.java
+++ b/src/main/groovy/groovy/util/CharsetToolkit.java
@@ -55,8 +55,6 @@ import java.util.Collection;
  *     System.out.println(line);
  * }
  * </pre>
- *
- * @author Guillaume Laforge
  */
 public class CharsetToolkit {
     private static final Charset[] EMPTY_CHARSET_ARRAY = new Charset[0];
diff --git a/src/main/groovy/groovy/util/ClosureComparator.java b/src/main/groovy/groovy/util/ClosureComparator.java
index dc70ea6..a791521 100644
--- a/src/main/groovy/groovy/util/ClosureComparator.java
+++ b/src/main/groovy/groovy/util/ClosureComparator.java
@@ -26,8 +26,6 @@ import java.util.Comparator;
 
 /**
  * A Comparator which uses a closure to compare 2 values being equal
- * 
- * @author <a href="mailto:james@coredevelopers.net">James Strachan</a>
  */
 public class ClosureComparator<T> implements Comparator<T>, Serializable {
 
diff --git a/src/main/groovy/groovy/util/ConfigObject.java b/src/main/groovy/groovy/util/ConfigObject.java
index d584204..27ed12f 100644
--- a/src/main/groovy/groovy/util/ConfigObject.java
+++ b/src/main/groovy/groovy/util/ConfigObject.java
@@ -43,8 +43,6 @@ import java.util.Set;
  * This means that navigating to foo.bar.stuff will not return null but nested ConfigObjects which are of course empty maps
  * The Groovy truth can be used to check for the existence of "real" entries.
  *
- * @author Graeme Rocher
- * @author Guillaume Laforge (rewrite in Java related to security constraints on Google App Engine)
  * @since 1.5
  */
 public class ConfigObject extends GroovyObjectSupport implements Writable, Map, Cloneable {
diff --git a/src/main/groovy/groovy/util/DelegatingScript.java b/src/main/groovy/groovy/util/DelegatingScript.java
index 959c8e8..540b098 100644
--- a/src/main/groovy/groovy/util/DelegatingScript.java
+++ b/src/main/groovy/groovy/util/DelegatingScript.java
@@ -82,8 +82,6 @@ import org.codehaus.groovy.runtime.InvokerHelper;
  * binding.setProperty("a",1);
  * ((Closure)binding.getProperty("b")).call(2);
  * </pre>
- *
- * @author Kohsuke Kawaguchi
  */
 public abstract class DelegatingScript extends Script {
     private Object delegate;
diff --git a/src/main/groovy/groovy/util/Eval.java b/src/main/groovy/groovy/util/Eval.java
index 87f9295..dba875d 100644
--- a/src/main/groovy/groovy/util/Eval.java
+++ b/src/main/groovy/groovy/util/Eval.java
@@ -34,7 +34,6 @@ import org.codehaus.groovy.control.CompilationFailedException;
  * </pre>
  * 
  * @see GroovyShell
- * @author Dierk Koenig
  */
 
 public class Eval {
diff --git a/src/main/groovy/groovy/util/Expando.java b/src/main/groovy/groovy/util/Expando.java
index 7b2279a..21a2931 100644
--- a/src/main/groovy/groovy/util/Expando.java
+++ b/src/main/groovy/groovy/util/Expando.java
@@ -33,10 +33,6 @@ import java.util.Map.Entry;
 
 /**
  * Represents a dynamically expandable bean.
- *
- * @author <a href="mailto:james@coredevelopers.net">James Strachan</a>
- * @author Hein Meling
- * @author Pilho Kim
  */
 public class Expando extends GroovyObjectSupport {
 
diff --git a/src/main/groovy/groovy/util/Factory.java b/src/main/groovy/groovy/util/Factory.java
index c8e8fc7..42d831f 100644
--- a/src/main/groovy/groovy/util/Factory.java
+++ b/src/main/groovy/groovy/util/Factory.java
@@ -22,10 +22,6 @@ import groovy.lang.Closure;
 
 import java.util.Map;
 
-/**
- * @author <a href="mailto:aalmiray@users.sourceforge.com">Andres Almiray</a>
- * @author Danno Ferrin
- */
 public interface Factory {
     /**
      *
diff --git a/src/main/groovy/groovy/util/FactoryBuilderSupport.java b/src/main/groovy/groovy/util/FactoryBuilderSupport.java
index 1074e53..2f9347c 100644
--- a/src/main/groovy/groovy/util/FactoryBuilderSupport.java
+++ b/src/main/groovy/groovy/util/FactoryBuilderSupport.java
@@ -55,10 +55,6 @@ import java.util.logging.Logger;
  * across threads in a multi-threaded environment.  A locking mechanism
  * should be implemented by the subclass if use is expected across
  * multiple threads.
- *
- * @author <a href="mailto:james@coredevelopers.net">James Strachan</a>
- * @author <a href="mailto:aalmiray@users.sourceforge.com">Andres Almiray</a>
- * @author Danno Ferrin
  */
 public abstract class FactoryBuilderSupport extends Binding {
     public static final String CURRENT_FACTORY = "_CURRENT_FACTORY_";
diff --git a/src/main/groovy/groovy/util/GroovyCollections.java b/src/main/groovy/groovy/util/GroovyCollections.java
index 19bef50..e70230c 100644
--- a/src/main/groovy/groovy/util/GroovyCollections.java
+++ b/src/main/groovy/groovy/util/GroovyCollections.java
@@ -31,9 +31,6 @@ import java.util.Set;
 
 /**
  * A Collections utility class
- *
- * @author Paul King
- * @author Jim White
  */
 public class GroovyCollections {
     /**
diff --git a/src/main/groovy/groovy/util/GroovyScriptEngine.java b/src/main/groovy/groovy/util/GroovyScriptEngine.java
index c9e0c5b..38ce3fd 100644
--- a/src/main/groovy/groovy/util/GroovyScriptEngine.java
+++ b/src/main/groovy/groovy/util/GroovyScriptEngine.java
@@ -59,12 +59,6 @@ import java.util.concurrent.ConcurrentHashMap;
 /**
  * Specific script engine able to reload modified scripts as well as dealing properly
  * with dependent scripts.
- *
- * @author sam
- * @author Marc Palmer
- * @author Guillaume Laforge
- * @author Jochen Theodorou
- * @author Mattias Reichel
  */
 public class GroovyScriptEngine implements ResourceConnector {
     private static final ClassLoader CL_STUB = AccessController.doPrivileged(new PrivilegedAction<ClassLoader>() {
diff --git a/src/main/groovy/groovy/util/IndentPrinter.java b/src/main/groovy/groovy/util/IndentPrinter.java
index df3d8c2..ccbec0f 100644
--- a/src/main/groovy/groovy/util/IndentPrinter.java
+++ b/src/main/groovy/groovy/util/IndentPrinter.java
@@ -57,8 +57,6 @@ import java.io.Writer;
  *   child 2
  * parent2
  * </pre>
- *
- * @author <a href="mailto:james@coredevelopers.net">James Strachan</a>
  */
 public class IndentPrinter {
 
diff --git a/src/main/groovy/groovy/util/MapEntry.java b/src/main/groovy/groovy/util/MapEntry.java
index 9190fcd..55e023b 100644
--- a/src/main/groovy/groovy/util/MapEntry.java
+++ b/src/main/groovy/groovy/util/MapEntry.java
@@ -24,8 +24,6 @@ import java.util.Map;
 
 /**
  * A Map.Entry implementation.
- * 
- * @author <a href="mailto:james@coredevelopers.net">James Strachan</a>
  */
 public class MapEntry implements Map.Entry {
 
diff --git a/src/main/groovy/groovy/util/Node.java b/src/main/groovy/groovy/util/Node.java
index 7063fba..91faad9 100644
--- a/src/main/groovy/groovy/util/Node.java
+++ b/src/main/groovy/groovy/util/Node.java
@@ -49,9 +49,6 @@ import java.util.Stack;
  * QName as the name which includes a namespace URI and a local name. Or a JMX ObjectName etc.
  * So this class can represent metadata like <code>{foo a=1 b="abc"}</code> or nested
  * metadata like <code>{foo a=1 b="123" { bar x=12 text="hello" }}</code>
- *
- * @author <a href="mailto:james@coredevelopers.net">James Strachan</a>
- * @author Paul King
  */
 public class Node implements Serializable, Cloneable {
 
diff --git a/src/main/groovy/groovy/util/NodeBuilder.java b/src/main/groovy/groovy/util/NodeBuilder.java
index babe5c3..79a3864 100644
--- a/src/main/groovy/groovy/util/NodeBuilder.java
+++ b/src/main/groovy/groovy/util/NodeBuilder.java
@@ -23,8 +23,6 @@ import java.util.Map;
 /**
  * A helper class for creating nested trees of Node objects for 
  * handling arbitrary data
- * 
- * @author <a href="mailto:james@coredevelopers.net">James Strachan</a>
  */
 public class NodeBuilder extends BuilderSupport {
 
diff --git a/src/main/groovy/groovy/util/NodePrinter.java b/src/main/groovy/groovy/util/NodePrinter.java
index ca93bc7..27dd774 100644
--- a/src/main/groovy/groovy/util/NodePrinter.java
+++ b/src/main/groovy/groovy/util/NodePrinter.java
@@ -27,9 +27,6 @@ import java.util.Map;
 
 /**
  * A helper class for creating nested trees of data
- *
- * @author <a href="mailto:james@coredevelopers.net">James Strachan</a>
- * @author Christian Stein
  */
 public class NodePrinter {
 
diff --git a/src/main/groovy/groovy/util/ObjectGraphBuilder.java b/src/main/groovy/groovy/util/ObjectGraphBuilder.java
index 6dc1660..b26a966 100644
--- a/src/main/groovy/groovy/util/ObjectGraphBuilder.java
+++ b/src/main/groovy/groovy/util/ObjectGraphBuilder.java
@@ -37,9 +37,6 @@ import java.util.regex.Pattern;
  * A builder for creating object graphs.<br>
  * Each node defines the class to be created and the property on its parent (if
  * any) at the same time.
- *
- * @author Scott Vlaminck (http://refactr.com)
- * @author <a href="mailto:aalmiray@users.sourceforge.com">Andres Almiray</a>
  */
 public class ObjectGraphBuilder extends FactoryBuilderSupport {
     public static final String NODE_CLASS = "_NODE_CLASS_";
diff --git a/src/main/groovy/groovy/util/OrderBy.java b/src/main/groovy/groovy/util/OrderBy.java
index 703c9bc..a20d364 100644
--- a/src/main/groovy/groovy/util/OrderBy.java
+++ b/src/main/groovy/groovy/util/OrderBy.java
@@ -30,8 +30,6 @@ import java.util.List;
 /**
  * A helper class for sorting objects via a closure to return the field
  * or operation on which to sort.
- *
- * @author <a href="mailto:james@coredevelopers.net">James Strachan</a>
  */
 public class OrderBy<T> implements Comparator<T>, Serializable {
 
diff --git a/src/main/groovy/groovy/util/Proxy.java b/src/main/groovy/groovy/util/Proxy.java
index ac080b3..a8ef890 100644
--- a/src/main/groovy/groovy/util/Proxy.java
+++ b/src/main/groovy/groovy/util/Proxy.java
@@ -28,9 +28,6 @@ import java.util.Iterator;
  * Dynamic groovy proxy for another object.  All method
  * invocations get forwarded to actual object, unless the proxy overrides it.
  * See groovy/util/ProxyTest.groovy for usage details.
- *
- * @author Troy Heninger
- * @author Dierk Koenig
  */
 public class Proxy extends GroovyObjectSupport {
 
diff --git a/src/main/groovy/groovy/util/ProxyGenerator.java b/src/main/groovy/groovy/util/ProxyGenerator.java
index 6ef591c..22fa9b3 100644
--- a/src/main/groovy/groovy/util/ProxyGenerator.java
+++ b/src/main/groovy/groovy/util/ProxyGenerator.java
@@ -44,10 +44,6 @@ import java.util.Set;
 /**
  * Classes to generate 'Proxy' objects which implement interfaces,
  * maps of closures and/or extend classes/delegates.
- *
- * @author Paul King
- * @author Guillaume Laforge
- * @author Cedric Champeau
  */
 public class ProxyGenerator {
     private static final Class[] EMPTY_CLASS_ARRAY = new Class[0];
diff --git a/src/main/groovy/groovy/util/ResourceConnector.java b/src/main/groovy/groovy/util/ResourceConnector.java
index 81e329a..a845d6f 100644
--- a/src/main/groovy/groovy/util/ResourceConnector.java
+++ b/src/main/groovy/groovy/util/ResourceConnector.java
@@ -22,8 +22,6 @@ import java.net.URLConnection;
 
 /**
  * Base interface for customizing where resources can be found for the <code>GroovyScriptEngine</code>.
- *
- * @author sam
  */
 public interface ResourceConnector {
 
diff --git a/src/main/groovy/groovy/util/ResourceException.java b/src/main/groovy/groovy/util/ResourceException.java
index 0f57b53..a017a6f 100644
--- a/src/main/groovy/groovy/util/ResourceException.java
+++ b/src/main/groovy/groovy/util/ResourceException.java
@@ -18,9 +18,6 @@
  */
 package groovy.util;
 
-/**
- * @author sam
- */
 public class ResourceException extends Exception {
 
     private static final long serialVersionUID = -4640685456255837192L;
diff --git a/src/main/groovy/groovy/util/ScriptException.java b/src/main/groovy/groovy/util/ScriptException.java
index 491b94a..f8dcf78 100644
--- a/src/main/groovy/groovy/util/ScriptException.java
+++ b/src/main/groovy/groovy/util/ScriptException.java
@@ -18,9 +18,6 @@
  */
 package groovy.util;
 
-/**
- * @author sam
- */
 public class ScriptException extends Exception {
 
     private static final long serialVersionUID = 3447547760007143671L;
diff --git a/src/main/groovy/org/codehaus/groovy/tools/ast/TransformTestHelper.groovy b/src/main/groovy/org/codehaus/groovy/tools/ast/TransformTestHelper.groovy
index bf59003..266ed76 100644
--- a/src/main/groovy/org/codehaus/groovy/tools/ast/TransformTestHelper.groovy
+++ b/src/main/groovy/org/codehaus/groovy/tools/ast/TransformTestHelper.groovy
@@ -29,21 +29,19 @@ import org.codehaus.groovy.transform.ASTTransformation
 
 import java.security.CodeSource
 
-/*
-* This TestHarness exists so that a global transform can be run without
-* using the Jar services mechanism, which requires building a jar.
-* 
-* To use this simply create an instance of TransformTestHelper with
-* an ASTTransformation and CompilePhase, then invoke parse(File) or
-* parse(String). 
-* 
-* This test harness is not exactly the same as executing a global transformation
-* but can greatly aide in debugging and testing a transform. You should still
-* test your global transformation when packaged as a jar service before
-* releasing it. 
-* 
-* @author Hamlet D'Arcy
-*/
+/**
+ * This TestHarness exists so that a global transform can be run without
+ * using the Jar services mechanism, which requires building a jar.
+ *
+ * To use this simply create an instance of TransformTestHelper with
+ * an ASTTransformation and CompilePhase, then invoke parse(File) or
+ * parse(String).
+ *
+ * This test harness is not exactly the same as executing a global transformation
+ * but can greatly aide in debugging and testing a transform. You should still
+ * test your global transformation when packaged as a jar service before
+ * releasing it.
+ */
 class TransformTestHelper {
 
     private final ASTTransformation transform
@@ -56,36 +54,35 @@ class TransformTestHelper {
      * @param phase
      *      the phase to run the transform in 
      */
-    def TransformTestHelper(ASTTransformation transform, CompilePhase phase) {
+    TransformTestHelper(ASTTransformation transform, CompilePhase phase) {
         this.transform = transform
         this.phase = phase
     }
 
     /**
      * Compiles the File into a Class applying the transform specified in the constructor.
-     * @input input
-     *      must be a groovy source file
+     * @input input*      must be a groovy source file
      */
-    public Class parse(File input) {
+    Class parse(File input) {
         TestHarnessClassLoader loader = new TestHarnessClassLoader(transform, phase)
         return loader.parseClass(input)
     }
 
     /**
      * Compiles the String into a Class applying the transform specified in the constructor.
-     * @input input
-     *      must be a valid groovy source string
+     * @input input*      must be a valid groovy source string
      */
-    public Class parse(String input) {
+    Class parse(String input) {
         TestHarnessClassLoader loader = new TestHarnessClassLoader(transform, phase)
         return loader.parseClass(input)
     }
 }
 
 /**
-* ClassLoader exists so that TestHarnessOperation can be wired into the compile. 
-*/
-@groovy.transform.PackageScope class TestHarnessClassLoader extends GroovyClassLoader {
+ * ClassLoader exists so that TestHarnessOperation can be wired into the compile.
+ */
+@groovy.transform.PackageScope
+class TestHarnessClassLoader extends GroovyClassLoader {
 
     private final ASTTransformation transform
     private final CompilePhase phase
@@ -103,17 +100,18 @@ class TransformTestHelper {
 }
 
 /**
-* Operation exists so that an AstTransformation can be run against the SourceUnit.
-*/
-@groovy.transform.PackageScope class TestHarnessOperation extends PrimaryClassNodeOperation {
+ * Operation exists so that an AstTransformation can be run against the SourceUnit.
+ */
+@groovy.transform.PackageScope
+class TestHarnessOperation extends PrimaryClassNodeOperation {
 
     private final ASTTransformation transform
 
-    def TestHarnessOperation(transform) {
+    TestHarnessOperation(transform) {
         this.transform = transform;
     }
 
-    public void call(SourceUnit source, GeneratorContext context, ClassNode classNode) {
+    void call(SourceUnit source, GeneratorContext context, ClassNode classNode) {
         transform.visit(null, source)
     }
 }
diff --git a/src/main/groovy/org/codehaus/groovy/transform/tailrec/ReturnAdderForClosures.groovy b/src/main/groovy/org/codehaus/groovy/transform/tailrec/ReturnAdderForClosures.groovy
index 64ebce7..a590660 100644
--- a/src/main/groovy/org/codehaus/groovy/transform/tailrec/ReturnAdderForClosures.groovy
+++ b/src/main/groovy/org/codehaus/groovy/transform/tailrec/ReturnAdderForClosures.groovy
@@ -29,8 +29,6 @@ import org.codehaus.groovy.classgen.ReturnAdder
 /**
  * Adds explicit return statements to implicit return points in a closure. This is necessary since
  * tail-recursion is detected by having the recursive call within the return statement.
- *
- * @author Johannes Link
  */
 class ReturnAdderForClosures extends CodeVisitorSupport {
 
@@ -38,7 +36,7 @@ class ReturnAdderForClosures extends CodeVisitorSupport {
         method.code.visit(this)
     }
 
-    public void visitClosureExpression(ClosureExpression expression) {
+    void visitClosureExpression(ClosureExpression expression) {
         //Create a dummy method with the closure's code as the method's code. Then user ReturnAdder, which only works for methods.
         MethodNode node = new MethodNode("dummy", 0, ClassHelper.OBJECT_TYPE, Parameter.EMPTY_ARRAY, ClassNode.EMPTY_ARRAY, expression.code);
         new ReturnAdder().visitMethod(node);
diff --git a/src/main/groovy/org/codehaus/groovy/transform/tailrec/ReturnStatementToIterationConverter.groovy b/src/main/groovy/org/codehaus/groovy/transform/tailrec/ReturnStatementToIterationConverter.groovy
index d489ff0..2eeeb59 100644
--- a/src/main/groovy/org/codehaus/groovy/transform/tailrec/ReturnStatementToIterationConverter.groovy
+++ b/src/main/groovy/org/codehaus/groovy/transform/tailrec/ReturnStatementToIterationConverter.groovy
@@ -45,8 +45,6 @@ import static org.codehaus.groovy.ast.tools.GeneralUtils.varX
  *
  * There's probably place for optimizing the amount of variable copying being done, e.g.
  * parameters that are only handed through must not be copied at all.
- *
- * @author Johannes Link
  */
 @CompileStatic
 class ReturnStatementToIterationConverter {
@@ -98,7 +96,7 @@ class ReturnStatementToIterationConverter {
         argAssignment
     }
 
-    private ExpressionStatement createTempDeclaration(int index,  Map<Integer, Map> positionMapping, Map<String, Map> tempMapping, Map tempDeclarations) {
+    private ExpressionStatement createTempDeclaration(int index, Map<Integer, Map> positionMapping, Map<String, Map> tempMapping, Map tempDeclarations) {
         String argName = positionMapping[index]['name']
         String tempName = "_${argName}_"
         ClassNode argAndTempType = positionMapping[index]['type'] as ClassNode
@@ -120,7 +118,7 @@ class ReturnStatementToIterationConverter {
     }
 
     private Set<String> replaceAllArgUsages(List<ExpressionStatement> iterationVariablesAssignmentNodes, Map<String, Map> tempMapping) {
-        Set<String> unusedTempNames = tempMapping.values().collect {Map nameAndType -> (String) nameAndType['name']} as Set<String>
+        Set<String> unusedTempNames = tempMapping.values().collect { Map nameAndType -> (String) nameAndType['name'] } as Set<String>
         VariableReplacedListener tracker = new UsedVariableTracker()
         for (ExpressionStatement statement : iterationVariablesAssignmentNodes) {
             replaceArgUsageByTempUsage((BinaryExpression) statement.expression, tempMapping, tracker)
diff --git a/src/main/groovy/org/codehaus/groovy/transform/tailrec/StatementReplacer.groovy b/src/main/groovy/org/codehaus/groovy/transform/tailrec/StatementReplacer.groovy
index 3a9dab3..3d16c9c 100644
--- a/src/main/groovy/org/codehaus/groovy/transform/tailrec/StatementReplacer.groovy
+++ b/src/main/groovy/org/codehaus/groovy/transform/tailrec/StatementReplacer.groovy
@@ -33,8 +33,6 @@ import org.codehaus.groovy.ast.stmt.WhileStatement
  * Tool for replacing Statement objects in an AST by other Statement instances.
  *
  * Within @TailRecursive it is used to swap ReturnStatements with looping back to RECUR label
- *
- * @author Johannes Link
  */
 @CompileStatic
 class StatementReplacer extends CodeVisitorSupport {
@@ -47,7 +45,7 @@ class StatementReplacer extends CodeVisitorSupport {
         root.visit(this)
     }
 
-    public void visitClosureExpression(ClosureExpression expression) {
+    void visitClosureExpression(ClosureExpression expression) {
         closureLevel++
         try {
             super.visitClosureExpression(expression)
@@ -56,7 +54,7 @@ class StatementReplacer extends CodeVisitorSupport {
         }
     }
 
-    public void visitBlockStatement(BlockStatement block) {
+    void visitBlockStatement(BlockStatement block) {
         List<Statement> copyOfStatements = new ArrayList<Statement>(block.statements)
         copyOfStatements.eachWithIndex { Statement statement, int index ->
             replaceIfNecessary(statement) { Statement node -> block.statements[index] = node }
@@ -64,23 +62,23 @@ class StatementReplacer extends CodeVisitorSupport {
         super.visitBlockStatement(block);
     }
 
-    public void visitIfElse(IfStatement ifElse) {
+    void visitIfElse(IfStatement ifElse) {
         replaceIfNecessary(ifElse.ifBlock) { Statement s -> ifElse.ifBlock = s }
         replaceIfNecessary(ifElse.elseBlock) { Statement s -> ifElse.elseBlock = s }
         super.visitIfElse(ifElse);
     }
 
-    public void visitForLoop(ForStatement forLoop) {
+    void visitForLoop(ForStatement forLoop) {
         replaceIfNecessary(forLoop.loopBlock) { Statement s -> forLoop.loopBlock = s }
         super.visitForLoop(forLoop);
     }
 
-    public void visitWhileLoop(WhileStatement loop) {
+    void visitWhileLoop(WhileStatement loop) {
         replaceIfNecessary(loop.loopBlock) { Statement s -> loop.loopBlock = s }
         super.visitWhileLoop(loop);
     }
 
-    public void visitDoWhileLoop(DoWhileStatement loop) {
+    void visitDoWhileLoop(DoWhileStatement loop) {
         replaceIfNecessary(loop.loopBlock) { Statement s -> loop.loopBlock = s }
         super.visitDoWhileLoop(loop);
     }
diff --git a/src/main/groovy/org/codehaus/groovy/transform/tailrec/TailRecursiveASTTransformation.groovy b/src/main/groovy/org/codehaus/groovy/transform/tailrec/TailRecursiveASTTransformation.groovy
index 0605f18..ee62a92 100644
--- a/src/main/groovy/org/codehaus/groovy/transform/tailrec/TailRecursiveASTTransformation.groovy
+++ b/src/main/groovy/org/codehaus/groovy/transform/tailrec/TailRecursiveASTTransformation.groovy
@@ -46,29 +46,27 @@ import org.codehaus.groovy.transform.GroovyASTTransformation
  * Handles generation of code for the @TailRecursive annotation.
  *
  * It's doing its work in the earliest possible compile phase
- *
- * @author Johannes Link
  */
 @CompileStatic
 @GroovyASTTransformation(phase = CompilePhase.SEMANTIC_ANALYSIS)
 class TailRecursiveASTTransformation extends AbstractASTTransformation {
 
-    private static final Class MY_CLASS = TailRecursive.class;
-    private static final ClassNode MY_TYPE = new ClassNode(MY_CLASS);
+    private static final Class MY_CLASS = TailRecursive.class
+    private static final ClassNode MY_TYPE = new ClassNode(MY_CLASS)
     static final String MY_TYPE_NAME = "@" + MY_TYPE.getNameWithoutPackage()
     private HasRecursiveCalls hasRecursiveCalls = new HasRecursiveCalls()
     private TernaryToIfStatementConverter ternaryToIfStatement = new TernaryToIfStatementConverter()
 
 
     @Override
-    public void visit(ASTNode[] nodes, SourceUnit source) {
-        init(nodes, source);
+    void visit(ASTNode[] nodes, SourceUnit source) {
+        init(nodes, source)
 
         MethodNode method = nodes[1] as MethodNode
 
         if (method.isAbstract()) {
-            addError("Annotation " + MY_TYPE_NAME + " cannot be used for abstract methods.", method);
-            return;
+            addError("Annotation " + MY_TYPE_NAME + " cannot be used for abstract methods.", method)
+            return
         }
 
         if (hasAnnotation(method, ClassHelper.make(Memoized))) {
@@ -86,7 +84,7 @@ class TailRecursiveASTTransformation extends AbstractASTTransformation {
         if (!hasRecursiveMethodCalls(method)) {
             AnnotationNode annotationNode = method.getAnnotations(ClassHelper.make(TailRecursive))[0]
             addError("No recursive calls detected. You must remove annotation " + MY_TYPE_NAME + ".", annotationNode)
-            return;
+            return
         }
 
         transformToIteration(method, source)
@@ -94,8 +92,8 @@ class TailRecursiveASTTransformation extends AbstractASTTransformation {
     }
 
     private boolean hasAnnotation(MethodNode methodNode, ClassNode annotation) {
-        List annots = methodNode.getAnnotations(annotation);
-        return (annots != null && annots.size() > 0);
+        List annots = methodNode.getAnnotations(annotation)
+        return (annots != null && annots.size() > 0)
     }
 
 
@@ -219,7 +217,7 @@ class TailRecursiveASTTransformation extends AbstractASTTransformation {
             if (!(statement instanceof ReturnStatement)) {
                 return false
             }
-            Expression inner = ((ReturnStatement )statement).expression
+            Expression inner = ((ReturnStatement) statement).expression
             if (!(inner instanceof MethodCallExpression) && !(inner instanceof StaticMethodCallExpression)) {
                 return false
             }
@@ -243,7 +241,7 @@ class TailRecursiveASTTransformation extends AbstractASTTransformation {
 
     private void ensureAllRecursiveCallsHaveBeenTransformed(MethodNode method) {
         List<Expression> remainingRecursiveCalls = new CollectRecursiveCalls().collect(method)
-        for(Expression expression : remainingRecursiveCalls) {
+        for (Expression expression : remainingRecursiveCalls) {
             addError("Recursive call could not be transformed by @TailRecursive. Maybe it's not a tail call.", expression)
         }
     }
diff --git a/src/main/groovy/org/codehaus/groovy/transform/tailrec/TernaryToIfStatementConverter.groovy b/src/main/groovy/org/codehaus/groovy/transform/tailrec/TernaryToIfStatementConverter.groovy
index c47e1d2..cbfc22a 100644
--- a/src/main/groovy/org/codehaus/groovy/transform/tailrec/TernaryToIfStatementConverter.groovy
+++ b/src/main/groovy/org/codehaus/groovy/transform/tailrec/TernaryToIfStatementConverter.groovy
@@ -27,8 +27,6 @@ import org.codehaus.groovy.ast.stmt.Statement
 /**
  * Since a ternary statement has more than one exit point tail-recursiveness testing cannot be easily done.
  * Therefore this class translates a ternary statement (or Elvis operator) into the equivalent if-else statement.
- *
- * @author Johannes Link
  */
 @CompileStatic
 class TernaryToIfStatementConverter {
diff --git a/src/main/groovy/org/codehaus/groovy/transform/tailrec/VariableAccessReplacer.groovy b/src/main/groovy/org/codehaus/groovy/transform/tailrec/VariableAccessReplacer.groovy
index d62dc46..cd9123e 100644
--- a/src/main/groovy/org/codehaus/groovy/transform/tailrec/VariableAccessReplacer.groovy
+++ b/src/main/groovy/org/codehaus/groovy/transform/tailrec/VariableAccessReplacer.groovy
@@ -28,8 +28,6 @@ import org.codehaus.groovy.ast.expr.VariableExpression
  * in nameAndTypeMapping before calling replaceIn().
  *
  * The VariableReplacedListener can be set if clients want to react to variable replacement.
- *
- * @author Johannes Link
  */
 @CompileStatic
 class VariableAccessReplacer {
diff --git a/src/main/groovy/org/codehaus/groovy/transform/tailrec/VariableExpressionReplacer.groovy b/src/main/groovy/org/codehaus/groovy/transform/tailrec/VariableExpressionReplacer.groovy
index 1f14490..8c7bb1c 100644
--- a/src/main/groovy/org/codehaus/groovy/transform/tailrec/VariableExpressionReplacer.groovy
+++ b/src/main/groovy/org/codehaus/groovy/transform/tailrec/VariableExpressionReplacer.groovy
@@ -48,8 +48,6 @@ import java.lang.reflect.Method
  * Within @TailRecursive it is used
  * - to swap the access of method args with the access to iteration variables
  * - to swap the access of iteration variables with the access of temp vars
- *
- * @author Johannes Link
  */
 @CompileStatic
 class VariableExpressionReplacer extends CodeVisitorSupport {
@@ -64,69 +62,69 @@ class VariableExpressionReplacer extends CodeVisitorSupport {
         root.visit(this)
     }
 
-    public void visitReturnStatement(ReturnStatement statement) {
+    void visitReturnStatement(ReturnStatement statement) {
         replaceExpressionPropertyWhenNecessary(statement)
-        super.visitReturnStatement(statement);
+        super.visitReturnStatement(statement)
     }
 
-    public void visitIfElse(IfStatement ifElse) {
+    void visitIfElse(IfStatement ifElse) {
         replaceExpressionPropertyWhenNecessary(ifElse, 'booleanExpression', BooleanExpression)
-        super.visitIfElse(ifElse);
+        super.visitIfElse(ifElse)
     }
 
-    public void visitForLoop(ForStatement forLoop) {
+    void visitForLoop(ForStatement forLoop) {
         replaceExpressionPropertyWhenNecessary(forLoop, 'collectionExpression')
-        super.visitForLoop(forLoop);
+        super.visitForLoop(forLoop)
     }
 
     /**
      * It's the only Expression type in which replacing is considered.
      * That's an abuse of the class, but I couldn't think of a better way.
      */
-    public void visitBinaryExpression(BinaryExpression expression) {
+    void visitBinaryExpression(BinaryExpression expression) {
         //A hack: Only replace right expression b/c ReturnStatementToIterationConverter needs it that way :-/
         replaceExpressionPropertyWhenNecessary(expression, 'rightExpression')
-        expression.getRightExpression().visit(this);
+        expression.getRightExpression().visit(this)
         super.visitBinaryExpression(expression)
     }
 
-    public void visitWhileLoop(WhileStatement loop) {
+    void visitWhileLoop(WhileStatement loop) {
         replaceExpressionPropertyWhenNecessary(loop, 'booleanExpression', BooleanExpression)
-        super.visitWhileLoop(loop);
+        super.visitWhileLoop(loop)
     }
 
-    public void visitDoWhileLoop(DoWhileStatement loop) {
+    void visitDoWhileLoop(DoWhileStatement loop) {
         replaceExpressionPropertyWhenNecessary(loop, 'booleanExpression', BooleanExpression)
-        super.visitDoWhileLoop(loop);
+        super.visitDoWhileLoop(loop)
     }
 
-    public void visitSwitch(SwitchStatement statement) {
+    void visitSwitch(SwitchStatement statement) {
         replaceExpressionPropertyWhenNecessary(statement)
         super.visitSwitch(statement)
     }
 
-    public void visitCaseStatement(CaseStatement statement) {
+    void visitCaseStatement(CaseStatement statement) {
         replaceExpressionPropertyWhenNecessary(statement)
         super.visitCaseStatement(statement)
     }
 
-    public void visitExpressionStatement(ExpressionStatement statement) {
+    void visitExpressionStatement(ExpressionStatement statement) {
         replaceExpressionPropertyWhenNecessary(statement)
-        super.visitExpressionStatement(statement);
+        super.visitExpressionStatement(statement)
     }
 
-    public void visitThrowStatement(ThrowStatement statement) {
+    void visitThrowStatement(ThrowStatement statement) {
         replaceExpressionPropertyWhenNecessary(statement)
         super.visitThrowStatement(statement)
     }
 
-    public void visitAssertStatement(AssertStatement statement) {
+    void visitAssertStatement(AssertStatement statement) {
         replaceExpressionPropertyWhenNecessary(statement, 'booleanExpression', BooleanExpression)
         replaceExpressionPropertyWhenNecessary(statement, 'messageExpression')
         super.visitAssertStatement(statement)
     }
 
-    public void visitSynchronizedStatement(SynchronizedStatement statement) {
+    void visitSynchronizedStatement(SynchronizedStatement statement) {
         replaceExpressionPropertyWhenNecessary(statement)
         super.visitSynchronizedStatement(statement)
     }
@@ -149,8 +147,8 @@ class VariableExpressionReplacer extends CodeVisitorSupport {
         //Use reflection to enable CompileStatic
         String setterName = 'set' + capitalizeFirst(propName)
         Method setExpressionMethod = node.class.getMethod(setterName, [propClass].toArray(new Class[1]))
-        newExpr.setSourcePosition(oldExpr);
-        newExpr.copyNodeMetaData(oldExpr);
+        newExpr.setSourcePosition(oldExpr)
+        newExpr.copyNodeMetaData(oldExpr)
         setExpressionMethod.invoke(node, [newExpr].toArray())
     }
 
diff --git a/src/main/groovy/org/codehaus/groovy/transform/tailrec/VariableExpressionTransformer.groovy b/src/main/groovy/org/codehaus/groovy/transform/tailrec/VariableExpressionTransformer.groovy
index 106a2f1..fea8d9d 100644
--- a/src/main/groovy/org/codehaus/groovy/transform/tailrec/VariableExpressionTransformer.groovy
+++ b/src/main/groovy/org/codehaus/groovy/transform/tailrec/VariableExpressionTransformer.groovy
@@ -25,8 +25,6 @@ import org.codehaus.groovy.ast.expr.VariableExpression
 
 /**
  * An expression transformer used in the process of replacing the access to variables
- *
- * @author Johannes Link
  */
 @CompileStatic
 class VariableExpressionTransformer implements ExpressionTransformer {
diff --git a/src/main/java/org/apache/groovy/util/concurrentlinkedhashmap/ConcurrentLinkedHashMap.java b/src/main/java/org/apache/groovy/util/concurrentlinkedhashmap/ConcurrentLinkedHashMap.java
index 938ef63..4ded89a 100644
--- a/src/main/java/org/apache/groovy/util/concurrentlinkedhashmap/ConcurrentLinkedHashMap.java
+++ b/src/main/java/org/apache/groovy/util/concurrentlinkedhashmap/ConcurrentLinkedHashMap.java
@@ -93,7 +93,6 @@ import static org.apache.groovy.util.concurrentlinkedhashmap.ConcurrentLinkedHas
  * predictable iteration order. A snapshot of the keys and entries may be
  * obtained in ascending and descending order of retention.
  *
- * @author ben.manes@gmail.com (Ben Manes)
  * @param <K> the type of keys maintained by this map
  * @param <V> the type of mapped values
  * @see <a href="http://code.google.com/p/concurrentlinkedhashmap/">
diff --git a/src/main/java/org/apache/groovy/util/concurrentlinkedhashmap/EntryWeigher.java b/src/main/java/org/apache/groovy/util/concurrentlinkedhashmap/EntryWeigher.java
index 1075c10..c4c34d6 100644
--- a/src/main/java/org/apache/groovy/util/concurrentlinkedhashmap/EntryWeigher.java
+++ b/src/main/java/org/apache/groovy/util/concurrentlinkedhashmap/EntryWeigher.java
@@ -21,7 +21,6 @@ import javax.annotation.concurrent.ThreadSafe;
  * A class that can determine the weight of an entry. The total weight threshold
  * is used to determine when an eviction is required.
  *
- * @author ben.manes@gmail.com (Ben Manes)
  * @see <a href="http://code.google.com/p/concurrentlinkedhashmap/">
  *      http://code.google.com/p/concurrentlinkedhashmap/</a>
  */
diff --git a/src/main/java/org/apache/groovy/util/concurrentlinkedhashmap/EvictionListener.java b/src/main/java/org/apache/groovy/util/concurrentlinkedhashmap/EvictionListener.java
index 4b608a0..74646c4 100644
--- a/src/main/java/org/apache/groovy/util/concurrentlinkedhashmap/EvictionListener.java
+++ b/src/main/java/org/apache/groovy/util/concurrentlinkedhashmap/EvictionListener.java
@@ -31,7 +31,6 @@ import javax.annotation.concurrent.ThreadSafe;
  * performing the operation asynchronously, such as by submitting a task to an
  * {@link java.util.concurrent.ExecutorService}.
  *
- * @author ben.manes@gmail.com (Ben Manes)
  * @see <a href="http://code.google.com/p/concurrentlinkedhashmap/">
  *      http://code.google.com/p/concurrentlinkedhashmap/</a>
  */
diff --git a/src/main/java/org/apache/groovy/util/concurrentlinkedhashmap/LinkedDeque.java b/src/main/java/org/apache/groovy/util/concurrentlinkedhashmap/LinkedDeque.java
index 447b769..27d8613 100644
--- a/src/main/java/org/apache/groovy/util/concurrentlinkedhashmap/LinkedDeque.java
+++ b/src/main/java/org/apache/groovy/util/concurrentlinkedhashmap/LinkedDeque.java
@@ -39,7 +39,6 @@ import java.util.NoSuchElementException;
  * the iterator risks arbitrary, non-deterministic behavior at an undetermined
  * time in the future.
  *
- * @author ben.manes@gmail.com (Ben Manes)
  * @param <E> the type of elements held in this collection
  * @see <a href="http://code.google.com/p/concurrentlinkedhashmap/">
  *      http://code.google.com/p/concurrentlinkedhashmap/</a>
diff --git a/src/main/java/org/apache/groovy/util/concurrentlinkedhashmap/Weigher.java b/src/main/java/org/apache/groovy/util/concurrentlinkedhashmap/Weigher.java
index c7eac09..ef3910d 100644
--- a/src/main/java/org/apache/groovy/util/concurrentlinkedhashmap/Weigher.java
+++ b/src/main/java/org/apache/groovy/util/concurrentlinkedhashmap/Weigher.java
@@ -21,7 +21,6 @@ import javax.annotation.concurrent.ThreadSafe;
  * A class that can determine the weight of a value. The total weight threshold
  * is used to determine when an eviction is required.
  *
- * @author ben.manes@gmail.com (Ben Manes)
  * @see <a href="http://code.google.com/p/concurrentlinkedhashmap/">
  *      http://code.google.com/p/concurrentlinkedhashmap/</a>
  */
diff --git a/src/main/java/org/apache/groovy/util/concurrentlinkedhashmap/Weighers.java b/src/main/java/org/apache/groovy/util/concurrentlinkedhashmap/Weighers.java
index 6fd9b25..6713c4a 100644
--- a/src/main/java/org/apache/groovy/util/concurrentlinkedhashmap/Weighers.java
+++ b/src/main/java/org/apache/groovy/util/concurrentlinkedhashmap/Weighers.java
@@ -27,7 +27,6 @@ import static org.apache.groovy.util.concurrentlinkedhashmap.ConcurrentLinkedHas
 /**
  * A common set of {@link Weigher} and {@link EntryWeigher} implementations.
  *
- * @author ben.manes@gmail.com (Ben Manes)
  * @see <a href="http://code.google.com/p/concurrentlinkedhashmap/">
  *      http://code.google.com/p/concurrentlinkedhashmap/</a>
  */
diff --git a/src/main/java/org/codehaus/groovy/antlr/AntlrASTProcessSnippets.java b/src/main/java/org/codehaus/groovy/antlr/AntlrASTProcessSnippets.java
index 94e8bf1..1373649 100644
--- a/src/main/java/org/codehaus/groovy/antlr/AntlrASTProcessSnippets.java
+++ b/src/main/java/org/codehaus/groovy/antlr/AntlrASTProcessSnippets.java
@@ -21,8 +21,6 @@ package org.codehaus.groovy.antlr;
 /**
  * Process to decorate antlr AST with ending line/col info, and if
  * possible the snippet of source from the start/end line/col for each node.
- *
- * @author <a href="mailto:groovy@ross-rayner.com">Jeremy Rayner</a>
  */
 
 import antlr.collections.AST;
diff --git a/src/main/java/org/codehaus/groovy/antlr/AntlrASTProcessor.java b/src/main/java/org/codehaus/groovy/antlr/AntlrASTProcessor.java
index 924f91f..4eea485 100644
--- a/src/main/java/org/codehaus/groovy/antlr/AntlrASTProcessor.java
+++ b/src/main/java/org/codehaus/groovy/antlr/AntlrASTProcessor.java
@@ -22,8 +22,6 @@ import antlr.collections.AST;
 
 /**
  * An interface for processing antlr AST objects
- *
- * @author <a href="mailto:groovy@ross-rayner.com">Jeremy Rayner</a>
  */
 public interface AntlrASTProcessor {
     /**
diff --git a/src/main/java/org/codehaus/groovy/antlr/AntlrParserPlugin.java b/src/main/java/org/codehaus/groovy/antlr/AntlrParserPlugin.java
index 02e3e49..40362d0 100644
--- a/src/main/java/org/codehaus/groovy/antlr/AntlrParserPlugin.java
+++ b/src/main/java/org/codehaus/groovy/antlr/AntlrParserPlugin.java
@@ -133,8 +133,6 @@ import java.util.Set;
 
 /**
  * A parser plugin which adapts the JSR Antlr Parser to the Groovy runtime
- *
- * @author <a href="mailto:jstrachan@protique.com">James Strachan</a>
  */
 public class AntlrParserPlugin extends ASTHelper implements ParserPlugin, GroovyTokenTypes {
 
diff --git a/src/main/java/org/codehaus/groovy/antlr/GroovySourceToken.java b/src/main/java/org/codehaus/groovy/antlr/GroovySourceToken.java
index 38ffba0..b4b6ab8 100644
--- a/src/main/java/org/codehaus/groovy/antlr/GroovySourceToken.java
+++ b/src/main/java/org/codehaus/groovy/antlr/GroovySourceToken.java
@@ -22,8 +22,6 @@ import antlr.Token;
 
 /**
  * This is a Token sub class to track line information 
- * 
- * @author Jochen Theodorou
  */
 public class GroovySourceToken extends Token implements SourceInfo{
     protected int line;
diff --git a/src/main/java/org/codehaus/groovy/antlr/LineColumn.java b/src/main/java/org/codehaus/groovy/antlr/LineColumn.java
index c7e11b6..ab0e3a7 100644
--- a/src/main/java/org/codehaus/groovy/antlr/LineColumn.java
+++ b/src/main/java/org/codehaus/groovy/antlr/LineColumn.java
@@ -20,8 +20,6 @@ package org.codehaus.groovy.antlr;
 
 /**
  * An object representing a line and column position
- *
- * @author <a href="mailto:groovy@ross-rayner.com">Jeremy Rayner</a>
  */
 public class LineColumn {
     private int line;
diff --git a/src/main/java/org/codehaus/groovy/antlr/SourceBuffer.java b/src/main/java/org/codehaus/groovy/antlr/SourceBuffer.java
index 558370f..6498499 100644
--- a/src/main/java/org/codehaus/groovy/antlr/SourceBuffer.java
+++ b/src/main/java/org/codehaus/groovy/antlr/SourceBuffer.java
@@ -24,8 +24,6 @@ import java.util.List;
 /**
  * A simple buffer that provides line/col access to chunks of source code
  * held within itself.
- *
- * @author <a href="mailto:groovy@ross-rayner.com">Jeremy Rayner</a>
  */
 public class SourceBuffer {
     private final List<StringBuilder> lines;
diff --git a/src/main/java/org/codehaus/groovy/antlr/UnicodeLexerSharedInputState.java b/src/main/java/org/codehaus/groovy/antlr/UnicodeLexerSharedInputState.java
index 2e90b2e..0716588 100644
--- a/src/main/java/org/codehaus/groovy/antlr/UnicodeLexerSharedInputState.java
+++ b/src/main/java/org/codehaus/groovy/antlr/UnicodeLexerSharedInputState.java
@@ -22,7 +22,6 @@ import antlr.LexerSharedInputState;
 
 /**
  * GRECLIPSE-805 Support for unicode escape sequences
- * @author Andrew Eisenberg
  */
 public class UnicodeLexerSharedInputState extends LexerSharedInputState {
     private final UnicodeEscapingReader escapingReader;
diff --git a/src/main/java/org/codehaus/groovy/antlr/treewalker/CompositeVisitor.java b/src/main/java/org/codehaus/groovy/antlr/treewalker/CompositeVisitor.java
index 305e397..c89b69d 100644
--- a/src/main/java/org/codehaus/groovy/antlr/treewalker/CompositeVisitor.java
+++ b/src/main/java/org/codehaus/groovy/antlr/treewalker/CompositeVisitor.java
@@ -34,8 +34,6 @@ import java.util.List;
  * composite.visitDefault() would...
  * call on the opening visit - a.visitDefault() then b.visitDefault() then c.visitDefault()
  * call on the closing visit - c.visitDefault() then b.visitDefault() then a.visitDefault()
- *
- * @author <a href="mailto:groovy@ross-rayner.com">Jeremy Rayner</a>
  */
 
 public class CompositeVisitor implements Visitor{
diff --git a/src/main/java/org/codehaus/groovy/antlr/treewalker/FlatNodeListTraversal.java b/src/main/java/org/codehaus/groovy/antlr/treewalker/FlatNodeListTraversal.java
index 6f17dfe..d64fa20 100644
--- a/src/main/java/org/codehaus/groovy/antlr/treewalker/FlatNodeListTraversal.java
+++ b/src/main/java/org/codehaus/groovy/antlr/treewalker/FlatNodeListTraversal.java
@@ -27,8 +27,6 @@ import java.util.List;
 
 /**
  * A simple iterator over an ordered (flat) List of the nodes of the AST.
- *
- * @author <a href="mailto:groovy@ross-rayner.com">Jeremy Rayner</a>
  */
 public class FlatNodeListTraversal extends TraversalHelper {
     
diff --git a/src/main/java/org/codehaus/groovy/antlr/treewalker/MindMapPrinter.java b/src/main/java/org/codehaus/groovy/antlr/treewalker/MindMapPrinter.java
index 7271466..d4d9935 100644
--- a/src/main/java/org/codehaus/groovy/antlr/treewalker/MindMapPrinter.java
+++ b/src/main/java/org/codehaus/groovy/antlr/treewalker/MindMapPrinter.java
@@ -27,8 +27,6 @@ import java.io.PrintStream;
 
 /**
  * An antlr AST visitor that prints a format suitable for viewing in http://freemind.sourceforge.net
- *
- * @author <a href="mailto:groovy@ross-rayner.com">Jeremy Rayner</a>
  */
 
 public class MindMapPrinter extends VisitorAdapter {
diff --git a/src/main/java/org/codehaus/groovy/antlr/treewalker/NodeAsHTMLPrinter.java b/src/main/java/org/codehaus/groovy/antlr/treewalker/NodeAsHTMLPrinter.java
index d9e985f..4b49abd 100644
--- a/src/main/java/org/codehaus/groovy/antlr/treewalker/NodeAsHTMLPrinter.java
+++ b/src/main/java/org/codehaus/groovy/antlr/treewalker/NodeAsHTMLPrinter.java
@@ -26,10 +26,7 @@ import java.util.Stack;
 
 /**
  * A visitor that prints a html tags of each node to the supplied PrintStream
- *
- * @author <a href="mailto:groovy@ross-rayner.com">Jeremy Rayner</a>
  */
-
 public class NodeAsHTMLPrinter extends VisitorAdapter {
     private final String[] tokenNames;
     private final PrintStream out;
diff --git a/src/main/java/org/codehaus/groovy/antlr/treewalker/NodeCollector.java b/src/main/java/org/codehaus/groovy/antlr/treewalker/NodeCollector.java
index 5c9659b..dfeacac 100644
--- a/src/main/java/org/codehaus/groovy/antlr/treewalker/NodeCollector.java
+++ b/src/main/java/org/codehaus/groovy/antlr/treewalker/NodeCollector.java
@@ -25,10 +25,7 @@ import java.util.List;
 
 /**
  * A simple antlr AST visitor that collects all nodes into a List.
- *
- * @author <a href="mailto:groovy@ross-rayner.com">Jeremy Rayner</a>
  */
-
 public class NodeCollector extends VisitorAdapter {
     private final List nodes;
     public NodeCollector() {
diff --git a/src/main/java/org/codehaus/groovy/antlr/treewalker/NodePrinter.java b/src/main/java/org/codehaus/groovy/antlr/treewalker/NodePrinter.java
index 2710f4d..eef7726 100644
--- a/src/main/java/org/codehaus/groovy/antlr/treewalker/NodePrinter.java
+++ b/src/main/java/org/codehaus/groovy/antlr/treewalker/NodePrinter.java
@@ -24,10 +24,7 @@ import java.io.PrintStream;
 
 /**
  * A simple antlr AST visitor that outputs the tokenName of each node in a pseudo xml style.
- *
- * @author <a href="mailto:groovy@ross-rayner.com">Jeremy Rayner</a>
  */
-
 public class NodePrinter extends VisitorAdapter {
     private final String[] tokenNames;
     private final PrintStream out;
diff --git a/src/main/java/org/codehaus/groovy/antlr/treewalker/PreOrderTraversal.java b/src/main/java/org/codehaus/groovy/antlr/treewalker/PreOrderTraversal.java
index 7cbd032..a4a57b4 100644
--- a/src/main/java/org/codehaus/groovy/antlr/treewalker/PreOrderTraversal.java
+++ b/src/main/java/org/codehaus/groovy/antlr/treewalker/PreOrderTraversal.java
@@ -22,8 +22,6 @@ import org.codehaus.groovy.antlr.GroovySourceAST;
 
 /**
  * A simple preorder traversal over the supplied antlr AST.
- *
- * @author <a href="mailto:groovy@ross-rayner.com">Jeremy Rayner</a>
  */
 public class PreOrderTraversal extends TraversalHelper {
     
diff --git a/src/main/java/org/codehaus/groovy/antlr/treewalker/SourceCodeTraversal.java b/src/main/java/org/codehaus/groovy/antlr/treewalker/SourceCodeTraversal.java
index ce2a236..aa16d9c 100644
--- a/src/main/java/org/codehaus/groovy/antlr/treewalker/SourceCodeTraversal.java
+++ b/src/main/java/org/codehaus/groovy/antlr/treewalker/SourceCodeTraversal.java
@@ -27,8 +27,6 @@ import java.util.Collections;
 /**
  * A treewalker for the antlr generated AST that attempts to visit the
  * AST nodes in the order needed to generate valid groovy source code.
- *
- * @author <a href="mailto:groovy@ross-rayner.com">Jeremy Rayner</a>
  */
 public class SourceCodeTraversal extends TraversalHelper {
     /**
diff --git a/src/main/java/org/codehaus/groovy/antlr/treewalker/SourcePrinter.java b/src/main/java/org/codehaus/groovy/antlr/treewalker/SourcePrinter.java
index 3db3565..9e67405 100644
--- a/src/main/java/org/codehaus/groovy/antlr/treewalker/SourcePrinter.java
+++ b/src/main/java/org/codehaus/groovy/antlr/treewalker/SourcePrinter.java
@@ -28,10 +28,7 @@ import java.util.Stack;
 /**
  * An antlr AST visitor that prints groovy source code for each visited node
  * to the supplied PrintStream.
- *
- * @author <a href="mailto:groovy@ross-rayner.com">Jeremy Rayner</a>
  */
-
 public class SourcePrinter extends VisitorAdapter {
     private final String[] tokenNames;
     private int tabLevel;
@@ -65,7 +62,6 @@ public class SourcePrinter extends VisitorAdapter {
         this.newLines = newLines;
         this.stack = new Stack();
     }
-    
 
     public void visitAbstract(GroovySourceAST t, int visit) {
         print(t,visit,"abstract ",null,null);
diff --git a/src/main/java/org/codehaus/groovy/antlr/treewalker/TraversalHelper.java b/src/main/java/org/codehaus/groovy/antlr/treewalker/TraversalHelper.java
index dcae1a8..138c977 100644
--- a/src/main/java/org/codehaus/groovy/antlr/treewalker/TraversalHelper.java
+++ b/src/main/java/org/codehaus/groovy/antlr/treewalker/TraversalHelper.java
@@ -28,8 +28,6 @@ import java.util.List;
 
 /**
  * Helper Class for Antlr AST traversal and visitation.
- *
- * @author <a href="mailto:groovy@ross-rayner.com">Jeremy Rayner</a>
  */
 public abstract class TraversalHelper implements AntlrASTProcessor {
     protected List<GroovySourceAST> unvisitedNodes;
diff --git a/src/main/java/org/codehaus/groovy/antlr/treewalker/Visitor.java b/src/main/java/org/codehaus/groovy/antlr/treewalker/Visitor.java
index 841e4ca..5cf0e91 100644
--- a/src/main/java/org/codehaus/groovy/antlr/treewalker/Visitor.java
+++ b/src/main/java/org/codehaus/groovy/antlr/treewalker/Visitor.java
@@ -22,10 +22,7 @@ import org.codehaus.groovy.antlr.GroovySourceAST;
 
 /**
  * An interface for visiting a GroovySourceAST node.
- *
- * @author <a href="mailto:groovy@ross-rayner.com">Jeremy Rayner</a>
  */
-
 public interface Visitor {
     int OPENING_VISIT = 1;
     int SECOND_VISIT = 2; // only used on rare occasions, e.g. the '(' in this snippet...   @Foo  (  a=1, b=2, c=3)
diff --git a/src/main/java/org/codehaus/groovy/antlr/treewalker/VisitorAdapter.java b/src/main/java/org/codehaus/groovy/antlr/treewalker/VisitorAdapter.java
index a6e8063..36145e8 100644
--- a/src/main/java/org/codehaus/groovy/antlr/treewalker/VisitorAdapter.java
+++ b/src/main/java/org/codehaus/groovy/antlr/treewalker/VisitorAdapter.java
@@ -25,10 +25,7 @@ import org.codehaus.groovy.antlr.GroovySourceAST;
  * A default implementation of all visitor methods.
  * If you extend this class, any un-overridden visit methods will
  * call visitDefault.
- *
- * @author <a href="mailto:groovy@ross-rayner.com">Jeremy Rayner</a>
  */
-
 public class VisitorAdapter implements Visitor {
     public void setUp() {}
     public void visitAbstract(GroovySourceAST t,int visit) {visitDefault(t,visit);}
diff --git a/src/main/java/org/codehaus/groovy/ast/ASTNode.java b/src/main/java/org/codehaus/groovy/ast/ASTNode.java
index d8ef876..3b68f1e 100644
--- a/src/main/java/org/codehaus/groovy/ast/ASTNode.java
+++ b/src/main/java/org/codehaus/groovy/ast/ASTNode.java
@@ -43,9 +43,6 @@ import java.util.Objects;
  * method will not be called for this purpose anymore and might be removed in
  * future versions of Groovy</li>
  * </ul>
- *
- * @author <a href="mailto:james@coredevelopers.net">James Strachan</a>
- * @author <a href="mailto:blackdrag@gmx.org">Jochen "blackdrag" Theodorou</a>
  */
 public class ASTNode {
 
diff --git a/src/main/java/org/codehaus/groovy/ast/AnnotatedNode.java b/src/main/java/org/codehaus/groovy/ast/AnnotatedNode.java
index ab5f2eb..8f51f39 100644
--- a/src/main/java/org/codehaus/groovy/ast/AnnotatedNode.java
+++ b/src/main/java/org/codehaus/groovy/ast/AnnotatedNode.java
@@ -24,8 +24,6 @@ import java.util.List;
 
 /**
  * Base class for any AST node which is capable of being annotated
- *
- * @author <a href="mailto:jstrachan@protique.com">James Strachan</a>
  */
 public class AnnotatedNode extends ASTNode {
     private List<AnnotationNode> annotations = Collections.emptyList();
diff --git a/src/main/java/org/codehaus/groovy/ast/AstToTextHelper.java b/src/main/java/org/codehaus/groovy/ast/AstToTextHelper.java
index 3599fbf..80dde3f 100644
--- a/src/main/java/org/codehaus/groovy/ast/AstToTextHelper.java
+++ b/src/main/java/org/codehaus/groovy/ast/AstToTextHelper.java
@@ -22,7 +22,6 @@ import java.lang.reflect.Modifier;
 
 /**
  * Helper class for converting AST into text.
- * @author Hamlet D'Arcy
  */
 public class AstToTextHelper {
 
diff --git a/src/main/java/org/codehaus/groovy/ast/ClassCodeExpressionTransformer.java b/src/main/java/org/codehaus/groovy/ast/ClassCodeExpressionTransformer.java
index 06ef44d..65bbddd 100644
--- a/src/main/java/org/codehaus/groovy/ast/ClassCodeExpressionTransformer.java
+++ b/src/main/java/org/codehaus/groovy/ast/ClassCodeExpressionTransformer.java
@@ -1,146 +1,144 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-package org.codehaus.groovy.ast;
-
-import org.codehaus.groovy.ast.expr.BooleanExpression;
-import org.codehaus.groovy.ast.expr.Expression;
-import org.codehaus.groovy.ast.expr.ExpressionTransformer;
-import org.codehaus.groovy.ast.stmt.AssertStatement;
-import org.codehaus.groovy.ast.stmt.CaseStatement;
-import org.codehaus.groovy.ast.stmt.DoWhileStatement;
-import org.codehaus.groovy.ast.stmt.ExpressionStatement;
-import org.codehaus.groovy.ast.stmt.ForStatement;
-import org.codehaus.groovy.ast.stmt.IfStatement;
-import org.codehaus.groovy.ast.stmt.ReturnStatement;
-import org.codehaus.groovy.ast.stmt.Statement;
-import org.codehaus.groovy.ast.stmt.SwitchStatement;
-import org.codehaus.groovy.ast.stmt.SynchronizedStatement;
-import org.codehaus.groovy.ast.stmt.ThrowStatement;
-import org.codehaus.groovy.ast.stmt.WhileStatement;
-
-import java.util.List;
-import java.util.Map;
-
-/**
- * Visitor to transform expressions in a whole class.
- * Transformed Expressions are usually not visited.
- *
- * @author Jochen Theodorou
- */
-public abstract class ClassCodeExpressionTransformer extends ClassCodeVisitorSupport implements ExpressionTransformer {
-
-    protected void visitConstructorOrMethod(MethodNode node, boolean isConstructor) {
-        for (Parameter p : node.getParameters()) {
-            if (p.hasInitialExpression()) {
-                Expression init = p.getInitialExpression();
-                p.setInitialExpression(transform(init));
-            }
-        }
-        super.visitConstructorOrMethod(node, isConstructor);
-    }
-
-    public void visitSwitch(SwitchStatement statement) {
-        Expression exp = statement.getExpression();
-        statement.setExpression(transform(exp));
-        for (CaseStatement caseStatement : statement.getCaseStatements()) {
-            caseStatement.visit(this);
-        }
-        statement.getDefaultStatement().visit(this);
-    }
-
-    public void visitField(FieldNode node) {
-        visitAnnotations(node);
-        Expression init = node.getInitialExpression();
-        node.setInitialValueExpression(transform(init));
-    }
-
-    public void visitProperty(PropertyNode node) {
-        visitAnnotations(node);
-        Statement statement = node.getGetterBlock();
-        visitClassCodeContainer(statement);
-
-        statement = node.getSetterBlock();
-        visitClassCodeContainer(statement);
-    }
-
-    public void visitIfElse(IfStatement ifElse) {
-        ifElse.setBooleanExpression((BooleanExpression) (transform(ifElse.getBooleanExpression())));
-        ifElse.getIfBlock().visit(this);
-        ifElse.getElseBlock().visit(this);
-    }
-
-    public Expression transform(Expression exp) {
-        if (exp == null) return null;
-        return exp.transformExpression(this);
-    }
-
-    public void visitAnnotations(AnnotatedNode node) {
-        List<AnnotationNode> annotations = node.getAnnotations();
-        if (annotations.isEmpty()) return;
-        for (AnnotationNode an : annotations) {
-            // skip built-in properties
-            if (an.isBuiltIn()) continue;
-            for (Map.Entry<String, Expression> member : an.getMembers().entrySet()) {
-                member.setValue(transform(member.getValue()));
-            }
-        }
-    }
-
-    public void visitReturnStatement(ReturnStatement statement) {
-        statement.setExpression(transform(statement.getExpression()));
-    }
-
-    public void visitAssertStatement(AssertStatement as) {
-        as.setBooleanExpression((BooleanExpression) (transform(as.getBooleanExpression())));
-        as.setMessageExpression(transform(as.getMessageExpression()));
-    }
-
-    public void visitCaseStatement(CaseStatement statement) {
-        statement.setExpression(transform(statement.getExpression()));
-        statement.getCode().visit(this);
-    }
-
-    public void visitDoWhileLoop(DoWhileStatement loop) {
-        loop.setBooleanExpression((BooleanExpression) (transform(loop.getBooleanExpression())));
-        super.visitDoWhileLoop(loop);
-    }
-
-    public void visitForLoop(ForStatement forLoop) {
-        forLoop.setCollectionExpression(transform(forLoop.getCollectionExpression()));
-        super.visitForLoop(forLoop);
-    }
-
-    public void visitSynchronizedStatement(SynchronizedStatement sync) {
-        sync.setExpression(transform(sync.getExpression()));
-        super.visitSynchronizedStatement(sync);
-    }
-
-    public void visitThrowStatement(ThrowStatement ts) {
-        ts.setExpression(transform(ts.getExpression()));
-    }
-
-    public void visitWhileLoop(WhileStatement loop) {
-        loop.setBooleanExpression((BooleanExpression) transform(loop.getBooleanExpression()));
-        super.visitWhileLoop(loop);
-    }
-
-    public void visitExpressionStatement(ExpressionStatement es) {
-        es.setExpression(transform(es.getExpression()));
-    }
-}
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.codehaus.groovy.ast;
+
+import org.codehaus.groovy.ast.expr.BooleanExpression;
+import org.codehaus.groovy.ast.expr.Expression;
+import org.codehaus.groovy.ast.expr.ExpressionTransformer;
+import org.codehaus.groovy.ast.stmt.AssertStatement;
+import org.codehaus.groovy.ast.stmt.CaseStatement;
+import org.codehaus.groovy.ast.stmt.DoWhileStatement;
+import org.codehaus.groovy.ast.stmt.ExpressionStatement;
+import org.codehaus.groovy.ast.stmt.ForStatement;
+import org.codehaus.groovy.ast.stmt.IfStatement;
+import org.codehaus.groovy.ast.stmt.ReturnStatement;
+import org.codehaus.groovy.ast.stmt.Statement;
+import org.codehaus.groovy.ast.stmt.SwitchStatement;
+import org.codehaus.groovy.ast.stmt.SynchronizedStatement;
+import org.codehaus.groovy.ast.stmt.ThrowStatement;
+import org.codehaus.groovy.ast.stmt.WhileStatement;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * Visitor to transform expressions in a whole class.
+ * Transformed Expressions are usually not visited.
+ */
+public abstract class ClassCodeExpressionTransformer extends ClassCodeVisitorSupport implements ExpressionTransformer {
+
+    protected void visitConstructorOrMethod(MethodNode node, boolean isConstructor) {
+        for (Parameter p : node.getParameters()) {
+            if (p.hasInitialExpression()) {
+                Expression init = p.getInitialExpression();
+                p.setInitialExpression(transform(init));
+            }
+        }
+        super.visitConstructorOrMethod(node, isConstructor);
+    }
+
+    public void visitSwitch(SwitchStatement statement) {
+        Expression exp = statement.getExpression();
+        statement.setExpression(transform(exp));
+        for (CaseStatement caseStatement : statement.getCaseStatements()) {
+            caseStatement.visit(this);
+        }
+        statement.getDefaultStatement().visit(this);
+    }
+
+    public void visitField(FieldNode node) {
+        visitAnnotations(node);
+        Expression init = node.getInitialExpression();
+        node.setInitialValueExpression(transform(init));
+    }
+
+    public void visitProperty(PropertyNode node) {
+        visitAnnotations(node);
+        Statement statement = node.getGetterBlock();
+        visitClassCodeContainer(statement);
+
+        statement = node.getSetterBlock();
+        visitClassCodeContainer(statement);
+    }
+
+    public void visitIfElse(IfStatement ifElse) {
+        ifElse.setBooleanExpression((BooleanExpression) (transform(ifElse.getBooleanExpression())));
+        ifElse.getIfBlock().visit(this);
+        ifElse.getElseBlock().visit(this);
+    }
+
+    public Expression transform(Expression exp) {
+        if (exp == null) return null;
+        return exp.transformExpression(this);
+    }
+
+    public void visitAnnotations(AnnotatedNode node) {
+        List<AnnotationNode> annotations = node.getAnnotations();
+        if (annotations.isEmpty()) return;
+        for (AnnotationNode an : annotations) {
+            // skip built-in properties
+            if (an.isBuiltIn()) continue;
+            for (Map.Entry<String, Expression> member : an.getMembers().entrySet()) {
+                member.setValue(transform(member.getValue()));
+            }
+        }
+    }
+
+    public void visitReturnStatement(ReturnStatement statement) {
+        statement.setExpression(transform(statement.getExpression()));
+    }
+
+    public void visitAssertStatement(AssertStatement as) {
+        as.setBooleanExpression((BooleanExpression) (transform(as.getBooleanExpression())));
+        as.setMessageExpression(transform(as.getMessageExpression()));
+    }
+
+    public void visitCaseStatement(CaseStatement statement) {
+        statement.setExpression(transform(statement.getExpression()));
+        statement.getCode().visit(this);
+    }
+
+    public void visitDoWhileLoop(DoWhileStatement loop) {
+        loop.setBooleanExpression((BooleanExpression) (transform(loop.getBooleanExpression())));
+        super.visitDoWhileLoop(loop);
+    }
+
+    public void visitForLoop(ForStatement forLoop) {
+        forLoop.setCollectionExpression(transform(forLoop.getCollectionExpression()));
+        super.visitForLoop(forLoop);
+    }
+
+    public void visitSynchronizedStatement(SynchronizedStatement sync) {
+        sync.setExpression(transform(sync.getExpression()));
+        super.visitSynchronizedStatement(sync);
+    }
+
+    public void visitThrowStatement(ThrowStatement ts) {
+        ts.setExpression(transform(ts.getExpression()));
+    }
+
+    public void visitWhileLoop(WhileStatement loop) {
+        loop.setBooleanExpression((BooleanExpression) transform(loop.getBooleanExpression()));
+        super.visitWhileLoop(loop);
+    }
+
+    public void visitExpressionStatement(ExpressionStatement es) {
+        es.setExpression(transform(es.getExpression()));
+    }
+}
diff --git a/src/main/java/org/codehaus/groovy/ast/CodeVisitorSupport.java b/src/main/java/org/codehaus/groovy/ast/CodeVisitorSupport.java
index 523475e..3c9d111 100644
--- a/src/main/java/org/codehaus/groovy/ast/CodeVisitorSupport.java
+++ b/src/main/java/org/codehaus/groovy/ast/CodeVisitorSupport.java
@@ -78,8 +78,6 @@ import java.util.List;
 /**
  * Abstract base class for any GroovyCodeVisitor which by default
  * just walks the code and expression tree
- *
- * @author <a href="mailto:james@coredevelopers.net">James Strachan</a>
  */
 public abstract class CodeVisitorSupport implements GroovyCodeVisitor {
 
diff --git a/src/main/java/org/codehaus/groovy/ast/ConstructorNode.java b/src/main/java/org/codehaus/groovy/ast/ConstructorNode.java
index 2dcdc54..66fbed4 100644
--- a/src/main/java/org/codehaus/groovy/ast/ConstructorNode.java
+++ b/src/main/java/org/codehaus/groovy/ast/ConstructorNode.java
@@ -26,8 +26,6 @@ import org.codehaus.groovy.ast.stmt.Statement;
 
 /**
  * Represents a constructor declaration
- * 
- * @author <a href="mailto:james@coredevelopers.net">James Strachan</a>
  */
 public class ConstructorNode extends MethodNode {
     
diff --git a/src/main/java/org/codehaus/groovy/ast/EnumConstantClassNode.java b/src/main/java/org/codehaus/groovy/ast/EnumConstantClassNode.java
index 4dae4d0..3660c1e 100644
--- a/src/main/java/org/codehaus/groovy/ast/EnumConstantClassNode.java
+++ b/src/main/java/org/codehaus/groovy/ast/EnumConstantClassNode.java
@@ -1,39 +1,37 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-package org.codehaus.groovy.ast;
-
-/**
- * Represents the anonymous inner class for an enum constant
- * This subtype is needed so that EnumVisitor can differentiate between the scenarios when a InnerClassNode
- * represents anonymous inner class for an enu constant and when it represents an enum class defined inside
- * another class
- * 
- * @author Roshan Dawrani
- */
-public class EnumConstantClassNode extends InnerClassNode {
-
-    /**
-     * @param name is the full name of the class
-     * @param modifiers the modifiers, @see org.objectweb.asm.Opcodes
-     * @param superClass the base class name - use "java.lang.Object" if no direct base class
-     */
-    public EnumConstantClassNode(ClassNode outerClass, String name, int modifiers, ClassNode superClass) {
-        super(outerClass, name, modifiers, superClass);
-    }
-}
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.codehaus.groovy.ast;
+
+/**
+ * Represents the anonymous inner class for an enum constant
+ * This subtype is needed so that EnumVisitor can differentiate between the scenarios when a InnerClassNode
+ * represents anonymous inner class for an enu constant and when it represents an enum class defined inside
+ * another class
+ */
+public class EnumConstantClassNode extends InnerClassNode {
+
+    /**
+     * @param name is the full name of the class
+     * @param modifiers the modifiers, @see org.objectweb.asm.Opcodes
+     * @param superClass the base class name - use "java.lang.Object" if no direct base class
+     */
+    public EnumConstantClassNode(ClassNode outerClass, String name, int modifiers, ClassNode superClass) {
+        super(outerClass, name, modifiers, superClass);
+    }
+}
diff --git a/src/main/java/org/codehaus/groovy/ast/GenericsType.java b/src/main/java/org/codehaus/groovy/ast/GenericsType.java
index 28216e1..60cc6a7 100644
--- a/src/main/java/org/codehaus/groovy/ast/GenericsType.java
+++ b/src/main/java/org/codehaus/groovy/ast/GenericsType.java
@@ -32,7 +32,6 @@ import static org.codehaus.groovy.ast.ClassHelper.GROOVY_OBJECT_TYPE;
 /**
  * This class is used to describe generic type signatures for ClassNodes.
  *
- * @author Jochen Theodorou
  * @see ClassNode
  */
 public class GenericsType extends ASTNode {
diff --git a/src/main/java/org/codehaus/groovy/ast/GroovyClassVisitor.java b/src/main/java/org/codehaus/groovy/ast/GroovyClassVisitor.java
index e5dff83..1085979 100644
--- a/src/main/java/org/codehaus/groovy/ast/GroovyClassVisitor.java
+++ b/src/main/java/org/codehaus/groovy/ast/GroovyClassVisitor.java
@@ -24,8 +24,6 @@ package org.codehaus.groovy.ast;
  * 
  * @see org.codehaus.groovy.ast.ClassNode
  * @see org.codehaus.groovy.ast.ClassCodeVisitorSupport
- * 
- * @author <a href="mailto:james@coredevelopers.net">James Strachan</a>
  */
 public interface GroovyClassVisitor {
 
diff --git a/src/main/java/org/codehaus/groovy/ast/GroovyCodeVisitor.java b/src/main/java/org/codehaus/groovy/ast/GroovyCodeVisitor.java
index 12787c0..3b50b50 100644
--- a/src/main/java/org/codehaus/groovy/ast/GroovyCodeVisitor.java
+++ b/src/main/java/org/codehaus/groovy/ast/GroovyCodeVisitor.java
@@ -72,10 +72,7 @@ import org.codehaus.groovy.classgen.BytecodeExpression;
 
 /**
  * An implementation of the visitor pattern for working with ASTNodes
- *
- * @author <a href="mailto:james@coredevelopers.net">James Strachan</a>
  */
-
 public interface GroovyCodeVisitor {
 
     // statements
diff --git a/src/main/java/org/codehaus/groovy/ast/ImportNode.java b/src/main/java/org/codehaus/groovy/ast/ImportNode.java
index 5f01494..b011104 100644
--- a/src/main/java/org/codehaus/groovy/ast/ImportNode.java
+++ b/src/main/java/org/codehaus/groovy/ast/ImportNode.java
@@ -22,10 +22,6 @@ import org.objectweb.asm.Opcodes;
 
 /**
  * Represents an import statement of a single class
- *
- * @author Jochen Theodorou
- * @author Paul King
- * @author <a href="mailto:james@coredevelopers.net">James Strachan</a>
  */
 public class ImportNode extends AnnotatedNode implements Opcodes {
 
diff --git a/src/main/java/org/codehaus/groovy/ast/InnerClassNode.java b/src/main/java/org/codehaus/groovy/ast/InnerClassNode.java
index f20c457..1da52be 100644
--- a/src/main/java/org/codehaus/groovy/ast/InnerClassNode.java
+++ b/src/main/java/org/codehaus/groovy/ast/InnerClassNode.java
@@ -24,8 +24,6 @@ import java.util.LinkedList;
 
 /**
  * Represents an inner class declaration
- * 
- * @author <a href="mailto:james@coredevelopers.net">James Strachan</a>
  */
 public class InnerClassNode extends ClassNode {
 
diff --git a/src/main/java/org/codehaus/groovy/ast/InterfaceHelperClassNode.java b/src/main/java/org/codehaus/groovy/ast/InterfaceHelperClassNode.java
index d2e952f..715e9a6 100644
--- a/src/main/java/org/codehaus/groovy/ast/InterfaceHelperClassNode.java
+++ b/src/main/java/org/codehaus/groovy/ast/InterfaceHelperClassNode.java
@@ -1,51 +1,49 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-package org.codehaus.groovy.ast;
-
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * Represents an inner class defined as helper for an interface
- * 
- * @author Roshan Dawrani
- */
-public class InterfaceHelperClassNode extends InnerClassNode {
-
-    private List callSites = new ArrayList();
-    
-    /**
-     * @param name is the full name of the class
-     * @param modifiers the modifiers, @see org.objectweb.asm.Opcodes
-     * @param superClass the base class name - use "java.lang.Object" if no direct base class
-     * @param callSites list of callsites used in the interface
-     */
-    public InterfaceHelperClassNode(ClassNode outerClass, String name, int modifiers, ClassNode superClass, List<String> callSites) {
-        super(outerClass, name, modifiers, superClass, ClassHelper.EMPTY_TYPE_ARRAY, MixinNode.EMPTY_ARRAY);
-        setCallSites(callSites);
-    }
-    
-    public void setCallSites(List<String> cs) {
-        callSites = (cs != null) ? cs : new ArrayList<String>();
-    }
-    
-    public List<String> getCallSites() {
-        return callSites;
-    }
-}
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.codehaus.groovy.ast;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * Represents an inner class defined as helper for an interface
+ */
+public class InterfaceHelperClassNode extends InnerClassNode {
+
+    private List callSites = new ArrayList();
+    
+    /**
+     * @param name is the full name of the class
+     * @param modifiers the modifiers, @see org.objectweb.asm.Opcodes
+     * @param superClass the base class name - use "java.lang.Object" if no direct base class
+     * @param callSites list of callsites used in the interface
+     */
+    public InterfaceHelperClassNode(ClassNode outerClass, String name, int modifiers, ClassNode superClass, List<String> callSites) {
+        super(outerClass, name, modifiers, superClass, ClassHelper.EMPTY_TYPE_ARRAY, MixinNode.EMPTY_ARRAY);
+        setCallSites(callSites);
+    }
+    
+    public void setCallSites(List<String> cs) {
+        callSites = (cs != null) ? cs : new ArrayList<String>();
+    }
+    
+    public List<String> getCallSites() {
+        return callSites;
+    }
+}
diff --git a/src/main/java/org/codehaus/groovy/ast/MethodCallTransformation.java b/src/main/java/org/codehaus/groovy/ast/MethodCallTransformation.java
index 69ab6c0..f07358f 100644
--- a/src/main/java/org/codehaus/groovy/ast/MethodCallTransformation.java
+++ b/src/main/java/org/codehaus/groovy/ast/MethodCallTransformation.java
@@ -23,12 +23,6 @@ import org.codehaus.groovy.ast.stmt.Statement;
 import org.codehaus.groovy.control.SourceUnit;
 import org.codehaus.groovy.transform.ASTTransformation;
 
-/**
- *
- * @author Hamlet D'Arcy
- * @author Sergei Egorov <bsideup@gmail.com>
- */
-
 public abstract class MethodCallTransformation implements ASTTransformation {
 
     public void visit(ASTNode[] nodes, SourceUnit sourceUnit) {
@@ -111,6 +105,6 @@ public abstract class MethodCallTransformation implements ASTTransformation {
             }
         }
     }
-    
+
     protected abstract GroovyCodeVisitor getTransformer(ASTNode[] nodes, SourceUnit sourceUnit);
 }
diff --git a/src/main/java/org/codehaus/groovy/ast/MethodInvocationTrap.java b/src/main/java/org/codehaus/groovy/ast/MethodInvocationTrap.java
index 9801c60..7909569 100644
--- a/src/main/java/org/codehaus/groovy/ast/MethodInvocationTrap.java
+++ b/src/main/java/org/codehaus/groovy/ast/MethodInvocationTrap.java
@@ -26,11 +26,6 @@ import org.codehaus.groovy.control.io.ReaderSource;
 import org.codehaus.groovy.control.messages.SyntaxErrorMessage;
 import org.codehaus.groovy.syntax.SyntaxException;
 
-/**
- *
- * @author Hamlet D'Arcy
- * @author Sergei Egorov <bsideup@gmail.com>
- */
 public abstract class MethodInvocationTrap extends CodeVisitorSupport {
 
     protected final ReaderSource source;
@@ -51,12 +46,12 @@ public abstract class MethodInvocationTrap extends CodeVisitorSupport {
      */
     public void visitMethodCallExpression(MethodCallExpression call) {
         boolean shouldContinueWalking = true;
-        
+
         if (isBuildInvocation(call)) {
             shouldContinueWalking = handleTargetMethodCallExpression(call);
         }
-        
-        if(shouldContinueWalking) {
+
+        if (shouldContinueWalking) {
             // continue normal tree walking
             call.getObjectExpression().visit(this);
             call.getMethod().visit(this);
@@ -85,7 +80,7 @@ public abstract class MethodInvocationTrap extends CodeVisitorSupport {
     protected String convertClosureToSource(ClosureExpression expression) {
         try {
             return ClosureUtils.convertClosureToSource(source, expression);
-        } catch(Exception e) {
+        } catch (Exception e) {
             addError(e.getMessage(), expression);
         }
         return null;
diff --git a/src/main/java/org/codehaus/groovy/ast/MethodNode.java b/src/main/java/org/codehaus/groovy/ast/MethodNode.java
index 5952780..7a42f87 100644
--- a/src/main/java/org/codehaus/groovy/ast/MethodNode.java
+++ b/src/main/java/org/codehaus/groovy/ast/MethodNode.java
@@ -27,9 +27,6 @@ import java.util.List;
 
 /**
  * Represents a method declaration
- *
- * @author <a href="mailto:james@coredevelopers.net">James Strachan</a>
- * @author Hamlet D'Arcy
  */
 public class MethodNode extends AnnotatedNode implements Opcodes {
 
diff --git a/src/main/java/org/codehaus/groovy/ast/MixinNode.java b/src/main/java/org/codehaus/groovy/ast/MixinNode.java
index 08dee7c..322e5e7 100644
--- a/src/main/java/org/codehaus/groovy/ast/MixinNode.java
+++ b/src/main/java/org/codehaus/groovy/ast/MixinNode.java
@@ -20,8 +20,6 @@ package org.codehaus.groovy.ast;
 
 /**
  * Represents a mixin which can be applied to any ClassNode to implement mixins
- * 
- * @author <a href="mailto:james@coredevelopers.net">James Strachan</a>
  */
 public class MixinNode extends ClassNode {
 
diff --git a/src/main/java/org/codehaus/groovy/ast/ModuleNode.java b/src/main/java/org/codehaus/groovy/ast/ModuleNode.java
index a0f4b52..54f7e16 100644
--- a/src/main/java/org/codehaus/groovy/ast/ModuleNode.java
+++ b/src/main/java/org/codehaus/groovy/ast/ModuleNode.java
@@ -48,10 +48,6 @@ import java.util.Map;
  * Represents a module, which consists typically of a class declaration
  * but could include some imports, some statements and multiple classes
  * intermixed with statements like scripts in Python or Ruby
- *
- * @author Jochen Theodorou
- * @author Paul King
- * @author <a href="mailto:james@coredevelopers.net">James Strachan</a>
  */
 public class ModuleNode extends ASTNode implements Opcodes {
 
diff --git a/src/main/java/org/codehaus/groovy/ast/PackageNode.java b/src/main/java/org/codehaus/groovy/ast/PackageNode.java
index 946f9bd..097c7f9 100644
--- a/src/main/java/org/codehaus/groovy/ast/PackageNode.java
+++ b/src/main/java/org/codehaus/groovy/ast/PackageNode.java
@@ -1,46 +1,44 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-package org.codehaus.groovy.ast;
-
-/**
- * Represents a package in the AST.
- *
- * @author Paul King
- */
-public class PackageNode extends AnnotatedNode {
-    private final String name;
-
-    public PackageNode(String name) {
-        this.name = name;
-    }
-
-    public String getName() {
-        return name;
-    }
-
-    /**
-     * @return the text display of this package definition
-     */
-    public String getText() {
-        return "package " + name;
-    }
-
-    public void visit(GroovyCodeVisitor visitor) {
-    }
-}
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.codehaus.groovy.ast;
+
+/**
+ * Represents a package in the AST.
+ */
+public class PackageNode extends AnnotatedNode {
+    private final String name;
+
+    public PackageNode(String name) {
+        this.name = name;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    /**
+     * @return the text display of this package definition
+     */
+    public String getText() {
+        return "package " + name;
+    }
+
+    public void visit(GroovyCodeVisitor visitor) {
+    }
+}
diff --git a/src/main/java/org/codehaus/groovy/ast/Parameter.java b/src/main/java/org/codehaus/groovy/ast/Parameter.java
index e3bb2bc..102ec47 100644
--- a/src/main/java/org/codehaus/groovy/ast/Parameter.java
+++ b/src/main/java/org/codehaus/groovy/ast/Parameter.java
@@ -24,8 +24,6 @@ import org.codehaus.groovy.ast.expr.Expression;
 /**
  * Represents a parameter on a constructor or method call. The type name is
  * optional - it defaults to java.lang.Object if unknown.
- * 
- * @author <a href="mailto:james@coredevelopers.net">James Strachan</a>
  */
 public class Parameter extends AnnotatedNode implements Variable {
 
diff --git a/src/main/java/org/codehaus/groovy/ast/PropertyNode.java b/src/main/java/org/codehaus/groovy/ast/PropertyNode.java
index 49b941f..81b2a7e 100644
--- a/src/main/java/org/codehaus/groovy/ast/PropertyNode.java
+++ b/src/main/java/org/codehaus/groovy/ast/PropertyNode.java
@@ -24,8 +24,6 @@ import org.objectweb.asm.Opcodes;
 
 /**
  * Represents a property (member variable, a getter and setter)
- *
- * @author <a href="mailto:james@coredevelopers.net">James Strachan</a>
  */
 public class PropertyNode extends AnnotatedNode implements Opcodes, Variable {
 
diff --git a/src/main/java/org/codehaus/groovy/ast/Variable.java b/src/main/java/org/codehaus/groovy/ast/Variable.java
index 2e94739..eda2fd2 100644
--- a/src/main/java/org/codehaus/groovy/ast/Variable.java
+++ b/src/main/java/org/codehaus/groovy/ast/Variable.java
@@ -23,8 +23,6 @@ import org.codehaus.groovy.ast.expr.Expression;
 /**
  * interface to mark a AstNode as Variable. Typically these are 
  * VariableExpression, FieldNode, PropertyNode and Parameter
- * 
- * @author Jochen Theodorou
  */
 public interface Variable {
     
diff --git a/src/main/java/org/codehaus/groovy/ast/VariableScope.java b/src/main/java/org/codehaus/groovy/ast/VariableScope.java
index 521b301..c0dba87 100644
--- a/src/main/java/org/codehaus/groovy/ast/VariableScope.java
+++ b/src/main/java/org/codehaus/groovy/ast/VariableScope.java
@@ -26,9 +26,6 @@ import java.util.Map;
 /**
  * Represents a variable scope. This is primarily used to determine variable sharing
  * across method and closure boundaries.
- *
- * @author <a href="mailto:james@coredevelopers.net">James Strachan</a>
- * @author Jochen Theodorou
  */
 public class VariableScope  {
     private Map<String, Variable> declaredVariables = Collections.emptyMap();
diff --git a/src/main/java/org/codehaus/groovy/ast/builder/AstBuilderTransformation.java b/src/main/java/org/codehaus/groovy/ast/builder/AstBuilderTransformation.java
index 6882498..8ee6bac 100644
--- a/src/main/java/org/codehaus/groovy/ast/builder/AstBuilderTransformation.java
+++ b/src/main/java/org/codehaus/groovy/ast/builder/AstBuilderTransformation.java
@@ -1,186 +1,183 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-package org.codehaus.groovy.ast.builder;
-
-import org.codehaus.groovy.ast.ASTNode;
-import org.codehaus.groovy.ast.GroovyCodeVisitor;
-import org.codehaus.groovy.ast.ImportNode;
-import org.codehaus.groovy.ast.MethodCallTransformation;
-import org.codehaus.groovy.ast.MethodInvocationTrap;
-import org.codehaus.groovy.ast.expr.ArgumentListExpression;
-import org.codehaus.groovy.ast.expr.ClosureExpression;
-import org.codehaus.groovy.ast.expr.ConstantExpression;
-import org.codehaus.groovy.ast.expr.Expression;
-import org.codehaus.groovy.ast.expr.MethodCallExpression;
-import org.codehaus.groovy.ast.expr.TupleExpression;
-import org.codehaus.groovy.control.CompilePhase;
-import org.codehaus.groovy.control.SourceUnit;
-import org.codehaus.groovy.control.io.ReaderSource;
-import org.codehaus.groovy.transform.GroovyASTTransformation;
-
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * Transformation to capture ASTBuilder from code statements.
- * <p>
- * The AstBuilder "from code" approach is used with a single Closure
- * parameter. This transformation converts the ClosureExpression back
- * into source code and rewrites the AST so that the "from string"
- * builder is invoked on the source. In order for this to work, the
- * closure source must be given a goto label. It is the "from string"
- * approach's responsibility to remove the BlockStatement created
- * by the label.
- *
- * @author Hamlet D'Arcy
- */
-
-@GroovyASTTransformation(phase = CompilePhase.SEMANTIC_ANALYSIS)
-public class AstBuilderTransformation extends MethodCallTransformation {
-
-    @Override
-    protected GroovyCodeVisitor getTransformer(ASTNode[] nodes, SourceUnit sourceUnit) {
-        // todo : are there other import types that can be specified?
-        return new AstBuilderInvocationTrap(
-            sourceUnit.getAST().getImports(),
-            sourceUnit.getAST().getStarImports(),
-            sourceUnit.getSource(),
-            sourceUnit
-        );
-    }
-
-    /**
-     * This class traps invocations of AstBuilder.build(CompilePhase, boolean, Closure) and converts
-     * the contents of the closure into expressions by reading the source of the Closure and sending
-     * that as a String to AstBuilder.build(String, CompilePhase, boolean) at runtime.
-     */
-    private static class AstBuilderInvocationTrap extends MethodInvocationTrap {
-
-        private final List<String> factoryTargets = new ArrayList<String>();
-
-        /**
-         * Creates the trap and captures all the ways in which a class may be referenced via imports.
-         *
-         * @param imports        all the imports from the source
-         * @param importPackages all the imported packages from the source
-         * @param source         the reader source that contains source for the SourceUnit
-         * @param sourceUnit     the source unit being compiled. Used for error messages.
-         */
-        AstBuilderInvocationTrap(List<ImportNode> imports, List<ImportNode> importPackages, ReaderSource source, SourceUnit sourceUnit) {
-            super(source, sourceUnit);
-
-            // factory type may be references as fully qualified, an import, or an alias
-            factoryTargets.add("org.codehaus.groovy.ast.builder.AstBuilder");//default package
-
-            if (imports != null) {
-                for (ImportNode importStatement : imports) {
-                    if ("org.codehaus.groovy.ast.builder.AstBuilder".equals(importStatement.getType().getName())) {
-                        factoryTargets.add(importStatement.getAlias());
-                    }
-                }
-            }
-
-            if (importPackages != null) {
-                for (ImportNode importPackage : importPackages) {
-                    if ("org.codehaus.groovy.ast.builder.".equals(importPackage.getPackageName())) {
-                        factoryTargets.add("AstBuilder");
-                        break;
-                    }
-                }
-            }
-        }
-        
-        @Override
-        protected boolean handleTargetMethodCallExpression(MethodCallExpression call) {
-            ClosureExpression closureExpression = getClosureArgument(call);
-            List<Expression> otherArgs = getNonClosureArguments(call);
-            String source = convertClosureToSource(closureExpression);
-
-            // parameter order is build(CompilePhase, boolean, String)
-            otherArgs.add(new ConstantExpression(source));
-            call.setArguments(new ArgumentListExpression(otherArgs));
-            call.setMethod(new ConstantExpression("buildFromBlock"));
-            call.setSpreadSafe(false);
-            call.setSafe(false);
-            call.setImplicitThis(false);
-            
-            return false;
-        }
-
-        private static List<Expression> getNonClosureArguments(MethodCallExpression call) {
-            List<Expression> result = new ArrayList<Expression>();
-            if (call.getArguments() instanceof TupleExpression) {
-                for (ASTNode node : ((TupleExpression) call.getArguments()).getExpressions()) {
-                    if (!(node instanceof ClosureExpression)) {
-                        result.add((Expression) node);
-                    }
-                }
-            }
-            return result;
-        }
-
-        private static ClosureExpression getClosureArgument(MethodCallExpression call) {
-
-            if (call.getArguments() instanceof TupleExpression) {
-                for (ASTNode node : ((TupleExpression) call.getArguments()).getExpressions()) {
-                    if (node instanceof ClosureExpression) {
-                        return (ClosureExpression) node;
-                    }
-                }
-            }
-            return null;
-        }
-
-        /**
-         * Looks for method calls on the AstBuilder class called build that take
-         * a Closure as parameter. This is all needed b/c build is overloaded.
-         *
-         * @param call the method call expression, may not be null
-         */
-        @Override
-        protected boolean isBuildInvocation(MethodCallExpression call) {
-            if (call == null) throw new IllegalArgumentException("Null: call");
-
-            // is method name correct?
-            if (call.getMethod() instanceof ConstantExpression && "buildFromCode".equals(((ConstantExpression) call.getMethod()).getValue())) {
-
-                // is method object correct type?
-                if (call.getObjectExpression() != null && call.getObjectExpression().getType() != null) {
-                    String name = call.getObjectExpression().getType().getName();
-                    if (name != null && !"".equals(name) && factoryTargets.contains(name)) {
-
-                        // is one of the arguments a closure?
-                        if (call.getArguments() != null && call.getArguments() instanceof TupleExpression) {
-                            if (((TupleExpression) call.getArguments()).getExpressions() != null) {
-                                for (ASTNode node : ((TupleExpression) call.getArguments()).getExpressions()) {
-                                    if (node instanceof ClosureExpression) {
-                                        return true;
-                                    }
-                                }
-                            }
-                        }
-                    }
-                }
-            }
-            return false;
-        }
-    }
-}
-
-
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.codehaus.groovy.ast.builder;
+
+import org.codehaus.groovy.ast.ASTNode;
+import org.codehaus.groovy.ast.GroovyCodeVisitor;
+import org.codehaus.groovy.ast.ImportNode;
+import org.codehaus.groovy.ast.MethodCallTransformation;
+import org.codehaus.groovy.ast.MethodInvocationTrap;
+import org.codehaus.groovy.ast.expr.ArgumentListExpression;
+import org.codehaus.groovy.ast.expr.ClosureExpression;
+import org.codehaus.groovy.ast.expr.ConstantExpression;
+import org.codehaus.groovy.ast.expr.Expression;
+import org.codehaus.groovy.ast.expr.MethodCallExpression;
+import org.codehaus.groovy.ast.expr.TupleExpression;
+import org.codehaus.groovy.control.CompilePhase;
+import org.codehaus.groovy.control.SourceUnit;
+import org.codehaus.groovy.control.io.ReaderSource;
+import org.codehaus.groovy.transform.GroovyASTTransformation;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * Transformation to capture ASTBuilder from code statements.
+ * <p>
+ * The AstBuilder "from code" approach is used with a single Closure
+ * parameter. This transformation converts the ClosureExpression back
+ * into source code and rewrites the AST so that the "from string"
+ * builder is invoked on the source. In order for this to work, the
+ * closure source must be given a goto label. It is the "from string"
+ * approach's responsibility to remove the BlockStatement created
+ * by the label.
+ */
+@GroovyASTTransformation(phase = CompilePhase.SEMANTIC_ANALYSIS)
+public class AstBuilderTransformation extends MethodCallTransformation {
+
+    @Override
+    protected GroovyCodeVisitor getTransformer(ASTNode[] nodes, SourceUnit sourceUnit) {
+        // todo : are there other import types that can be specified?
+        return new AstBuilderInvocationTrap(
+            sourceUnit.getAST().getImports(),
+            sourceUnit.getAST().getStarImports(),
+            sourceUnit.getSource(),
+            sourceUnit
+        );
+    }
+
+    /**
+     * This class traps invocations of AstBuilder.build(CompilePhase, boolean, Closure) and converts
+     * the contents of the closure into expressions by reading the source of the Closure and sending
+     * that as a String to AstBuilder.build(String, CompilePhase, boolean) at runtime.
+     */
+    private static class AstBuilderInvocationTrap extends MethodInvocationTrap {
+
+        private final List<String> factoryTargets = new ArrayList<String>();
+
+        /**
+         * Creates the trap and captures all the ways in which a class may be referenced via imports.
+         *
+         * @param imports        all the imports from the source
+         * @param importPackages all the imported packages from the source
+         * @param source         the reader source that contains source for the SourceUnit
+         * @param sourceUnit     the source unit being compiled. Used for error messages.
+         */
+        AstBuilderInvocationTrap(List<ImportNode> imports, List<ImportNode> importPackages, ReaderSource source, SourceUnit sourceUnit) {
+            super(source, sourceUnit);
+
+            // factory type may be references as fully qualified, an import, or an alias
+            factoryTargets.add("org.codehaus.groovy.ast.builder.AstBuilder");//default package
+
+            if (imports != null) {
+                for (ImportNode importStatement : imports) {
+                    if ("org.codehaus.groovy.ast.builder.AstBuilder".equals(importStatement.getType().getName())) {
+                        factoryTargets.add(importStatement.getAlias());
+                    }
+                }
+            }
+
+            if (importPackages != null) {
+                for (ImportNode importPackage : importPackages) {
+                    if ("org.codehaus.groovy.ast.builder.".equals(importPackage.getPackageName())) {
+                        factoryTargets.add("AstBuilder");
+                        break;
+                    }
+                }
+            }
+        }
+        
+        @Override
+        protected boolean handleTargetMethodCallExpression(MethodCallExpression call) {
+            ClosureExpression closureExpression = getClosureArgument(call);
+            List<Expression> otherArgs = getNonClosureArguments(call);
+            String source = convertClosureToSource(closureExpression);
+
+            // parameter order is build(CompilePhase, boolean, String)
+            otherArgs.add(new ConstantExpression(source));
+            call.setArguments(new ArgumentListExpression(otherArgs));
+            call.setMethod(new ConstantExpression("buildFromBlock"));
+            call.setSpreadSafe(false);
+            call.setSafe(false);
+            call.setImplicitThis(false);
+            
+            return false;
+        }
+
+        private static List<Expression> getNonClosureArguments(MethodCallExpression call) {
+            List<Expression> result = new ArrayList<Expression>();
+            if (call.getArguments() instanceof TupleExpression) {
+                for (ASTNode node : ((TupleExpression) call.getArguments()).getExpressions()) {
+                    if (!(node instanceof ClosureExpression)) {
+                        result.add((Expression) node);
+                    }
+                }
+            }
+            return result;
+        }
+
+        private static ClosureExpression getClosureArgument(MethodCallExpression call) {
+
+            if (call.getArguments() instanceof TupleExpression) {
+                for (ASTNode node : ((TupleExpression) call.getArguments()).getExpressions()) {
+                    if (node instanceof ClosureExpression) {
+                        return (ClosureExpression) node;
+                    }
+                }
+            }
+            return null;
+        }
+
+        /**
+         * Looks for method calls on the AstBuilder class called build that take
+         * a Closure as parameter. This is all needed b/c build is overloaded.
+         *
+         * @param call the method call expression, may not be null
+         */
+        @Override
+        protected boolean isBuildInvocation(MethodCallExpression call) {
+            if (call == null) throw new IllegalArgumentException("Null: call");
+
+            // is method name correct?
+            if (call.getMethod() instanceof ConstantExpression && "buildFromCode".equals(((ConstantExpression) call.getMethod()).getValue())) {
+
+                // is method object correct type?
+                if (call.getObjectExpression() != null && call.getObjectExpression().getType() != null) {
+                    String name = call.getObjectExpression().getType().getName();
+                    if (name != null && !"".equals(name) && factoryTargets.contains(name)) {
+
+                        // is one of the arguments a closure?
+                        if (call.getArguments() != null && call.getArguments() instanceof TupleExpression) {
+                            if (((TupleExpression) call.getArguments()).getExpressions() != null) {
+                                for (ASTNode node : ((TupleExpression) call.getArguments()).getExpressions()) {
+                                    if (node instanceof ClosureExpression) {
+                                        return true;
+                                    }
+                                }
+                            }
+                        }
+                    }
+                }
+            }
+            return false;
+        }
+    }
+}
+
+
diff --git a/src/main/java/org/codehaus/groovy/ast/decompiled/Annotations.java b/src/main/java/org/codehaus/groovy/ast/decompiled/Annotations.java
index 297dbb0..07f0f63 100644
--- a/src/main/java/org/codehaus/groovy/ast/decompiled/Annotations.java
+++ b/src/main/java/org/codehaus/groovy/ast/decompiled/Annotations.java
@@ -33,9 +33,6 @@ import java.lang.reflect.Array;
 import java.util.List;
 import java.util.Map;
 
-/**
- * @author Peter Gromov
- */
 class Annotations {
     static AnnotationNode createAnnotationNode(AnnotationStub annotation, AsmReferenceResolver resolver) {
         ClassNode classNode = resolver.resolveClassNullable(Type.getType(annotation.className).getClassName());
diff --git a/src/main/java/org/codehaus/groovy/ast/decompiled/AsmReferenceResolver.java b/src/main/java/org/codehaus/groovy/ast/decompiled/AsmReferenceResolver.java
index 9b96fa1..64cf500 100644
--- a/src/main/java/org/codehaus/groovy/ast/decompiled/AsmReferenceResolver.java
+++ b/src/main/java/org/codehaus/groovy/ast/decompiled/AsmReferenceResolver.java
@@ -30,8 +30,6 @@ import org.objectweb.asm.Type;
  *
  * @see DecompiledClassNode
  * @see AsmDecompiler
- *
- * @author Peter Gromov
  */
 public class AsmReferenceResolver {
     private final ClassNodeResolver resolver;
diff --git a/src/main/java/org/codehaus/groovy/ast/decompiled/ClassSignatureParser.java b/src/main/java/org/codehaus/groovy/ast/decompiled/ClassSignatureParser.java
index 2c0d28c..5d225f0 100644
--- a/src/main/java/org/codehaus/groovy/ast/decompiled/ClassSignatureParser.java
+++ b/src/main/java/org/codehaus/groovy/ast/decompiled/ClassSignatureParser.java
@@ -26,9 +26,6 @@ import org.objectweb.asm.signature.SignatureVisitor;
 import java.util.ArrayList;
 import java.util.List;
 
-/**
- * @author Peter Gromov
- */
 class ClassSignatureParser {
     static void configureClass(ClassNode classNode, ClassStub stub, AsmReferenceResolver resolver) {
         if (stub.signature != null) {
diff --git a/src/main/java/org/codehaus/groovy/ast/decompiled/DecompiledClassNode.java b/src/main/java/org/codehaus/groovy/ast/decompiled/DecompiledClassNode.java
index 7376348..8207070 100644
--- a/src/main/java/org/codehaus/groovy/ast/decompiled/DecompiledClassNode.java
+++ b/src/main/java/org/codehaus/groovy/ast/decompiled/DecompiledClassNode.java
@@ -35,7 +35,6 @@ import java.util.List;
  * A {@link ClassNode} kind representing the classes coming from *.class files decompiled using ASM.
  *
  * @see AsmDecompiler
- * @author Peter Gromov
  */
 public class DecompiledClassNode extends ClassNode {
     private final ClassStub classData;
diff --git a/src/main/java/org/codehaus/groovy/ast/decompiled/FormalParameterParser.java b/src/main/java/org/codehaus/groovy/ast/decompiled/FormalParameterParser.java
index 0c0603a..2c3ca9a 100644
--- a/src/main/java/org/codehaus/groovy/ast/decompiled/FormalParameterParser.java
+++ b/src/main/java/org/codehaus/groovy/ast/decompiled/FormalParameterParser.java
@@ -27,9 +27,6 @@ import org.objectweb.asm.signature.SignatureVisitor;
 import java.util.ArrayList;
 import java.util.List;
 
-/**
-* @author Peter Gromov
-*/
 abstract class FormalParameterParser extends SignatureVisitor {
     private final AsmReferenceResolver resolver;
     private String currentTypeParameter;
diff --git a/src/main/java/org/codehaus/groovy/ast/decompiled/TypeSignatureParser.java b/src/main/java/org/codehaus/groovy/ast/decompiled/TypeSignatureParser.java
index 21a7e6c..7d7537a 100644
--- a/src/main/java/org/codehaus/groovy/ast/decompiled/TypeSignatureParser.java
+++ b/src/main/java/org/codehaus/groovy/ast/decompiled/TypeSignatureParser.java
@@ -29,9 +29,6 @@ import org.objectweb.asm.signature.SignatureVisitor;
 import java.util.ArrayList;
 import java.util.List;
 
-/**
-* @author Peter Gromov
-*/
 abstract class TypeSignatureParser extends SignatureVisitor {
     private final AsmReferenceResolver resolver;
 
diff --git a/src/main/java/org/codehaus/groovy/ast/expr/AnnotationConstantExpression.java b/src/main/java/org/codehaus/groovy/ast/expr/AnnotationConstantExpression.java
index bb4d78f..cc683a9 100644
--- a/src/main/java/org/codehaus/groovy/ast/expr/AnnotationConstantExpression.java
+++ b/src/main/java/org/codehaus/groovy/ast/expr/AnnotationConstantExpression.java
@@ -1,50 +1,48 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-package org.codehaus.groovy.ast.expr;
-
-import org.codehaus.groovy.ast.AnnotationNode;
-import org.codehaus.groovy.ast.GroovyCodeVisitor;
-
-import java.util.Map;
-
-/**
- * Represents an annotation "constant" that may appear in annotation attributes
- * (mainly used as a marker).
- *
- * @author <a href='mailto:the[dot]mindstorm[at]gmail[dot]com'>Alex Popescu</a>
- */
-public class AnnotationConstantExpression extends ConstantExpression {
-    public AnnotationConstantExpression(AnnotationNode node) {
-        super(node);
-        setType(node.getClassNode());
-    }
-
-    public void visit(GroovyCodeVisitor visitor) {
-        AnnotationNode node = (AnnotationNode) getValue();
-        Map<String, Expression> attrs = node.getMembers();
-        for (Expression expr : attrs.values()) {
-            expr.visit(visitor);
-        }
-        super.visit(visitor);
-    }
-
-    public String toString() {
-        return "AnnotationConstantExpression[" + getValue() + "]";
-    }
-}
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.codehaus.groovy.ast.expr;
+
+import org.codehaus.groovy.ast.AnnotationNode;
+import org.codehaus.groovy.ast.GroovyCodeVisitor;
+
+import java.util.Map;
+
+/**
+ * Represents an annotation "constant" that may appear in annotation attributes
+ * (mainly used as a marker).
+ */
+public class AnnotationConstantExpression extends ConstantExpression {
+    public AnnotationConstantExpression(AnnotationNode node) {
+        super(node);
+        setType(node.getClassNode());
+    }
+
+    public void visit(GroovyCodeVisitor visitor) {
+        AnnotationNode node = (AnnotationNode) getValue();
+        Map<String, Expression> attrs = node.getMembers();
+        for (Expression expr : attrs.values()) {
+            expr.visit(visitor);
+        }
+        super.visit(visitor);
+    }
+
+    public String toString() {
+        return "AnnotationConstantExpression[" + getValue() + "]";
+    }
+}
diff --git a/src/main/java/org/codehaus/groovy/ast/expr/ArgumentListExpression.java b/src/main/java/org/codehaus/groovy/ast/expr/ArgumentListExpression.java
index de835b7..0f4a7e4 100644
--- a/src/main/java/org/codehaus/groovy/ast/expr/ArgumentListExpression.java
+++ b/src/main/java/org/codehaus/groovy/ast/expr/ArgumentListExpression.java
@@ -25,8 +25,6 @@ import java.util.List;
 
 /**
  * Represents one or more arguments being passed into a method
- * 
- * @author <a href="mailto:james@coredevelopers.net">James Strachan</a>
  */
 public class ArgumentListExpression extends TupleExpression {
 
diff --git a/src/main/java/org/codehaus/groovy/ast/expr/ArrayExpression.java b/src/main/java/org/codehaus/groovy/ast/expr/ArrayExpression.java
index a70102d..c316179 100644
--- a/src/main/java/org/codehaus/groovy/ast/expr/ArrayExpression.java
+++ b/src/main/java/org/codehaus/groovy/ast/expr/ArrayExpression.java
@@ -27,8 +27,6 @@ import java.util.List;
 /**
  * Represents an array object construction either using a fixed size
  * or an initializer expression
- *
- * @author <a href="mailto:james@coredevelopers.net">James Strachan</a>
  */
 public class ArrayExpression extends Expression {
     private final List<Expression> expressions;
diff --git a/src/main/java/org/codehaus/groovy/ast/expr/AttributeExpression.java b/src/main/java/org/codehaus/groovy/ast/expr/AttributeExpression.java
index a52929c..00d1647 100644
--- a/src/main/java/org/codehaus/groovy/ast/expr/AttributeExpression.java
+++ b/src/main/java/org/codehaus/groovy/ast/expr/AttributeExpression.java
@@ -20,11 +20,8 @@ package org.codehaus.groovy.ast.expr;
 
 import org.codehaus.groovy.ast.GroovyCodeVisitor;
 
-
 /**
  * Represents an attribute access (accessing the field of a class) such as the expression "foo.@bar".
- * 
- * @author <a href="mailto:james@coredevelopers.net">James Strachan</a>
  */
 public class AttributeExpression extends PropertyExpression {
 
diff --git a/src/main/java/org/codehaus/groovy/ast/expr/BinaryExpression.java b/src/main/java/org/codehaus/groovy/ast/expr/BinaryExpression.java
index 5cd35f7..121f094 100644
--- a/src/main/java/org/codehaus/groovy/ast/expr/BinaryExpression.java
+++ b/src/main/java/org/codehaus/groovy/ast/expr/BinaryExpression.java
@@ -26,8 +26,6 @@ import org.codehaus.groovy.syntax.Types;
 
 /**
  * Represents two expressions and an operation
- *
- * @author <a href="mailto:james@coredevelopers.net">James Strachan</a>
  */
 public class BinaryExpression extends Expression {
 
diff --git a/src/main/java/org/codehaus/groovy/ast/expr/BitwiseNegationExpression.java b/src/main/java/org/codehaus/groovy/ast/expr/BitwiseNegationExpression.java
index dece59d23..5887281 100644
--- a/src/main/java/org/codehaus/groovy/ast/expr/BitwiseNegationExpression.java
+++ b/src/main/java/org/codehaus/groovy/ast/expr/BitwiseNegationExpression.java
@@ -21,9 +21,6 @@ package org.codehaus.groovy.ast.expr;
 import org.codehaus.groovy.ast.ClassNode;
 import org.codehaus.groovy.ast.GroovyCodeVisitor;
 
-/**
- * @author phk
- */
 public class BitwiseNegationExpression extends Expression {
 
     private final Expression expression;
diff --git a/src/main/java/org/codehaus/groovy/ast/expr/BooleanExpression.java b/src/main/java/org/codehaus/groovy/ast/expr/BooleanExpression.java
index 5cab929..bde8320 100644
--- a/src/main/java/org/codehaus/groovy/ast/expr/BooleanExpression.java
+++ b/src/main/java/org/codehaus/groovy/ast/expr/BooleanExpression.java
@@ -23,8 +23,6 @@ import org.codehaus.groovy.ast.GroovyCodeVisitor;
 
 /**
  * Represents a boolean expression
- * 
- * @author <a href="mailto:james@coredevelopers.net">James Strachan</a>
  */
 public class BooleanExpression extends Expression {
     private final Expression expression;
diff --git a/src/main/java/org/codehaus/groovy/ast/expr/CastExpression.java b/src/main/java/org/codehaus/groovy/ast/expr/CastExpression.java
index f6145bb..c1e6c88 100644
--- a/src/main/java/org/codehaus/groovy/ast/expr/CastExpression.java
+++ b/src/main/java/org/codehaus/groovy/ast/expr/CastExpression.java
@@ -23,8 +23,6 @@ import org.codehaus.groovy.ast.GroovyCodeVisitor;
 
 /**
  * Represents a type cast expression
- * 
- * @author <a href="mailto:james@coredevelopers.net">James Strachan</a>
  */
 public class CastExpression extends Expression {
     
diff --git a/src/main/java/org/codehaus/groovy/ast/expr/ClassExpression.java b/src/main/java/org/codehaus/groovy/ast/expr/ClassExpression.java
index 9b29e5c..c6ff02e 100644
--- a/src/main/java/org/codehaus/groovy/ast/expr/ClassExpression.java
+++ b/src/main/java/org/codehaus/groovy/ast/expr/ClassExpression.java
@@ -24,8 +24,6 @@ import org.codehaus.groovy.ast.GroovyCodeVisitor;
 /**
  * Represents access to a Java/Groovy class in an expression, such
  * as when invoking a static method or accessing a static type
- * 
- * @author <a href="mailto:james@coredevelopers.net">James Strachan</a>
  */
 public class ClassExpression extends Expression {
 
diff --git a/src/main/java/org/codehaus/groovy/ast/expr/ClosureExpression.java b/src/main/java/org/codehaus/groovy/ast/expr/ClosureExpression.java
index 802a6ee..62ba789 100644
--- a/src/main/java/org/codehaus/groovy/ast/expr/ClosureExpression.java
+++ b/src/main/java/org/codehaus/groovy/ast/expr/ClosureExpression.java
@@ -29,9 +29,6 @@ import org.codehaus.groovy.runtime.InvokerHelper;
 /**
  * Represents a closure expression such as { statement }
  * or { i -> statement } or { i, x, String y ->  statement }
- * 
- * @author <a href="mailto:james@coredevelopers.net">James Strachan</a>
- * @author Hamlet D'Arcy
  */
 public class ClosureExpression extends Expression {
     
diff --git a/src/main/java/org/codehaus/groovy/ast/expr/ClosureListExpression.java b/src/main/java/org/codehaus/groovy/ast/expr/ClosureListExpression.java
index ecbd333..0562944 100644
--- a/src/main/java/org/codehaus/groovy/ast/expr/ClosureListExpression.java
+++ b/src/main/java/org/codehaus/groovy/ast/expr/ClosureListExpression.java
@@ -34,9 +34,6 @@ import java.util.List;
  * two ConstantExpressions for the values 1 and 2, and two
  * EmptyStatement entries. The ClosureListExpression defines a new 
  * variable scope. All created Closures share this scope.
- * 
- * 
- * @author Jochen Theodorou
  */
 public class ClosureListExpression extends ListExpression {
 
diff --git a/src/main/java/org/codehaus/groovy/ast/expr/ConstantExpression.java b/src/main/java/org/codehaus/groovy/ast/expr/ConstantExpression.java
index dfa2c52..1708c10 100644
--- a/src/main/java/org/codehaus/groovy/ast/expr/ConstantExpression.java
+++ b/src/main/java/org/codehaus/groovy/ast/expr/ConstantExpression.java
@@ -23,8 +23,6 @@ import org.codehaus.groovy.ast.GroovyCodeVisitor;
 
 /**
  * Represents a constant expression such as null, true, false
- * 
- * @author <a href="mailto:james@coredevelopers.net">James Strachan</a>
  */
 public class ConstantExpression extends Expression {
     // The following fields are only used internally; every occurrence of a user-defined expression of the same kind
diff --git a/src/main/java/org/codehaus/groovy/ast/expr/ConstructorCallExpression.java b/src/main/java/org/codehaus/groovy/ast/expr/ConstructorCallExpression.java
index 0c040fa..cbd5c7b 100644
--- a/src/main/java/org/codehaus/groovy/ast/expr/ConstructorCallExpression.java
+++ b/src/main/java/org/codehaus/groovy/ast/expr/ConstructorCallExpression.java
@@ -24,9 +24,6 @@ import org.codehaus.groovy.ast.GroovyCodeVisitor;
 
 /**
  * A constructor call
- *
- * @author <a href="mailto:james@coredevelopers.net">James Strachan</a>
- * @author Jochen Theodorou
  */
 public class ConstructorCallExpression extends Expression implements MethodCall {
 
diff --git a/src/main/java/org/codehaus/groovy/ast/expr/DeclarationExpression.java b/src/main/java/org/codehaus/groovy/ast/expr/DeclarationExpression.java
index 51dad92..13918f1 100644
--- a/src/main/java/org/codehaus/groovy/ast/expr/DeclarationExpression.java
+++ b/src/main/java/org/codehaus/groovy/ast/expr/DeclarationExpression.java
@@ -40,9 +40,6 @@ import org.codehaus.groovy.syntax.Token;
  * you can use the method "<code>TupleExpression getTupleExpression()</code>" method.
  * Calling either of these expression getters when the "isMultipleAssignment" condition
  * is not appropriate is unsafe and will result in a <code>ClassCastException</code>.
- *
- * @author Jochen Theodorou
- * @author Hamlet D'Arcy
  */
 public class DeclarationExpression extends BinaryExpression {
     
diff --git a/src/main/java/org/codehaus/groovy/ast/expr/ElvisOperatorExpression.java b/src/main/java/org/codehaus/groovy/ast/expr/ElvisOperatorExpression.java
index 64df749..f6c4fcf 100644
--- a/src/main/java/org/codehaus/groovy/ast/expr/ElvisOperatorExpression.java
+++ b/src/main/java/org/codehaus/groovy/ast/expr/ElvisOperatorExpression.java
@@ -41,7 +41,6 @@ import org.codehaus.groovy.ast.GroovyCodeVisitor;
  * assert result == 1 
  * </pre>
  * 
- * @author <a href="mailto:blackdrag@gmx.org">Jochen Theodorou</a>
  * @since 1.5
  */
 public class ElvisOperatorExpression extends TernaryExpression {
diff --git a/src/main/java/org/codehaus/groovy/ast/expr/EmptyExpression.java b/src/main/java/org/codehaus/groovy/ast/expr/EmptyExpression.java
index c0d645a..21340d8 100644
--- a/src/main/java/org/codehaus/groovy/ast/expr/EmptyExpression.java
+++ b/src/main/java/org/codehaus/groovy/ast/expr/EmptyExpression.java
@@ -1,41 +1,40 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-package org.codehaus.groovy.ast.expr;
-
-import org.codehaus.groovy.ast.GroovyCodeVisitor;
-
-/**
- * This class is a place holder for an empty expression. 
- * Empty expression are used in closures lists like (;). During
- * class Generation this expression should be either ignored or
- * replace with a null value.
- *   
- * @author Jochen Theodorou
- * @see org.codehaus.groovy.ast.stmt.EmptyStatement
- */
-public class EmptyExpression extends Expression {
-    public static final EmptyExpression INSTANCE = new EmptyExpression();
-
-    public Expression transformExpression(ExpressionTransformer transformer) {
-        return this;
-    }
-
-    public void visit(GroovyCodeVisitor visitor) {
-    }
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.codehaus.groovy.ast.expr;
+
+import org.codehaus.groovy.ast.GroovyCodeVisitor;
+
+/**
+ * This class is a place holder for an empty expression. 
+ * Empty expression are used in closures lists like (;). During
+ * class Generation this expression should be either ignored or
+ * replace with a null value.
+ *   
+ * @see org.codehaus.groovy.ast.stmt.EmptyStatement
+ */
+public class EmptyExpression extends Expression {
+    public static final EmptyExpression INSTANCE = new EmptyExpression();
+
+    public Expression transformExpression(ExpressionTransformer transformer) {
+        return this;
+    }
+
+    public void visit(GroovyCodeVisitor visitor) {
+    }
 }
\ No newline at end of file
diff --git a/src/main/java/org/codehaus/groovy/ast/expr/Expression.java b/src/main/java/org/codehaus/groovy/ast/expr/Expression.java
index 166f58f..39934c8 100644
--- a/src/main/java/org/codehaus/groovy/ast/expr/Expression.java
+++ b/src/main/java/org/codehaus/groovy/ast/expr/Expression.java
@@ -28,8 +28,6 @@ import java.util.List;
 
 /**
  * Represents a base class for expressions which evaluate as an object
- * 
- * @author <a href="mailto:james@coredevelopers.net">James Strachan</a>
  */
 public abstract class Expression extends AnnotatedNode {
 
diff --git a/src/main/java/org/codehaus/groovy/ast/expr/ExpressionTransformer.java b/src/main/java/org/codehaus/groovy/ast/expr/ExpressionTransformer.java
index 459ed43..c7f6412 100644
--- a/src/main/java/org/codehaus/groovy/ast/expr/ExpressionTransformer.java
+++ b/src/main/java/org/codehaus/groovy/ast/expr/ExpressionTransformer.java
@@ -21,8 +21,6 @@ package org.codehaus.groovy.ast.expr;
 
 /**
  * Provides a way to transform expressions
- * 
- * @author <a href="mailto:james@coredevelopers.net">James Strachan</a>
  */
 public interface ExpressionTransformer {
     
diff --git a/src/main/java/org/codehaus/groovy/ast/expr/FieldExpression.java b/src/main/java/org/codehaus/groovy/ast/expr/FieldExpression.java
index 41b5acf..f0c362a 100644
--- a/src/main/java/org/codehaus/groovy/ast/expr/FieldExpression.java
+++ b/src/main/java/org/codehaus/groovy/ast/expr/FieldExpression.java
@@ -24,8 +24,6 @@ import org.codehaus.groovy.ast.GroovyCodeVisitor;
 
 /**
  * Represents a field access such as the expression "this.foo".
- * 
- * @author <a href="mailto:james@coredevelopers.net">James Strachan</a>
  */
 public class FieldExpression extends Expression {
 
diff --git a/src/main/java/org/codehaus/groovy/ast/expr/GStringExpression.java b/src/main/java/org/codehaus/groovy/ast/expr/GStringExpression.java
index 7ccf355..e46235e 100644
--- a/src/main/java/org/codehaus/groovy/ast/expr/GStringExpression.java
+++ b/src/main/java/org/codehaus/groovy/ast/expr/GStringExpression.java
@@ -27,8 +27,6 @@ import java.util.List;
 /**
  * Represents a String expression which contains embedded values inside
  * it such as "hello there ${user} how are you" which is expanded lazily
- * 
- * @author <a href="mailto:james@coredevelopers.net">James Strachan</a>
  */
 public class GStringExpression extends Expression {
 
diff --git a/src/main/java/org/codehaus/groovy/ast/expr/ListExpression.java b/src/main/java/org/codehaus/groovy/ast/expr/ListExpression.java
index 94ab0d2..070a8e3 100644
--- a/src/main/java/org/codehaus/groovy/ast/expr/ListExpression.java
+++ b/src/main/java/org/codehaus/groovy/ast/expr/ListExpression.java
@@ -26,8 +26,6 @@ import java.util.List;
 
 /**
  * Represents a list expression [1, 2, 3] which creates a mutable List
- *
- * @author <a href="mailto:james@coredevelopers.net">James Strachan</a>
  */
 public class ListExpression extends Expression {
     private final List<Expression> expressions;
diff --git a/src/main/java/org/codehaus/groovy/ast/expr/MapEntryExpression.java b/src/main/java/org/codehaus/groovy/ast/expr/MapEntryExpression.java
index 3426fe0..9733637 100644
--- a/src/main/java/org/codehaus/groovy/ast/expr/MapEntryExpression.java
+++ b/src/main/java/org/codehaus/groovy/ast/expr/MapEntryExpression.java
@@ -23,8 +23,6 @@ import org.codehaus.groovy.ast.GroovyCodeVisitor;
 
 /**
  * Represents an entry inside a map expression such as 1 : 2.
- * 
- * @author <a href="mailto:james@coredevelopers.net">James Strachan</a>
  */
 public class MapEntryExpression extends Expression {
     private Expression keyExpression;
diff --git a/src/main/java/org/codehaus/groovy/ast/expr/MapExpression.java b/src/main/java/org/codehaus/groovy/ast/expr/MapExpression.java
index 0effc80..5ef2f9e 100644
--- a/src/main/java/org/codehaus/groovy/ast/expr/MapExpression.java
+++ b/src/main/java/org/codehaus/groovy/ast/expr/MapExpression.java
@@ -26,8 +26,6 @@ import java.util.List;
 
 /**
  * Represents a map expression [1 : 2, "a" : "b", x : y] which creates a mutable Map
- *
- * @author <a href="mailto:james@coredevelopers.net">James Strachan</a>
  */
 public class MapExpression extends Expression {
     private final List<MapEntryExpression> mapEntryExpressions;
diff --git a/src/main/java/org/codehaus/groovy/ast/expr/MethodCall.java b/src/main/java/org/codehaus/groovy/ast/expr/MethodCall.java
index e2e889d..6f7f6a3 100644
--- a/src/main/java/org/codehaus/groovy/ast/expr/MethodCall.java
+++ b/src/main/java/org/codehaus/groovy/ast/expr/MethodCall.java
@@ -23,7 +23,6 @@ import org.codehaus.groovy.ast.ASTNode;
 /**
  * Interface defining common methods for method calls.
  *
- * @author Cedric Champeau
  * @since 2.1.0
  */
 public interface MethodCall {
diff --git a/src/main/java/org/codehaus/groovy/ast/expr/MethodCallExpression.java b/src/main/java/org/codehaus/groovy/ast/expr/MethodCallExpression.java
index 089d930..a15cb2f 100644
--- a/src/main/java/org/codehaus/groovy/ast/expr/MethodCallExpression.java
+++ b/src/main/java/org/codehaus/groovy/ast/expr/MethodCallExpression.java
@@ -26,8 +26,6 @@ import org.codehaus.groovy.ast.MethodNode;
 
 /**
  * A method call on an object or class
- *
- * @author <a href="mailto:james@coredevelopers.net">James Strachan</a>
  */
 public class MethodCallExpression extends Expression implements MethodCall {
 
diff --git a/src/main/java/org/codehaus/groovy/ast/expr/NamedArgumentListExpression.java b/src/main/java/org/codehaus/groovy/ast/expr/NamedArgumentListExpression.java
index b53b89b..6cd7ac5 100644
--- a/src/main/java/org/codehaus/groovy/ast/expr/NamedArgumentListExpression.java
+++ b/src/main/java/org/codehaus/groovy/ast/expr/NamedArgumentListExpression.java
@@ -22,8 +22,6 @@ import java.util.List;
 
 /**
  * Represents one or more arguments being passed into a method by name
- * 
- * @author <a href="mailto:james@coredevelopers.net">James Strachan</a>
  */
 public class NamedArgumentListExpression extends MapExpression {
 
diff --git a/src/main/java/org/codehaus/groovy/ast/expr/NotExpression.java b/src/main/java/org/codehaus/groovy/ast/expr/NotExpression.java
index ec227ee..f404765 100644
--- a/src/main/java/org/codehaus/groovy/ast/expr/NotExpression.java
+++ b/src/main/java/org/codehaus/groovy/ast/expr/NotExpression.java
@@ -20,9 +20,6 @@ package org.codehaus.groovy.ast.expr;
 
 import org.codehaus.groovy.ast.GroovyCodeVisitor;
 
-/**
- * @author sam
- */
 public class NotExpression extends BooleanExpression {
 
     public NotExpression(Expression expression) {
diff --git a/src/main/java/org/codehaus/groovy/ast/expr/PostfixExpression.java b/src/main/java/org/codehaus/groovy/ast/expr/PostfixExpression.java
index 16d12dc..8caabab 100644
--- a/src/main/java/org/codehaus/groovy/ast/expr/PostfixExpression.java
+++ b/src/main/java/org/codehaus/groovy/ast/expr/PostfixExpression.java
@@ -24,8 +24,6 @@ import org.codehaus.groovy.syntax.Token;
 
 /**
  * Represents a postfix expression like foo++ or bar++
- * 
- * @author <a href="mailto:james@coredevelopers.net">James Strachan</a>
  */
 public class PostfixExpression extends Expression {
 
diff --git a/src/main/java/org/codehaus/groovy/ast/expr/PrefixExpression.java b/src/main/java/org/codehaus/groovy/ast/expr/PrefixExpression.java
index 8d8f7b2..b4be8ab 100644
--- a/src/main/java/org/codehaus/groovy/ast/expr/PrefixExpression.java
+++ b/src/main/java/org/codehaus/groovy/ast/expr/PrefixExpression.java
@@ -24,8 +24,6 @@ import org.codehaus.groovy.syntax.Token;
 
 /**
  * Represents a prefix expression like ++foo or --bar
- * 
- * @author <a href="mailto:james@coredevelopers.net">James Strachan</a>
  */
 public class PrefixExpression extends Expression {
 
diff --git a/src/main/java/org/codehaus/groovy/ast/expr/PropertyExpression.java b/src/main/java/org/codehaus/groovy/ast/expr/PropertyExpression.java
index 0b22c02..bfc6638 100644
--- a/src/main/java/org/codehaus/groovy/ast/expr/PropertyExpression.java
+++ b/src/main/java/org/codehaus/groovy/ast/expr/PropertyExpression.java
@@ -22,8 +22,6 @@ import org.codehaus.groovy.ast.GroovyCodeVisitor;
 
 /**
  * Represents a property access such as the expression "foo.bar".
- * 
- * @author <a href="mailto:james@coredevelopers.net">James Strachan</a>
  */
 public class PropertyExpression extends Expression {
 
diff --git a/src/main/java/org/codehaus/groovy/ast/expr/RangeExpression.java b/src/main/java/org/codehaus/groovy/ast/expr/RangeExpression.java
index 9067725..ad61b8c 100644
--- a/src/main/java/org/codehaus/groovy/ast/expr/RangeExpression.java
+++ b/src/main/java/org/codehaus/groovy/ast/expr/RangeExpression.java
@@ -24,8 +24,6 @@ import org.codehaus.groovy.ast.GroovyCodeVisitor;
  * Represents a range expression such as for iterating.
  * E.g.:
  * <pre>for i in 0..10 {...}</pre>
- * 
- * @author <a href="mailto:james@coredevelopers.net">James Strachan</a>
  */
 public class RangeExpression extends Expression {
 
diff --git a/src/main/java/org/codehaus/groovy/ast/expr/StaticMethodCallExpression.java b/src/main/java/org/codehaus/groovy/ast/expr/StaticMethodCallExpression.java
index 679b250..020274c 100644
--- a/src/main/java/org/codehaus/groovy/ast/expr/StaticMethodCallExpression.java
+++ b/src/main/java/org/codehaus/groovy/ast/expr/StaticMethodCallExpression.java
@@ -25,8 +25,6 @@ import org.codehaus.groovy.ast.GroovyCodeVisitor;
 
 /**
  * A static method call on a class
- *
- * @author <a href="mailto:james@coredevelopers.net">James Strachan</a>
  */
 public class StaticMethodCallExpression extends Expression implements MethodCall {
 
diff --git a/src/main/java/org/codehaus/groovy/ast/expr/TernaryExpression.java b/src/main/java/org/codehaus/groovy/ast/expr/TernaryExpression.java
index a24fd63..6a060dc 100644
--- a/src/main/java/org/codehaus/groovy/ast/expr/TernaryExpression.java
+++ b/src/main/java/org/codehaus/groovy/ast/expr/TernaryExpression.java
@@ -24,8 +24,6 @@ import org.codehaus.groovy.ast.GroovyCodeVisitor;
 
 /**
  * Represents a ternary expression (booleanExpression) ? expression : expression
- * 
- * @author <a href="mailto:james@coredevelopers.net">James Strachan</a>
  */
 public class TernaryExpression extends Expression {
 
diff --git a/src/main/java/org/codehaus/groovy/ast/expr/TupleExpression.java b/src/main/java/org/codehaus/groovy/ast/expr/TupleExpression.java
index 113706a..022b7ae 100644
--- a/src/main/java/org/codehaus/groovy/ast/expr/TupleExpression.java
+++ b/src/main/java/org/codehaus/groovy/ast/expr/TupleExpression.java
@@ -28,8 +28,6 @@ import java.util.List;
 
 /**
  * Represents a tuple expression {1, 2, 3} which creates an immutable List
- * 
- * @author <a href="mailto:james@coredevelopers.net">James Strachan</a>
  */
 public class TupleExpression extends Expression implements Iterable<Expression> {
     private final List<Expression> expressions;
diff --git a/src/main/java/org/codehaus/groovy/ast/expr/UnaryMinusExpression.java b/src/main/java/org/codehaus/groovy/ast/expr/UnaryMinusExpression.java
index 8d1315e..8e040fc 100644
--- a/src/main/java/org/codehaus/groovy/ast/expr/UnaryMinusExpression.java
+++ b/src/main/java/org/codehaus/groovy/ast/expr/UnaryMinusExpression.java
@@ -21,9 +21,6 @@ package org.codehaus.groovy.ast.expr;
 import org.codehaus.groovy.ast.ClassNode;
 import org.codehaus.groovy.ast.GroovyCodeVisitor;
 
-/**
- * @author sam
- */
 public class UnaryMinusExpression extends Expression {
 
     private final Expression expression;
diff --git a/src/main/java/org/codehaus/groovy/ast/expr/UnaryPlusExpression.java b/src/main/java/org/codehaus/groovy/ast/expr/UnaryPlusExpression.java
index 7c3f990..dc18eb2 100644
--- a/src/main/java/org/codehaus/groovy/ast/expr/UnaryPlusExpression.java
+++ b/src/main/java/org/codehaus/groovy/ast/expr/UnaryPlusExpression.java
@@ -21,9 +21,6 @@ package org.codehaus.groovy.ast.expr;
 import org.codehaus.groovy.ast.ClassNode;
 import org.codehaus.groovy.ast.GroovyCodeVisitor;
 
-/**
- * @author Paul King
- */
 public class UnaryPlusExpression extends Expression {
 
     private final Expression expression;
diff --git a/src/main/java/org/codehaus/groovy/ast/expr/VariableExpression.java b/src/main/java/org/codehaus/groovy/ast/expr/VariableExpression.java
index 4ddf07b..9043f7a 100644
--- a/src/main/java/org/codehaus/groovy/ast/expr/VariableExpression.java
+++ b/src/main/java/org/codehaus/groovy/ast/expr/VariableExpression.java
@@ -25,8 +25,6 @@ import org.codehaus.groovy.ast.Variable;
 
 /**
  * Represents a local variable name, the simplest form of expression. e.g.&#160;"foo".
- * 
- * @author <a href="mailto:james@coredevelopers.net">James Strachan</a>
  */
 public class VariableExpression extends Expression implements Variable {
     // The following fields are only used internally; every occurrence of a user-defined expression of the same kind
diff --git a/src/main/java/org/codehaus/groovy/ast/stmt/AssertStatement.java b/src/main/java/org/codehaus/groovy/ast/stmt/AssertStatement.java
index 3f1fb33..2adab38 100644
--- a/src/main/java/org/codehaus/groovy/ast/stmt/AssertStatement.java
+++ b/src/main/java/org/codehaus/groovy/ast/stmt/AssertStatement.java
@@ -29,8 +29,6 @@ import org.codehaus.groovy.ast.expr.Expression;
  * <code>
  * assert i != 0 : "should never be zero";
  * </code>
- * 
- * @author <a href="mailto:james@coredevelopers.net">James Strachan</a>
  */
 public class AssertStatement extends Statement {
 
diff --git a/src/main/java/org/codehaus/groovy/ast/stmt/BlockStatement.java b/src/main/java/org/codehaus/groovy/ast/stmt/BlockStatement.java
index 5013726..d71e1e2 100644
--- a/src/main/java/org/codehaus/groovy/ast/stmt/BlockStatement.java
+++ b/src/main/java/org/codehaus/groovy/ast/stmt/BlockStatement.java
@@ -27,8 +27,6 @@ import java.util.List;
 
 /**
  * A list of statements and a scope. 
- * 
- * @author <a href="mailto:james@coredevelopers.net">James Strachan</a>
  */
 public class BlockStatement extends Statement {
 
diff --git a/src/main/java/org/codehaus/groovy/ast/stmt/BreakStatement.java b/src/main/java/org/codehaus/groovy/ast/stmt/BreakStatement.java
index 5257991..ded97c2 100644
--- a/src/main/java/org/codehaus/groovy/ast/stmt/BreakStatement.java
+++ b/src/main/java/org/codehaus/groovy/ast/stmt/BreakStatement.java
@@ -20,11 +20,8 @@ package org.codehaus.groovy.ast.stmt;
 
 import org.codehaus.groovy.ast.GroovyCodeVisitor;
 
-
 /**
  * Represents a break statement in a switch or loop statement
- * 
- * @author <a href="mailto:james@coredevelopers.net">James Strachan</a>
  */
 public class BreakStatement extends Statement {
 
diff --git a/src/main/java/org/codehaus/groovy/ast/stmt/CaseStatement.java b/src/main/java/org/codehaus/groovy/ast/stmt/CaseStatement.java
index 7c06e69..ad69a55 100644
--- a/src/main/java/org/codehaus/groovy/ast/stmt/CaseStatement.java
+++ b/src/main/java/org/codehaus/groovy/ast/stmt/CaseStatement.java
@@ -24,8 +24,6 @@ import org.codehaus.groovy.ast.expr.Expression;
 
 /**
  * Represents a case statement in a switch statement
- * 
- * @author <a href="mailto:james@coredevelopers.net">James Strachan</a>
  */
 public class CaseStatement extends Statement {
 
diff --git a/src/main/java/org/codehaus/groovy/ast/stmt/CatchStatement.java b/src/main/java/org/codehaus/groovy/ast/stmt/CatchStatement.java
index 3f40957..ce0fe17 100644
--- a/src/main/java/org/codehaus/groovy/ast/stmt/CatchStatement.java
+++ b/src/main/java/org/codehaus/groovy/ast/stmt/CatchStatement.java
@@ -25,8 +25,6 @@ import org.codehaus.groovy.ast.Parameter;
 
 /**
  * Represents a catch (Exception var) { } statement
- * 
- * @author <a href="mailto:james@coredevelopers.net">James Strachan</a>
  */
 public class CatchStatement extends Statement {
 
diff --git a/src/main/java/org/codehaus/groovy/ast/stmt/ContinueStatement.java b/src/main/java/org/codehaus/groovy/ast/stmt/ContinueStatement.java
index 034dcf2..d261b5a 100644
--- a/src/main/java/org/codehaus/groovy/ast/stmt/ContinueStatement.java
+++ b/src/main/java/org/codehaus/groovy/ast/stmt/ContinueStatement.java
@@ -23,8 +23,6 @@ import org.codehaus.groovy.ast.GroovyCodeVisitor;
 
 /**
  * Represents a continue statement in a loop statement
- * 
- * @author <a href="mailto:james@coredevelopers.net">James Strachan</a>
  */
 public class ContinueStatement extends Statement {
 
diff --git a/src/main/java/org/codehaus/groovy/ast/stmt/DoWhileStatement.java b/src/main/java/org/codehaus/groovy/ast/stmt/DoWhileStatement.java
index a7b518b..77ae235 100644
--- a/src/main/java/org/codehaus/groovy/ast/stmt/DoWhileStatement.java
+++ b/src/main/java/org/codehaus/groovy/ast/stmt/DoWhileStatement.java
@@ -23,8 +23,6 @@ import org.codehaus.groovy.ast.expr.BooleanExpression;
 
 /**
  * Represents a do { ... } while (condition) loop in Groovy
- * 
- * @author <a href="mailto:james@coredevelopers.net">James Strachan</a>
  */
 public class DoWhileStatement extends Statement implements LoopingStatement {
 
diff --git a/src/main/java/org/codehaus/groovy/ast/stmt/EmptyStatement.java b/src/main/java/org/codehaus/groovy/ast/stmt/EmptyStatement.java
index d4b706c..ff83eaa 100644
--- a/src/main/java/org/codehaus/groovy/ast/stmt/EmptyStatement.java
+++ b/src/main/java/org/codehaus/groovy/ast/stmt/EmptyStatement.java
@@ -22,8 +22,6 @@ import org.codehaus.groovy.ast.GroovyCodeVisitor;
 
 /**
  * Represents an empty statement
- * 
- * @author <a href="mailto:james@coredevelopers.net">James Strachan</a>
  */
 public class EmptyStatement extends Statement {
 
diff --git a/src/main/java/org/codehaus/groovy/ast/stmt/ExpressionStatement.java b/src/main/java/org/codehaus/groovy/ast/stmt/ExpressionStatement.java
index c6376b2..edb82f3 100644
--- a/src/main/java/org/codehaus/groovy/ast/stmt/ExpressionStatement.java
+++ b/src/main/java/org/codehaus/groovy/ast/stmt/ExpressionStatement.java
@@ -24,8 +24,6 @@ import org.codehaus.groovy.ast.expr.Expression;
 
 /**
  * A simple statement such as a method call where the return value is ignored
- *
- * @author <a href="mailto:james@coredevelopers.net">James Strachan</a>
  */
 public class ExpressionStatement extends Statement {
 
diff --git a/src/main/java/org/codehaus/groovy/ast/stmt/ForStatement.java b/src/main/java/org/codehaus/groovy/ast/stmt/ForStatement.java
index 072ee6e..0e8b45f 100644
--- a/src/main/java/org/codehaus/groovy/ast/stmt/ForStatement.java
+++ b/src/main/java/org/codehaus/groovy/ast/stmt/ForStatement.java
@@ -27,8 +27,6 @@ import org.codehaus.groovy.ast.expr.Expression;
 
 /**
  * Represents a standard for loop in Groovy
- * 
- * @author <a href="mailto:james@coredevelopers.net">James Strachan</a>
  */
 public class ForStatement extends Statement implements LoopingStatement {
     public static final Parameter FOR_LOOP_DUMMY = new Parameter(ClassHelper.OBJECT_TYPE,"forLoopDummyParameter");
diff --git a/src/main/java/org/codehaus/groovy/ast/stmt/IfStatement.java b/src/main/java/org/codehaus/groovy/ast/stmt/IfStatement.java
index 3f614cc..94629d9 100644
--- a/src/main/java/org/codehaus/groovy/ast/stmt/IfStatement.java
+++ b/src/main/java/org/codehaus/groovy/ast/stmt/IfStatement.java
@@ -23,8 +23,6 @@ import org.codehaus.groovy.ast.expr.BooleanExpression;
 
 /**
  * Represents an if (condition) { ... } else { ... } statement in Groovy
- * 
- * @author <a href="mailto:james@coredevelopers.net">James Strachan</a>
  */
 public class IfStatement extends Statement {
 
diff --git a/src/main/java/org/codehaus/groovy/ast/stmt/LoopingStatement.java b/src/main/java/org/codehaus/groovy/ast/stmt/LoopingStatement.java
index 4568103..c536aa5 100644
--- a/src/main/java/org/codehaus/groovy/ast/stmt/LoopingStatement.java
+++ b/src/main/java/org/codehaus/groovy/ast/stmt/LoopingStatement.java
@@ -22,9 +22,7 @@ package org.codehaus.groovy.ast.stmt;
 * This is an AST Node that provides some sort of looping mechanism. Typically
 * in the form of a block that will be executed repeatedly. 
 * DoWhileStatements, WhileStatements, and ForStatements are all examples of LoopingStatements. 
-*
-* @author Hamlet D'Arcy
-*/ 
+*/
 public interface LoopingStatement {
 
      /**
diff --git a/src/main/java/org/codehaus/groovy/ast/stmt/ReturnStatement.java b/src/main/java/org/codehaus/groovy/ast/stmt/ReturnStatement.java
index 9e08ebd..bfa34d8 100644
--- a/src/main/java/org/codehaus/groovy/ast/stmt/ReturnStatement.java
+++ b/src/main/java/org/codehaus/groovy/ast/stmt/ReturnStatement.java
@@ -24,8 +24,6 @@ import org.codehaus.groovy.ast.expr.Expression;
 
 /**
  * A return statement
- * 
- * @author <a href="mailto:james@coredevelopers.net">James Strachan</a>
  */
 public class ReturnStatement extends Statement {
     /**
diff --git a/src/main/java/org/codehaus/groovy/ast/stmt/Statement.java b/src/main/java/org/codehaus/groovy/ast/stmt/Statement.java
index 80dbc4d..5764df0 100644
--- a/src/main/java/org/codehaus/groovy/ast/stmt/Statement.java
+++ b/src/main/java/org/codehaus/groovy/ast/stmt/Statement.java
@@ -25,8 +25,6 @@ import java.util.List;
 
 /**
  * Base class for any statement
- *
- * @author <a href="mailto:james@coredevelopers.net">James Strachan</a>
  */
 public class Statement extends ASTNode {
 
diff --git a/src/main/java/org/codehaus/groovy/ast/stmt/SwitchStatement.java b/src/main/java/org/codehaus/groovy/ast/stmt/SwitchStatement.java
index bad0194..52f1d41 100644
--- a/src/main/java/org/codehaus/groovy/ast/stmt/SwitchStatement.java
+++ b/src/main/java/org/codehaus/groovy/ast/stmt/SwitchStatement.java
@@ -26,8 +26,6 @@ import java.util.List;
 
 /**
  * Represents a switch (object) { case value: ... case [1, 2, 3]: ...  default: ... } statement in Groovy.
- * 
- * @author <a href="mailto:james@coredevelopers.net">James Strachan</a>
  */
 public class SwitchStatement extends Statement {
 
diff --git a/src/main/java/org/codehaus/groovy/ast/stmt/SynchronizedStatement.java b/src/main/java/org/codehaus/groovy/ast/stmt/SynchronizedStatement.java
index 1fd3e5c..739cb11 100644
--- a/src/main/java/org/codehaus/groovy/ast/stmt/SynchronizedStatement.java
+++ b/src/main/java/org/codehaus/groovy/ast/stmt/SynchronizedStatement.java
@@ -24,8 +24,6 @@ import org.codehaus.groovy.ast.expr.Expression;
 
 /**
  * Represents a synchronized statement
- * 
- * @author <a href="mailto:james@coredevelopers.net">James Strachan</a>
  */
 public class SynchronizedStatement extends Statement {
 
diff --git a/src/main/java/org/codehaus/groovy/ast/stmt/ThrowStatement.java b/src/main/java/org/codehaus/groovy/ast/stmt/ThrowStatement.java
index a217840..4346086 100644
--- a/src/main/java/org/codehaus/groovy/ast/stmt/ThrowStatement.java
+++ b/src/main/java/org/codehaus/groovy/ast/stmt/ThrowStatement.java
@@ -24,8 +24,6 @@ import org.codehaus.groovy.ast.expr.Expression;
 
 /**
  * Represents a throw statement
- * 
- * @author <a href="mailto:james@coredevelopers.net">James Strachan</a>
  */
 public class ThrowStatement extends Statement {
 
diff --git a/src/main/java/org/codehaus/groovy/ast/stmt/TryCatchStatement.java b/src/main/java/org/codehaus/groovy/ast/stmt/TryCatchStatement.java
index 172e403..223e419 100644
--- a/src/main/java/org/codehaus/groovy/ast/stmt/TryCatchStatement.java
+++ b/src/main/java/org/codehaus/groovy/ast/stmt/TryCatchStatement.java
@@ -25,8 +25,6 @@ import java.util.List;
 
 /**
  * Represents a try { ... } catch () finally {} statement in Groovy
- * 
- * @author <a href="mailto:james@coredevelopers.net">James Strachan</a>
  */
 public class TryCatchStatement extends Statement {
 
diff --git a/src/main/java/org/codehaus/groovy/ast/stmt/WhileStatement.java b/src/main/java/org/codehaus/groovy/ast/stmt/WhileStatement.java
index e325481..38e004e 100644
--- a/src/main/java/org/codehaus/groovy/ast/stmt/WhileStatement.java
+++ b/src/main/java/org/codehaus/groovy/ast/stmt/WhileStatement.java
@@ -23,8 +23,6 @@ import org.codehaus.groovy.ast.expr.BooleanExpression;
 
 /**
  * Represents a while (condition) { ... } loop in Groovy
- *
- * @author <a href="mailto:james@coredevelopers.net">James Strachan</a>
  */
 public class WhileStatement extends Statement implements LoopingStatement {
 
diff --git a/src/main/java/org/codehaus/groovy/ast/tools/WideningCategories.java b/src/main/java/org/codehaus/groovy/ast/tools/WideningCategories.java
index fb1cc72..2e4f71d 100644
--- a/src/main/java/org/codehaus/groovy/ast/tools/WideningCategories.java
+++ b/src/main/java/org/codehaus/groovy/ast/tools/WideningCategories.java
@@ -67,9 +67,6 @@ import static org.codehaus.groovy.ast.GenericsType.GenericsTypeName;
  * the number 1 being int, since the 1 is an int. The 2l is a long, therefore the
  * int category will not apply and the result type can't be int. The next category
  * in the list is long, and since both apply to long, the result type is a long.
- *
- * @author <a href="mailto:blackdrag@gmx.org">Jochen "blackdrag" Theodorou</a>
- * @author Cedric Champeau
  */
 public class WideningCategories {
 
diff --git a/src/main/java/org/codehaus/groovy/classgen/BytecodeExpression.java b/src/main/java/org/codehaus/groovy/classgen/BytecodeExpression.java
index ca8030f..670e484 100644
--- a/src/main/java/org/codehaus/groovy/classgen/BytecodeExpression.java
+++ b/src/main/java/org/codehaus/groovy/classgen/BytecodeExpression.java
@@ -26,8 +26,6 @@ import org.objectweb.asm.MethodVisitor;
 
 /**
  * Represents some custom bytecode generation by the compiler
- *
- * @author <a href="mailto:james@coredevelopers.net">James Strachan</a>
  */
 public abstract class BytecodeExpression extends Expression {
     public static final BytecodeExpression NOP = new BytecodeExpression() {
diff --git a/src/main/java/org/codehaus/groovy/classgen/BytecodeInstruction.java b/src/main/java/org/codehaus/groovy/classgen/BytecodeInstruction.java
index e390654..a0bb9a7 100644
--- a/src/main/java/org/codehaus/groovy/classgen/BytecodeInstruction.java
+++ b/src/main/java/org/codehaus/groovy/classgen/BytecodeInstruction.java
@@ -1,32 +1,30 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-package org.codehaus.groovy.classgen;
-
-import org.objectweb.asm.MethodVisitor;
-
-/**
- * Helper class used by the class generator. Usually
- * an inner class is produced, that contains bytecode
- * creation code in the visit method.
- *
- * @author Jochen Theodorou
- */
-public abstract class BytecodeInstruction {
-    public abstract void visit(MethodVisitor mv);
-}
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.codehaus.groovy.classgen;
+
+import org.objectweb.asm.MethodVisitor;
+
+/**
+ * Helper class used by the class generator. Usually
+ * an inner class is produced, that contains bytecode
+ * creation code in the visit method.
+ */
+public abstract class BytecodeInstruction {
+    public abstract void visit(MethodVisitor mv);
+}
diff --git a/src/main/java/org/codehaus/groovy/classgen/ClassGenerator.java b/src/main/java/org/codehaus/groovy/classgen/ClassGenerator.java
index 2ed8661..237b06d 100644
--- a/src/main/java/org/codehaus/groovy/classgen/ClassGenerator.java
+++ b/src/main/java/org/codehaus/groovy/classgen/ClassGenerator.java
@@ -27,9 +27,6 @@ import java.util.LinkedList;
 
 /**
  * Abstract base class for generator of Java class versions of Groovy AST classes
- *
- * @author <a href="mailto:jstrachan@protique.com">James Strachan</a>
- * @author Russel Winder
  */
 public abstract class ClassGenerator extends ClassCodeVisitorSupport implements Opcodes {
     // inner classes created while generating bytecode
diff --git a/src/main/java/org/codehaus/groovy/classgen/ClassGeneratorException.java b/src/main/java/org/codehaus/groovy/classgen/ClassGeneratorException.java
index 5c404ec..280f59d 100644
--- a/src/main/java/org/codehaus/groovy/classgen/ClassGeneratorException.java
+++ b/src/main/java/org/codehaus/groovy/classgen/ClassGeneratorException.java
@@ -20,8 +20,6 @@ package org.codehaus.groovy.classgen;
 
 /**
  * An exception thrown by the class generator
- *
- * @author <a href="mailto:james@coredevelopers.net">James Strachan</a>
  */
 public class ClassGeneratorException extends RuntimeException {
 
diff --git a/src/main/java/org/codehaus/groovy/classgen/DummyClassGenerator.java b/src/main/java/org/codehaus/groovy/classgen/DummyClassGenerator.java
index 15ade40..b85f91a 100644
--- a/src/main/java/org/codehaus/groovy/classgen/DummyClassGenerator.java
+++ b/src/main/java/org/codehaus/groovy/classgen/DummyClassGenerator.java
@@ -40,9 +40,6 @@ import java.util.Iterator;
  * To generate a class that has all the fields and methods, except that fields are not initialized
  * and methods are empty. It's intended for being used as a place holder during code generation
  * of reference to the "this" class itself.
- *
- * @author <a href="mailto:james@coredevelopers.net">James Strachan</a>
- * @author <a href="mailto:b55r@sina.com">Bing Ran</a>
  */
 public class DummyClassGenerator extends ClassGenerator {
 
diff --git a/src/main/java/org/codehaus/groovy/classgen/GeneratorContext.java b/src/main/java/org/codehaus/groovy/classgen/GeneratorContext.java
index da51a0a..4fc9c92 100644
--- a/src/main/java/org/codehaus/groovy/classgen/GeneratorContext.java
+++ b/src/main/java/org/codehaus/groovy/classgen/GeneratorContext.java
@@ -27,8 +27,6 @@ import org.codehaus.groovy.ast.MethodNode;
 
 /**
  * A context shared across generations of a class and its inner classes
- * 
- * @author <a href="mailto:james@coredevelopers.net">James Strachan</a>
  */
 public class GeneratorContext {
 
diff --git a/src/main/java/org/codehaus/groovy/classgen/VerifierCodeVisitor.java b/src/main/java/org/codehaus/groovy/classgen/VerifierCodeVisitor.java
index 424aa7e..2cb9fc2 100644
--- a/src/main/java/org/codehaus/groovy/classgen/VerifierCodeVisitor.java
+++ b/src/main/java/org/codehaus/groovy/classgen/VerifierCodeVisitor.java
@@ -35,8 +35,6 @@ import org.objectweb.asm.Opcodes;
  * Performs various checks on code inside methods and constructors
  * including checking for valid field, variables names etc. that
  * would otherwise lead to invalid code.
- *
- * @author <a href="mailto:james@coredevelopers.net">James Strachan</a>
  */
 public class VerifierCodeVisitor extends CodeVisitorSupport implements Opcodes {
 
diff --git a/src/main/java/org/codehaus/groovy/classgen/asm/BinaryDoubleExpressionHelper.java b/src/main/java/org/codehaus/groovy/classgen/asm/BinaryDoubleExpressionHelper.java
index 736e060..669aa88 100644
--- a/src/main/java/org/codehaus/groovy/classgen/asm/BinaryDoubleExpressionHelper.java
+++ b/src/main/java/org/codehaus/groovy/classgen/asm/BinaryDoubleExpressionHelper.java
@@ -32,9 +32,6 @@ import static org.objectweb.asm.Opcodes.DMUL;
 import static org.objectweb.asm.Opcodes.DREM;
 import static org.objectweb.asm.Opcodes.DSUB;
 
-/**
- * @author <a href="mailto:blackdrag@gmx.org">Jochen "blackdrag" Theodorou</a>
- */
 public class BinaryDoubleExpressionHelper extends BinaryLongExpressionHelper {
 
 
diff --git a/src/main/java/org/codehaus/groovy/classgen/asm/BinaryExpressionWriter.java b/src/main/java/org/codehaus/groovy/classgen/asm/BinaryExpressionWriter.java
index c03515a..de949a8 100644
--- a/src/main/java/org/codehaus/groovy/classgen/asm/BinaryExpressionWriter.java
+++ b/src/main/java/org/codehaus/groovy/classgen/asm/BinaryExpressionWriter.java
@@ -44,7 +44,6 @@ import static org.objectweb.asm.Opcodes.IFNE;
 
 /**
  * Base class for writing primitive typed operations
- * @author <a href="mailto:blackdrag@gmx.org">Jochen "blackdrag" Theodorou</a>
  */
 public abstract class BinaryExpressionWriter {
     
diff --git a/src/main/java/org/codehaus/groovy/classgen/asm/BinaryFloatExpressionHelper.java b/src/main/java/org/codehaus/groovy/classgen/asm/BinaryFloatExpressionHelper.java
index 6a4552a..5e7a012 100644
--- a/src/main/java/org/codehaus/groovy/classgen/asm/BinaryFloatExpressionHelper.java
+++ b/src/main/java/org/codehaus/groovy/classgen/asm/BinaryFloatExpressionHelper.java
@@ -34,9 +34,6 @@ import static org.objectweb.asm.Opcodes.FREM;
 import static org.objectweb.asm.Opcodes.FSUB;
 import static org.objectweb.asm.Opcodes.POP2;
 
-/**
- * @author <a href="mailto:blackdrag@gmx.org">Jochen "blackdrag" Theodorou</a>
- */
 public class BinaryFloatExpressionHelper extends BinaryExpressionWriter {
 
     public BinaryFloatExpressionHelper(WriterController controller) {
diff --git a/src/main/java/org/codehaus/groovy/classgen/asm/BinaryLongExpressionHelper.java b/src/main/java/org/codehaus/groovy/classgen/asm/BinaryLongExpressionHelper.java
index 8bfaf98..95558e1 100644
--- a/src/main/java/org/codehaus/groovy/classgen/asm/BinaryLongExpressionHelper.java
+++ b/src/main/java/org/codehaus/groovy/classgen/asm/BinaryLongExpressionHelper.java
@@ -39,9 +39,6 @@ import static org.objectweb.asm.Opcodes.LUSHR;
 import static org.objectweb.asm.Opcodes.LXOR;
 import static org.objectweb.asm.Opcodes.POP2;
 
-/**
- * @author <a href="mailto:blackdrag@gmx.org">Jochen "blackdrag" Theodorou</a>
- */
 public class BinaryLongExpressionHelper extends BinaryExpressionWriter {
 
     /**
diff --git a/src/main/java/org/codehaus/groovy/classgen/asm/BinaryObjectExpressionHelper.java b/src/main/java/org/codehaus/groovy/classgen/asm/BinaryObjectExpressionHelper.java
index 31350d5..f625279 100644
--- a/src/main/java/org/codehaus/groovy/classgen/asm/BinaryObjectExpressionHelper.java
+++ b/src/main/java/org/codehaus/groovy/classgen/asm/BinaryObjectExpressionHelper.java
@@ -24,9 +24,6 @@ import org.codehaus.groovy.ast.ClassNode;
 import org.codehaus.groovy.runtime.BytecodeInterface8;
 import org.objectweb.asm.MethodVisitor;
 
-/**
- * @author <a href="mailto:blackdrag@gmx.org">Jochen "blackdrag" Theodorou</a>
- */
 public class BinaryObjectExpressionHelper extends BinaryExpressionWriter {
     private static final MethodCaller arrayGet = MethodCaller.newStatic(BytecodeInterface8.class, "objectArrayGet");
     private static final MethodCaller arraySet = MethodCaller.newStatic(BytecodeInterface8.class, "objectArraySet");
diff --git a/src/main/java/org/codehaus/groovy/classgen/asm/BytecodeDumper.java b/src/main/java/org/codehaus/groovy/classgen/asm/BytecodeDumper.java
index 935020f..86359e6 100644
--- a/src/main/java/org/codehaus/groovy/classgen/asm/BytecodeDumper.java
+++ b/src/main/java/org/codehaus/groovy/classgen/asm/BytecodeDumper.java
@@ -28,7 +28,6 @@ import java.io.Writer;
 /**
  * An utility class which can be used in test cases to dump generated bytecode.
  *
- * @author Cédric Champeau
  * @since 2.4.0
  */
 public class BytecodeDumper implements BytecodeProcessor {
diff --git a/src/main/java/org/codehaus/groovy/classgen/asm/BytecodeHelper.java b/src/main/java/org/codehaus/groovy/classgen/asm/BytecodeHelper.java
index b5880fd..b010726 100644
--- a/src/main/java/org/codehaus/groovy/classgen/asm/BytecodeHelper.java
+++ b/src/main/java/org/codehaus/groovy/classgen/asm/BytecodeHelper.java
@@ -46,10 +46,6 @@ import static org.codehaus.groovy.ast.ClassHelper.short_TYPE;
 
 /**
  * A helper class for bytecode generation with AsmClassGenerator.
- *
- * @author <a href="mailto:james@coredevelopers.net">James Strachan</a>
- * @author <a href="mailto:b55r@sina.com">Bing Ran</a>
- * @author <a href="mailto:blackdrag@gmx.org">Jochen Theodorou</a>
  */
 public class BytecodeHelper implements Opcodes {
     
diff --git a/src/main/java/org/codehaus/groovy/classgen/asm/BytecodeVariable.java b/src/main/java/org/codehaus/groovy/classgen/asm/BytecodeVariable.java
index 1f34bc3..8ca64fe 100644
--- a/src/main/java/org/codehaus/groovy/classgen/asm/BytecodeVariable.java
+++ b/src/main/java/org/codehaus/groovy/classgen/asm/BytecodeVariable.java
@@ -24,9 +24,6 @@ import org.objectweb.asm.Label;
 
 /**
  * Represents compile time variable metadata while compiling a method.
- * 
- * @author <a href="mailto:james@coredevelopers.net">James Strachan</a>
- * @author <a href="mailto:blackdrag@gmx.org">Jochen Theodorou</a>
  */
 public class BytecodeVariable {
     
diff --git a/src/main/java/org/codehaus/groovy/classgen/asm/CompileStack.java b/src/main/java/org/codehaus/groovy/classgen/asm/CompileStack.java
index 35133bb..3caafad 100644
--- a/src/main/java/org/codehaus/groovy/classgen/asm/CompileStack.java
+++ b/src/main/java/org/codehaus/groovy/classgen/asm/CompileStack.java
@@ -67,7 +67,6 @@ import java.util.Map;
  *
  *
  * @see org.codehaus.groovy.classgen.AsmClassGenerator
- * @author Jochen Theodorou
  */
 public class CompileStack implements Opcodes {
     /**
diff --git a/src/main/java/org/codehaus/groovy/classgen/asm/DelegatingController.java b/src/main/java/org/codehaus/groovy/classgen/asm/DelegatingController.java
index 22acbaa..36bb501 100644
--- a/src/main/java/org/codehaus/groovy/classgen/asm/DelegatingController.java
+++ b/src/main/java/org/codehaus/groovy/classgen/asm/DelegatingController.java
@@ -30,7 +30,6 @@ import org.objectweb.asm.MethodVisitor;
 
 /**
  * This class will delegate all calls to a WriterController given in the constructor. 
- * @author <a href="mailto:blackdrag@gmx.org">Jochen "blackdrag" Theodorou</a>
  */
 public class DelegatingController extends WriterController {
     private final WriterController delegationController;
diff --git a/src/main/java/org/codehaus/groovy/classgen/asm/ExpressionAsVariableSlot.java b/src/main/java/org/codehaus/groovy/classgen/asm/ExpressionAsVariableSlot.java
index a9e568b..9570a44 100644
--- a/src/main/java/org/codehaus/groovy/classgen/asm/ExpressionAsVariableSlot.java
+++ b/src/main/java/org/codehaus/groovy/classgen/asm/ExpressionAsVariableSlot.java
@@ -29,7 +29,6 @@ import org.objectweb.asm.MethodVisitor;
  * the visit is completed. A copy of the variable will stay on the stack. 
  * Subsequent visits will load the stored value instead of visiting the 
  * expression again
- * @author <a href="mailto:blackdrag@gmx.org">Jochen "blackdrag" Theodorou</a>
  */
 public class ExpressionAsVariableSlot extends BytecodeExpression {
     private int index = -1;
diff --git a/src/main/java/org/codehaus/groovy/classgen/asm/MethodCaller.java b/src/main/java/org/codehaus/groovy/classgen/asm/MethodCaller.java
index bc40952..9ebb34d 100644
--- a/src/main/java/org/codehaus/groovy/classgen/asm/MethodCaller.java
+++ b/src/main/java/org/codehaus/groovy/classgen/asm/MethodCaller.java
@@ -27,8 +27,6 @@ import java.lang.reflect.Method;
 
 /**
  * A helper class to invoke methods more easily in ASM
- * 
- * @author <a href="mailto:james@coredevelopers.net">James Strachan</a>
  */
 public class MethodCaller implements Opcodes {
 
diff --git a/src/main/java/org/codehaus/groovy/classgen/asm/StatementMetaTypeChooser.java b/src/main/java/org/codehaus/groovy/classgen/asm/StatementMetaTypeChooser.java
index 2ada09d..c02b4f3 100644
--- a/src/main/java/org/codehaus/groovy/classgen/asm/StatementMetaTypeChooser.java
+++ b/src/main/java/org/codehaus/groovy/classgen/asm/StatementMetaTypeChooser.java
@@ -28,9 +28,6 @@ import org.codehaus.groovy.ast.expr.VariableExpression;
 
 /**
  * A {@link TypeChooser} which is aware of statement metadata.
- *
- * @author Jochen Theodorou
- * @author Cedric Champeau
  */
 public class StatementMetaTypeChooser implements TypeChooser {
     public ClassNode resolveType(final Expression exp, final ClassNode current) {
diff --git a/src/main/java/org/codehaus/groovy/classgen/asm/TypeChooser.java b/src/main/java/org/codehaus/groovy/classgen/asm/TypeChooser.java
index ec552b3..5455224 100644
--- a/src/main/java/org/codehaus/groovy/classgen/asm/TypeChooser.java
+++ b/src/main/java/org/codehaus/groovy/classgen/asm/TypeChooser.java
@@ -25,8 +25,6 @@ import org.codehaus.groovy.ast.expr.Expression;
  * Interface for modules which are capable of resolving the type of an expression.
  * Several implementations are available, depending on whether you are in a dynamic
  * or static compilation mode.
- *
- * @author Cedric Champeau
  */
 public interface TypeChooser {
 
diff --git a/src/main/java/org/codehaus/groovy/classgen/asm/UnaryExpressionHelper.java b/src/main/java/org/codehaus/groovy/classgen/asm/UnaryExpressionHelper.java
index 0ebd9b4..9ed2792 100644
--- a/src/main/java/org/codehaus/groovy/classgen/asm/UnaryExpressionHelper.java
+++ b/src/main/java/org/codehaus/groovy/classgen/asm/UnaryExpressionHelper.java
@@ -33,8 +33,6 @@ import org.codehaus.groovy.runtime.ScriptBytecodeAdapter;
  * helper.
  *
  * @see BinaryExpressionHelper
- *
- * @author Cedric Champeau
  */
 public class UnaryExpressionHelper {
 
diff --git a/src/main/java/org/codehaus/groovy/classgen/asm/WriterControllerFactory.java b/src/main/java/org/codehaus/groovy/classgen/asm/WriterControllerFactory.java
index a47f309..a98bd44 100644
--- a/src/main/java/org/codehaus/groovy/classgen/asm/WriterControllerFactory.java
+++ b/src/main/java/org/codehaus/groovy/classgen/asm/WriterControllerFactory.java
@@ -20,7 +20,6 @@ package org.codehaus.groovy.classgen.asm;
 
 /**
  * A non static factory to get alternative writer controller to be stored in the meta data
- * @author <a href="mailto:blackdrag@gmx.org">Jochen "blackdrag" Theodorou</a>
  */
 public interface WriterControllerFactory {
     WriterController makeController(WriterController normalController);
diff --git a/src/main/java/org/codehaus/groovy/classgen/asm/indy/IndyCallSiteWriter.java b/src/main/java/org/codehaus/groovy/classgen/asm/indy/IndyCallSiteWriter.java
index 1a80e06..da73e57 100644
--- a/src/main/java/org/codehaus/groovy/classgen/asm/indy/IndyCallSiteWriter.java
+++ b/src/main/java/org/codehaus/groovy/classgen/asm/indy/IndyCallSiteWriter.java
@@ -27,7 +27,6 @@ import org.codehaus.groovy.classgen.asm.WriterController;
  * This class mostly contains empty stubs for calls to the call site writer,
  * since this class is normally used to prepare call site caching and in indy
  * call site caching is done by the jvm.
- * @author <a href="mailto:blackdrag@gmx.org">Jochen "blackdrag" Theodorou</a>
  */
 public class IndyCallSiteWriter extends CallSiteWriter {
     private final WriterController controller;
diff --git a/src/main/java/org/codehaus/groovy/classgen/asm/indy/InvokeDynamicWriter.java b/src/main/java/org/codehaus/groovy/classgen/asm/indy/InvokeDynamicWriter.java
index 1b74a11..0cde5aa 100644
--- a/src/main/java/org/codehaus/groovy/classgen/asm/indy/InvokeDynamicWriter.java
+++ b/src/main/java/org/codehaus/groovy/classgen/asm/indy/InvokeDynamicWriter.java
@@ -58,8 +58,6 @@ import static org.objectweb.asm.Opcodes.H_INVOKESTATIC;
 /**
  * This Writer is used to generate the call invocation byte codes
  * for usage by invokedynamic.
- * 
- * @author <a href="mailto:blackdrag@gmx.org">Jochen "blackdrag" Theodorou</a>
  */
 public class InvokeDynamicWriter extends InvocationWriter {
     
diff --git a/src/main/java/org/codehaus/groovy/classgen/asm/indy/sc/IndyStaticTypesMultiTypeDispatcher.java b/src/main/java/org/codehaus/groovy/classgen/asm/indy/sc/IndyStaticTypesMultiTypeDispatcher.java
index ebcf2a8..4fa6e36 100644
--- a/src/main/java/org/codehaus/groovy/classgen/asm/indy/sc/IndyStaticTypesMultiTypeDispatcher.java
+++ b/src/main/java/org/codehaus/groovy/classgen/asm/indy/sc/IndyStaticTypesMultiTypeDispatcher.java
@@ -32,7 +32,7 @@ import java.lang.invoke.MethodType;
 
 /**
  * Multi type dispatcher for binary expression backend combining indy and static compilation
- * @author Jochen Theodorou
+ *
  * @since 2.5.0
  */
 public class IndyStaticTypesMultiTypeDispatcher extends StaticTypesBinaryExpressionMultiTypeDispatcher {
diff --git a/src/main/java/org/codehaus/groovy/classgen/asm/sc/StaticCompilationMopWriter.java b/src/main/java/org/codehaus/groovy/classgen/asm/sc/StaticCompilationMopWriter.java
index 5a09829..c30040d 100644
--- a/src/main/java/org/codehaus/groovy/classgen/asm/sc/StaticCompilationMopWriter.java
+++ b/src/main/java/org/codehaus/groovy/classgen/asm/sc/StaticCompilationMopWriter.java
@@ -31,7 +31,6 @@ import java.util.LinkedList;
  * when a class is *fully* statically compiled. In mixed mode, MOP methods are
  * still generated.
  *
- * @author Cédric Champeau
  * @since 2.4.0
  */
 public class StaticCompilationMopWriter extends MopWriter {
diff --git a/src/main/java/org/codehaus/groovy/classgen/asm/sc/StaticPropertyAccessHelper.java b/src/main/java/org/codehaus/groovy/classgen/asm/sc/StaticPropertyAccessHelper.java
index 6027a0c..b36801b 100644
--- a/src/main/java/org/codehaus/groovy/classgen/asm/sc/StaticPropertyAccessHelper.java
+++ b/src/main/java/org/codehaus/groovy/classgen/asm/sc/StaticPropertyAccessHelper.java
@@ -32,7 +32,6 @@ import java.util.Arrays;
 /**
  * Contains helper methods aimed at facilitating the generation of statically compiled bytecode for property access.
  *
- * @author Cédric Champeau
  * @since 2.4.0
  */
 public abstract class StaticPropertyAccessHelper {
diff --git a/src/main/java/org/codehaus/groovy/classgen/asm/sc/StaticTypesBinaryExpressionMultiTypeDispatcher.java b/src/main/java/org/codehaus/groovy/classgen/asm/sc/StaticTypesBinaryExpressionMultiTypeDispatcher.java
index 9078aee..7168996 100644
--- a/src/main/java/org/codehaus/groovy/classgen/asm/sc/StaticTypesBinaryExpressionMultiTypeDispatcher.java
+++ b/src/main/java/org/codehaus/groovy/classgen/asm/sc/StaticTypesBinaryExpressionMultiTypeDispatcher.java
@@ -76,9 +76,6 @@ import static org.codehaus.groovy.transform.sc.StaticCompilationVisitor.ARRAYLIS
 /**
  * A specialized version of the multi type binary expression dispatcher which is aware of static compilation.
  * It is able to generate optimized bytecode for some operations using JVM instructions when available.
- *
- * @author Cedric Champeau
- * @author Jochen Theodorou
  */
 public class StaticTypesBinaryExpressionMultiTypeDispatcher extends BinaryExpressionMultiTypeDispatcher implements Opcodes {
 
diff --git a/src/main/java/org/codehaus/groovy/classgen/asm/sc/StaticTypesCallSiteWriter.java b/src/main/java/org/codehaus/groovy/classgen/asm/sc/StaticTypesCallSiteWriter.java
index 164b598..99226c3 100644
--- a/src/main/java/org/codehaus/groovy/classgen/asm/sc/StaticTypesCallSiteWriter.java
+++ b/src/main/java/org/codehaus/groovy/classgen/asm/sc/StaticTypesCallSiteWriter.java
@@ -91,8 +91,6 @@ import static org.codehaus.groovy.transform.stc.StaticTypeCheckingSupport.isClas
  * A call site writer which replaces call site caching with static calls. This means that the generated code
  * looks more like Java code than dynamic Groovy code. Best effort is made to use JVM instructions instead of
  * calls to helper methods.
- *
- * @author Cedric Champeau
  */
 public class StaticTypesCallSiteWriter extends CallSiteWriter implements Opcodes {
 
diff --git a/src/main/java/org/codehaus/groovy/classgen/asm/sc/StaticTypesClosureWriter.java b/src/main/java/org/codehaus/groovy/classgen/asm/sc/StaticTypesClosureWriter.java
index fc26486..e65f03d 100644
--- a/src/main/java/org/codehaus/groovy/classgen/asm/sc/StaticTypesClosureWriter.java
+++ b/src/main/java/org/codehaus/groovy/classgen/asm/sc/StaticTypesClosureWriter.java
@@ -41,8 +41,6 @@ import java.util.List;
 
 /**
  * Writer responsible for generating closure classes in statically compiled mode.
- *
- * @author Cedric Champeau
  */
 public class StaticTypesClosureWriter extends ClosureWriter {
     public StaticTypesClosureWriter(WriterController wc) {
diff --git a/src/main/java/org/codehaus/groovy/classgen/asm/sc/StaticTypesStatementWriter.java b/src/main/java/org/codehaus/groovy/classgen/asm/sc/StaticTypesStatementWriter.java
index cabc3c4..f049eb8 100644
--- a/src/main/java/org/codehaus/groovy/classgen/asm/sc/StaticTypesStatementWriter.java
+++ b/src/main/java/org/codehaus/groovy/classgen/asm/sc/StaticTypesStatementWriter.java
@@ -60,7 +60,6 @@ import static org.objectweb.asm.Opcodes.SALOAD;
 
 /**
  * A class to write out the optimized statements
- * @author <a href="mailto:blackdrag@gmx.org">Jochen "blackdrag" Theodorou</a>
  */
 public class StaticTypesStatementWriter extends StatementWriter {
 
diff --git a/src/main/java/org/codehaus/groovy/classgen/asm/sc/StaticTypesTypeChooser.java b/src/main/java/org/codehaus/groovy/classgen/asm/sc/StaticTypesTypeChooser.java
index a3e4551..fbcaa94 100644
--- a/src/main/java/org/codehaus/groovy/classgen/asm/sc/StaticTypesTypeChooser.java
+++ b/src/main/java/org/codehaus/groovy/classgen/asm/sc/StaticTypesTypeChooser.java
@@ -30,8 +30,6 @@ import org.codehaus.groovy.transform.stc.StaticTypesMarker;
 /**
  * A {@link org.codehaus.groovy.classgen.asm.TypeChooser} which reads type information from node metadata
  * generated by the {@link groovy.transform.CompileStatic} annotation.
- *
- * @author Cedric Champeau
  */
 public class StaticTypesTypeChooser extends StatementMetaTypeChooser {
     @Override
diff --git a/src/main/java/org/codehaus/groovy/classgen/asm/sc/StaticTypesUnaryExpressionHelper.java b/src/main/java/org/codehaus/groovy/classgen/asm/sc/StaticTypesUnaryExpressionHelper.java
index 73adb10..c02e0e2 100644
--- a/src/main/java/org/codehaus/groovy/classgen/asm/sc/StaticTypesUnaryExpressionHelper.java
+++ b/src/main/java/org/codehaus/groovy/classgen/asm/sc/StaticTypesUnaryExpressionHelper.java
@@ -46,8 +46,6 @@ import static org.codehaus.groovy.ast.ClassHelper.short_TYPE;
 /**
  * An unary expression helper which generates optimized bytecode depending on
  * the current type on top of the operand stack.
- *
- * @author Cedric Champeau
  */
 public class StaticTypesUnaryExpressionHelper extends UnaryExpressionHelper implements Opcodes {
     private static final UnaryMinusExpression EMPTY_UNARY_MINUS = new UnaryMinusExpression(EmptyExpression.INSTANCE);
diff --git a/src/main/java/org/codehaus/groovy/classgen/asm/sc/StaticTypesWriterController.java b/src/main/java/org/codehaus/groovy/classgen/asm/sc/StaticTypesWriterController.java
index 47ef3d4..a160bb5 100644
--- a/src/main/java/org/codehaus/groovy/classgen/asm/sc/StaticTypesWriterController.java
+++ b/src/main/java/org/codehaus/groovy/classgen/asm/sc/StaticTypesWriterController.java
@@ -47,8 +47,6 @@ import org.objectweb.asm.ClassVisitor;
  * An alternative {@link org.codehaus.groovy.classgen.asm.WriterController} which handles static types and method
  * dispatch. In case of a "mixed mode" where only some methods are annotated with {@link groovy.transform.TypeChecked}
  * then this writer will delegate to the classic writer controller.
- *
- * @author Cedric Champeau
  */
 public class StaticTypesWriterController extends DelegatingController {
 
diff --git a/src/main/java/org/codehaus/groovy/classgen/asm/sc/StaticTypesWriterControllerFactoryImpl.java b/src/main/java/org/codehaus/groovy/classgen/asm/sc/StaticTypesWriterControllerFactoryImpl.java
index c68f635..41f2dea 100644
--- a/src/main/java/org/codehaus/groovy/classgen/asm/sc/StaticTypesWriterControllerFactoryImpl.java
+++ b/src/main/java/org/codehaus/groovy/classgen/asm/sc/StaticTypesWriterControllerFactoryImpl.java
@@ -21,9 +21,6 @@ package org.codehaus.groovy.classgen.asm.sc;
 import org.codehaus.groovy.classgen.asm.WriterController;
 import org.codehaus.groovy.classgen.asm.WriterControllerFactory;
 
-/**
- * @author <a href="mailto:blackdrag@gmx.org">Jochen "blackdrag" Theodorou</a>
- */
 public class StaticTypesWriterControllerFactoryImpl implements WriterControllerFactory {
 
     public WriterController makeController(WriterController normalController) {
diff --git a/src/main/java/org/codehaus/groovy/control/ASTTransformationsContext.java b/src/main/java/org/codehaus/groovy/control/ASTTransformationsContext.java
index ae95275..727dd25 100644
--- a/src/main/java/org/codehaus/groovy/control/ASTTransformationsContext.java
+++ b/src/main/java/org/codehaus/groovy/control/ASTTransformationsContext.java
@@ -25,8 +25,6 @@ import java.util.Set;
 
 /**
  * Stores state information about global AST transformations applied to a compilation unit.
- *
- * @author Cedric Champeau
 */
 public class ASTTransformationsContext {
     protected final GroovyClassLoader transformLoader;  // Classloader for global and local transforms
diff --git a/src/main/java/org/codehaus/groovy/control/ClassNodeResolver.java b/src/main/java/org/codehaus/groovy/control/ClassNodeResolver.java
index 844d7c6..05c938b 100644
--- a/src/main/java/org/codehaus/groovy/control/ClassNodeResolver.java
+++ b/src/main/java/org/codehaus/groovy/control/ClassNodeResolver.java
@@ -53,14 +53,11 @@ import java.util.Map;
  * supposed to go into the method 
  * {@link ClassNodeResolver#findClassNode(String, CompilationUnit)} while the 
  * entry method is {@link ClassNodeResolver#resolveName(String, CompilationUnit)}
- * 
- * @author <a href="mailto:blackdrag@gmx.org">Jochen "blackdrag" Theodorou</a>
  */
 public class ClassNodeResolver {
 
     /**
      * Helper class to return either a SourceUnit or ClassNode.
-     * @author <a href="mailto:blackdrag@gmx.org">Jochen "blackdrag" Theodorou</a>
      */
     public static class LookupResult {
         private final SourceUnit su;
diff --git a/src/main/java/org/codehaus/groovy/control/CompilationFailedException.java b/src/main/java/org/codehaus/groovy/control/CompilationFailedException.java
index 2930b8c..d57f631 100644
--- a/src/main/java/org/codehaus/groovy/control/CompilationFailedException.java
+++ b/src/main/java/org/codehaus/groovy/control/CompilationFailedException.java
@@ -23,10 +23,7 @@ import groovy.lang.GroovyRuntimeException;
 
 /**
  * Thrown when compilation fails from source errors.
- *
- * @author <a href="mailto:cpoirier@dreaming.org">Chris Poirier</a>
  */
-
 public class CompilationFailedException extends GroovyRuntimeException {
 
     private static final long serialVersionUID = 4500269747315896966L;
diff --git a/src/main/java/org/codehaus/groovy/control/CompilationUnit.java b/src/main/java/org/codehaus/groovy/control/CompilationUnit.java
index 5df90d9..26e58bf 100644
--- a/src/main/java/org/codehaus/groovy/control/CompilationUnit.java
+++ b/src/main/java/org/codehaus/groovy/control/CompilationUnit.java
@@ -73,10 +73,6 @@ import java.util.Map;
  * <p>
  * You can also add PhaseOperations to this compilation using the addPhaseOperation method.
  * This is commonly used when you want to wire a new AST Transformation into the compilation.
- *
- * @author <a href="mailto:cpoirier@dreaming.org">Chris Poirier</a>
- * @author <a href="mailto:blackdrag@gmx.org">Jochen Theodorou</a>
- * @author <a href="mailto:roshandawrani@codehaus.org">Roshan Dawrani</a>
  */
 
 public class CompilationUnit extends ProcessingUnit {
diff --git a/src/main/java/org/codehaus/groovy/control/CompilePhase.java b/src/main/java/org/codehaus/groovy/control/CompilePhase.java
index 7b25fed..edfa08e 100644
--- a/src/main/java/org/codehaus/groovy/control/CompilePhase.java
+++ b/src/main/java/org/codehaus/groovy/control/CompilePhase.java
@@ -1,118 +1,116 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-package org.codehaus.groovy.control;
-
-/**
-* The phases of the GroovyCompiler. This is an enum facade on top of the 
-* Phases object. In general, prefer using this object over Phases. 
-*
-* @author Hamlet D'Arcy
-*/ 
-public enum CompilePhase {
-
-    /**
-    * source files are opened and environment configured
-    */ 
-    INITIALIZATION(Phases.INITIALIZATION),
-    
-    /**
-    * the grammar is used to to produce tree of tokens representing the source code
-    */ 
-    PARSING(Phases.PARSING),
-    
-    /**
-    * An abstract syntax tree (AST) is created from token trees
-    */ 
-    CONVERSION(Phases.CONVERSION),
-    
-    /**
-    * Performs consistency and validity checks that the grammar can't check for, and resolves classes
-    */ 
-    SEMANTIC_ANALYSIS(Phases.SEMANTIC_ANALYSIS),
-    
-    /**
-    * Complete building the AST
-    */ 
-    CANONICALIZATION(Phases.CANONICALIZATION),
-    
-    /**
-    * instruction set is chosen, for example java5 or pre java5
-    */ 
-    INSTRUCTION_SELECTION(Phases.INSTRUCTION_SELECTION),
-    
-    /**
-    * creates the binary output in memory
-    */ 
-    CLASS_GENERATION(Phases.CLASS_GENERATION),
-    
-    /**
-    * write the binary output to the file system
-    */ 
-    OUTPUT(Phases.OUTPUT),
-    
-    /**
-    * Perform any last cleanup
-    */ 
-    FINALIZATION(Phases.FINALIZATION),
-    ;
-
-    /**
-    * The phases as an array, with a null entry. 
-    */ 
-    public static CompilePhase[] phases = {
-        null,
-        INITIALIZATION,
-        PARSING,
-        CONVERSION,
-        SEMANTIC_ANALYSIS,
-        CANONICALIZATION,
-        INSTRUCTION_SELECTION,
-        CLASS_GENERATION,
-        OUTPUT,
-        FINALIZATION,
-    };
-
-    int phaseNumber;
-    CompilePhase(int phaseNumber) {
-        this.phaseNumber = phaseNumber;
-    }
-
-    /**
-    * Returns the underlieng integer Phase number. 
-    */ 
-    public int getPhaseNumber() {
-        return phaseNumber;
-    }
-
-    /**
-     * Returns the CompilePhase for the given integer phase number.
-     * @param phaseNumber
-     *      the phase number
-     * @return
-     *      the CompilePhase or null if not found
-     */
-    public static CompilePhase fromPhaseNumber(int phaseNumber) {
-        for (CompilePhase phase : values()) {
-            if (phase.phaseNumber == phaseNumber) {
-                return phase;
-            }
-        }
-        return null;
-    }
-}
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.codehaus.groovy.control;
+
+/**
+* The phases of the GroovyCompiler. This is an enum facade on top of the 
+* Phases object. In general, prefer using this object over Phases. 
+*/
+public enum CompilePhase {
+
+    /**
+    * source files are opened and environment configured
+    */ 
+    INITIALIZATION(Phases.INITIALIZATION),
+    
+    /**
+    * the grammar is used to to produce tree of tokens representing the source code
+    */ 
+    PARSING(Phases.PARSING),
+    
+    /**
+    * An abstract syntax tree (AST) is created from token trees
+    */ 
+    CONVERSION(Phases.CONVERSION),
+    
+    /**
+    * Performs consistency and validity checks that the grammar can't check for, and resolves classes
+    */ 
+    SEMANTIC_ANALYSIS(Phases.SEMANTIC_ANALYSIS),
+    
+    /**
+    * Complete building the AST
+    */ 
+    CANONICALIZATION(Phases.CANONICALIZATION),
+    
+    /**
+    * instruction set is chosen, for example java5 or pre java5
+    */ 
+    INSTRUCTION_SELECTION(Phases.INSTRUCTION_SELECTION),
+    
+    /**
+    * creates the binary output in memory
+    */ 
+    CLASS_GENERATION(Phases.CLASS_GENERATION),
+    
+    /**
+    * write the binary output to the file system
+    */ 
+    OUTPUT(Phases.OUTPUT),
+    
+    /**
+    * Perform any last cleanup
+    */ 
+    FINALIZATION(Phases.FINALIZATION),
+    ;
+
+    /**
+    * The phases as an array, with a null entry. 
+    */ 
+    public static CompilePhase[] phases = {
+        null,
+        INITIALIZATION,
+        PARSING,
+        CONVERSION,
+        SEMANTIC_ANALYSIS,
+        CANONICALIZATION,
+        INSTRUCTION_SELECTION,
+        CLASS_GENERATION,
+        OUTPUT,
+        FINALIZATION,
+    };
+
+    int phaseNumber;
+    CompilePhase(int phaseNumber) {
+        this.phaseNumber = phaseNumber;
+    }
+
+    /**
+    * Returns the underlieng integer Phase number. 
+    */ 
+    public int getPhaseNumber() {
+        return phaseNumber;
+    }
+
+    /**
+     * Returns the CompilePhase for the given integer phase number.
+     * @param phaseNumber
+     *      the phase number
+     * @return
+     *      the CompilePhase or null if not found
+     */
+    public static CompilePhase fromPhaseNumber(int phaseNumber) {
+        for (CompilePhase phase : values()) {
+            if (phase.phaseNumber == phaseNumber) {
+                return phase;
+            }
+        }
+        return null;
+    }
+}
diff --git a/src/main/java/org/codehaus/groovy/control/HasCleanup.java b/src/main/java/org/codehaus/groovy/control/HasCleanup.java
index e7f2365..5daaea9 100644
--- a/src/main/java/org/codehaus/groovy/control/HasCleanup.java
+++ b/src/main/java/org/codehaus/groovy/control/HasCleanup.java
@@ -19,13 +19,9 @@
 package org.codehaus.groovy.control;
 
 /**
- *  An interface for things that need to be cleaned up after
- *  operations complete.
- *
- *  @author <a href="mailto:cpoirier@dreaming.org">Chris Poirier</a>
+ * An interface for things that need to be cleaned up after
+ * operations complete.
  */
-
-public interface HasCleanup 
-{
+public interface HasCleanup {
     void cleanup();
 }
diff --git a/src/main/java/org/codehaus/groovy/control/Janitor.java b/src/main/java/org/codehaus/groovy/control/Janitor.java
index 8d08ebd..862bc09 100644
--- a/src/main/java/org/codehaus/groovy/control/Janitor.java
+++ b/src/main/java/org/codehaus/groovy/control/Janitor.java
@@ -23,33 +23,28 @@ import java.util.Iterator;
 import java.util.Set;
 
 /**
- *  An agent that can be used to defer cleanup operations to 
- *  a later time.  Users much implement the HasCleanup interface.  
- *
- *  @author <a href="mailto:cpoirier@dreaming.org">Chris Poirier</a>
+ * An agent that can be used to defer cleanup operations to
+ * a later time.  Users much implement the HasCleanup interface.
  */
-
-public class Janitor implements HasCleanup
-{
+public class Janitor implements HasCleanup {
     private final Set pending = new HashSet();   // All objects pending cleanup
-    
-    public void register( HasCleanup object )
-    {
-        pending.add( object );
+
+    public void register(HasCleanup object) {
+        pending.add(object);
     }
-    
-    public void cleanup()
-    {
+
+    public void cleanup() {
         Iterator iterator = pending.iterator();
-        while( iterator.hasNext() )
-        {
-            HasCleanup object = (HasCleanup)iterator.next();
-            
-            try { object.cleanup(); } catch( Exception e ) {
+        while (iterator.hasNext()) {
+            HasCleanup object = (HasCleanup) iterator.next();
+
+            try {
+                object.cleanup();
+            } catch (Exception e) {
                 // Ignore
             }
         }
-        
+
         pending.clear();
     }
 }
diff --git a/src/main/java/org/codehaus/groovy/control/LabelVerifier.java b/src/main/java/org/codehaus/groovy/control/LabelVerifier.java
index 1aea0be..3c82c14 100644
--- a/src/main/java/org/codehaus/groovy/control/LabelVerifier.java
+++ b/src/main/java/org/codehaus/groovy/control/LabelVerifier.java
@@ -33,8 +33,6 @@ import java.util.List;
 
 /**
  * This class checks the handling of labels in the AST
- *
- * @author Jochen Theodorou
  */
 public class LabelVerifier extends ClassCodeVisitorSupport {
 
diff --git a/src/main/java/org/codehaus/groovy/control/Phases.java b/src/main/java/org/codehaus/groovy/control/Phases.java
index 47e421f..eecba8d 100644
--- a/src/main/java/org/codehaus/groovy/control/Phases.java
+++ b/src/main/java/org/codehaus/groovy/control/Phases.java
@@ -18,50 +18,41 @@
  */
 package org.codehaus.groovy.control;
 
-
-
-
 /**
- *  Compilation phase identifiers.  
- *
- *  @author <a href="mailto:cpoirier@dreaming.org">Chris Poirier</a>
+ * Compilation phase identifiers.
  */
-
-public class Phases
-{
-    public static final int INITIALIZATION        = 1;   // Opening of files and such
-    public static final int PARSING               = 2;   // Lexing, parsing, and AST building
-    public static final int CONVERSION            = 3;   // CST to AST conversion
-    public static final int SEMANTIC_ANALYSIS     = 4;   // AST semantic analysis and elucidation
-    public static final int CANONICALIZATION      = 5;   // AST completion
+public class Phases {
+    public static final int INITIALIZATION = 1;   // Opening of files and such
+    public static final int PARSING = 2;   // Lexing, parsing, and AST building
+    public static final int CONVERSION = 3;   // CST to AST conversion
+    public static final int SEMANTIC_ANALYSIS = 4;   // AST semantic analysis and elucidation
+    public static final int CANONICALIZATION = 5;   // AST completion
     public static final int INSTRUCTION_SELECTION = 6;   // Class generation, phase 1
-    public static final int CLASS_GENERATION      = 7;   // Class generation, phase 2
-    public static final int OUTPUT                = 8;   // Output of class to disk
-    public static final int FINALIZATION          = 9;   // Cleanup
-    public static final int ALL                   = 9;   // Synonym for full compilation
-    
+    public static final int CLASS_GENERATION = 7;   // Class generation, phase 2
+    public static final int OUTPUT = 8;   // Output of class to disk
+    public static final int FINALIZATION = 9;   // Cleanup
+    public static final int ALL = 9;   // Synonym for full compilation
+
     public static final String[] descriptions = {
-          "startup"
-        , "initialization"
-        , "parsing"
-        , "conversion"
-        , "semantic analysis"
-        , "canonicalization"
-        , "instruction selection"
-        , "class generation"
-        , "output"
-        , "cleanup"
+            "startup"
+            , "initialization"
+            , "parsing"
+            , "conversion"
+            , "semantic analysis"
+            , "canonicalization"
+            , "instruction selection"
+            , "class generation"
+            , "output"
+            , "cleanup"
     };
-    
-    
-    
-   /**
-    *  Returns a description of the specified phase.
-    */
-    
-    public static String getDescription( int phase )
-    {
+
+
+    /**
+     * Returns a description of the specified phase.
+     */
+
+    public static String getDescription(int phase) {
         return descriptions[phase];
     }
-    
+
 }
diff --git a/src/main/java/org/codehaus/groovy/control/ProcessingUnit.java b/src/main/java/org/codehaus/groovy/control/ProcessingUnit.java
index d95822d..66715a4 100644
--- a/src/main/java/org/codehaus/groovy/control/ProcessingUnit.java
+++ b/src/main/java/org/codehaus/groovy/control/ProcessingUnit.java
@@ -26,10 +26,7 @@ import java.security.PrivilegedAction;
 /**
  * A base class for data structures that can collect messages and errors
  * during processing.
- *
- * @author <a href="mailto:cpoirier@dreaming.org">Chris Poirier</a>
  */
-
 public abstract class ProcessingUnit {
 
     /**
@@ -45,12 +42,12 @@ public abstract class ProcessingUnit {
      * Configuration and other settings that control processing
      */
     protected CompilerConfiguration configuration;
-  
+
     /**
      * The ClassLoader to use during processing
      */
     protected GroovyClassLoader classLoader;
-    
+
     /**
      * a helper to share errors and report them
      */
@@ -67,7 +64,7 @@ public abstract class ProcessingUnit {
         this.configuration = configuration;
         this.setClassLoader(classLoader);
         configure((configuration == null ? new CompilerConfiguration() : configuration));
-        if (er==null) er = new ErrorCollector(getConfiguration());
+        if (er == null) er = new ErrorCollector(getConfiguration());
         this.errorCollector = er;
     }
 
@@ -134,13 +131,13 @@ public abstract class ProcessingUnit {
 
     /**
      * Errors found during the compilation should be reported through the ErrorCollector.
-     * @return
-     *      the ErrorCollector for this ProcessingUnit
+     *
+     * @return the ErrorCollector for this ProcessingUnit
      */
     public ErrorCollector getErrorCollector() {
         return errorCollector;
     }
-    
+
     //---------------------------------------------------------------------------
     // PROCESSING
 
@@ -150,7 +147,7 @@ public abstract class ProcessingUnit {
      * errors.
      */
 
-    public void completePhase() throws CompilationFailedException {       
+    public void completePhase() throws CompilationFailedException {
         errorCollector.failIfErrors();
         phaseComplete = true;
     }
diff --git a/src/main/java/org/codehaus/groovy/control/SourceUnit.java b/src/main/java/org/codehaus/groovy/control/SourceUnit.java
index b61c6e4..66c1c73 100644
--- a/src/main/java/org/codehaus/groovy/control/SourceUnit.java
+++ b/src/main/java/org/codehaus/groovy/control/SourceUnit.java
@@ -47,11 +47,7 @@ import java.security.PrivilegedAction;
 /**
  * Provides an anchor for a single source unit (usually a script file)
  * as it passes through the compiler system.
- *
- * @author <a href="mailto:cpoirier@dreaming.org">Chris Poirier</a>
- * @author <a href="mailto:b55r@sina.com">Bing Ran</a>
  */
-
 public class SourceUnit extends ProcessingUnit {
 
     /**
@@ -251,8 +247,7 @@ public class SourceUnit extends ProcessingUnit {
         try {
             this.ast = parserPlugin.buildAST(this, this.classLoader, this.cst);
             this.ast.setDescription(this.name);
-        }
-        catch (SyntaxException e) {
+        } catch (SyntaxException e) {
             if (this.ast == null) {
                 // Create a dummy ModuleNode to represent a failed parse - in case a later phase attempts to use the ast
                 this.ast = new ModuleNode(this);
@@ -309,10 +304,9 @@ public class SourceUnit extends ProcessingUnit {
      * This method adds an exception to the error collector. The Exception most likely has no line number attached to it.
      * For this reason you should use this method sparingly. Prefer using addError for syntax errors or add an error
      * to the {@link ErrorCollector} directly by retrieving it with getErrorCollector().
-     * @param e
-     *      the exception that occurred
-     * @throws CompilationFailedException
-     *      on error
+     *
+     * @param e the exception that occurred
+     * @throws CompilationFailedException on error
      */
     public void addException(Exception e) throws CompilationFailedException {
         getErrorCollector().addException(e, this);
@@ -323,10 +317,9 @@ public class SourceUnit extends ProcessingUnit {
      * number of the error.  This method should be reserved for real errors in the syntax of the SourceUnit. If
      * your error is not in syntax, and is a semantic error, or more general error, then use addException or use
      * the error collector directly by retrieving it with getErrorCollector().
-     * @param se
-     *      the exception, which should have line and column information
-     * @throws CompilationFailedException
-     *      on error
+     *
+     * @param se the exception, which should have line and column information
+     * @throws CompilationFailedException on error
      */
     public void addError(SyntaxException se) throws CompilationFailedException {
         getErrorCollector().addError(se, this);
diff --git a/src/main/java/org/codehaus/groovy/control/customizers/CompilationCustomizer.java b/src/main/java/org/codehaus/groovy/control/customizers/CompilationCustomizer.java
index 8f9e81c..9d0b565 100644
--- a/src/main/java/org/codehaus/groovy/control/customizers/CompilationCustomizer.java
+++ b/src/main/java/org/codehaus/groovy/control/customizers/CompilationCustomizer.java
@@ -27,10 +27,7 @@ import org.codehaus.groovy.control.CompilePhase;
  * call the {@link org.codehaus.groovy.control.CompilerConfiguration#addCompilationCustomizers(CompilationCustomizer...)}
  * method.
  *
- * @author Cedric Champeau
- *
  * @since 1.8.0
- *
  */
 public abstract class CompilationCustomizer extends CompilationUnit.PrimaryClassNodeOperation {
     private final CompilePhase phase;
diff --git a/src/main/java/org/codehaus/groovy/control/customizers/DelegatingCustomizer.java b/src/main/java/org/codehaus/groovy/control/customizers/DelegatingCustomizer.java
index 0f6af6a..68e394a 100644
--- a/src/main/java/org/codehaus/groovy/control/customizers/DelegatingCustomizer.java
+++ b/src/main/java/org/codehaus/groovy/control/customizers/DelegatingCustomizer.java
@@ -27,7 +27,6 @@ import org.codehaus.groovy.control.SourceUnit;
  * Base class for compilation customizers which delegate to another customizer. The phase this
  * customizer runs at is retrieved from the phase of the delegate.
  *
- * @author Cedric Champeau
  * @since 2.1.0
  */
 public abstract class DelegatingCustomizer extends CompilationCustomizer {
diff --git a/src/main/java/org/codehaus/groovy/control/customizers/ImportCustomizer.java b/src/main/java/org/codehaus/groovy/control/customizers/ImportCustomizer.java
index 780b554..ebd16f5 100644
--- a/src/main/java/org/codehaus/groovy/control/customizers/ImportCustomizer.java
+++ b/src/main/java/org/codehaus/groovy/control/customizers/ImportCustomizer.java
@@ -38,10 +38,7 @@ import java.util.List;
  *     <li>static star imports thanks to {@link #addStaticStar(String)} or {@link #addStaticStars(String...)}</li>
  * </ul>
  *
- * @author Cedric Champeau
- *
  * @since 1.8.0
- *
  */
 public class ImportCustomizer extends CompilationCustomizer {
 
diff --git a/src/main/java/org/codehaus/groovy/control/customizers/SecureASTCustomizer.java b/src/main/java/org/codehaus/groovy/control/customizers/SecureASTCustomizer.java
index 1bb302b..8580144 100644
--- a/src/main/java/org/codehaus/groovy/control/customizers/SecureASTCustomizer.java
+++ b/src/main/java/org/codehaus/groovy/control/customizers/SecureASTCustomizer.java
@@ -175,9 +175,6 @@ import java.util.Map;
  *             GroovyClassLoader loader = new GroovyClassLoader(this.class.classLoader, config)
  *  </pre>
  *  
- * @author Cedric Champeau
- * @author Guillaume Laforge
- * @author Hamlet D'Arcy
  * @since 1.8.0
  */
 public class SecureASTCustomizer extends CompilationCustomizer {
diff --git a/src/main/java/org/codehaus/groovy/control/customizers/SourceAwareCustomizer.java b/src/main/java/org/codehaus/groovy/control/customizers/SourceAwareCustomizer.java
index 3bb5183..9858a42 100644
--- a/src/main/java/org/codehaus/groovy/control/customizers/SourceAwareCustomizer.java
+++ b/src/main/java/org/codehaus/groovy/control/customizers/SourceAwareCustomizer.java
@@ -38,7 +38,6 @@ import org.codehaus.groovy.control.io.ReaderSource;
  * <pre><code>return "foo".equals(extension)</code></pre>
  *
  * @since 2.1.0
- * @author Cedric Champeau
  */
 public class SourceAwareCustomizer extends DelegatingCustomizer {
 
diff --git a/src/main/java/org/codehaus/groovy/control/customizers/builder/CustomizersFactory.java b/src/main/java/org/codehaus/groovy/control/customizers/builder/CustomizersFactory.java
index 37bcee8..b013cee 100644
--- a/src/main/java/org/codehaus/groovy/control/customizers/builder/CustomizersFactory.java
+++ b/src/main/java/org/codehaus/groovy/control/customizers/builder/CustomizersFactory.java
@@ -30,7 +30,6 @@ import java.util.Map;
 /**
  * This factory generates an array of compilation customizers.
  *
- * @author Cedric Champeau
  * @since 2.1.0
  */
 public class CustomizersFactory extends AbstractFactory implements PostCompletionFactory {
diff --git a/src/main/java/org/codehaus/groovy/control/customizers/builder/ImportCustomizerFactory.java b/src/main/java/org/codehaus/groovy/control/customizers/builder/ImportCustomizerFactory.java
index e9e8b7e..a42570d 100644
--- a/src/main/java/org/codehaus/groovy/control/customizers/builder/ImportCustomizerFactory.java
+++ b/src/main/java/org/codehaus/groovy/control/customizers/builder/ImportCustomizerFactory.java
@@ -44,7 +44,6 @@ import java.util.Map;
  * alias 'AL', 'java.util.concurrent.atomic.AtomicLong'
  *}</code></pre>
  *
- * @author Cedric Champeau
  * @since 2.1.0
  */
 public class ImportCustomizerFactory extends AbstractFactory {
diff --git a/src/main/java/org/codehaus/groovy/control/customizers/builder/InlinedASTCustomizerFactory.java b/src/main/java/org/codehaus/groovy/control/customizers/builder/InlinedASTCustomizerFactory.java
index c7b599c..66b4f41 100644
--- a/src/main/java/org/codehaus/groovy/control/customizers/builder/InlinedASTCustomizerFactory.java
+++ b/src/main/java/org/codehaus/groovy/control/customizers/builder/InlinedASTCustomizerFactory.java
@@ -39,7 +39,6 @@ import java.util.Map;
  * }
  * </pre>
  *
- * @author Cedric Champeau
  * @since 2.1.0
  */
 @SuppressWarnings("unchecked")
diff --git a/src/main/java/org/codehaus/groovy/control/customizers/builder/PostCompletionFactory.java b/src/main/java/org/codehaus/groovy/control/customizers/builder/PostCompletionFactory.java
index 8855dbf..d18564c 100644
--- a/src/main/java/org/codehaus/groovy/control/customizers/builder/PostCompletionFactory.java
+++ b/src/main/java/org/codehaus/groovy/control/customizers/builder/PostCompletionFactory.java
@@ -24,7 +24,6 @@ import groovy.util.FactoryBuilderSupport;
  * A helper interface for factories which require post processing of generated nodes.
  *
  * @since 2.1.0
- * @author Cedric Champeau
  */
 public interface PostCompletionFactory {
     Object postCompleteNode(FactoryBuilderSupport factory, Object parent, Object node);
diff --git a/src/main/java/org/codehaus/groovy/control/customizers/builder/SecureASTCustomizerFactory.java b/src/main/java/org/codehaus/groovy/control/customizers/builder/SecureASTCustomizerFactory.java
index 3c81dee..4d2fd0c 100644
--- a/src/main/java/org/codehaus/groovy/control/customizers/builder/SecureASTCustomizerFactory.java
+++ b/src/main/java/org/codehaus/groovy/control/customizers/builder/SecureASTCustomizerFactory.java
@@ -30,7 +30,6 @@ import java.util.Map;
  * to a {@link SecureASTCustomizer} instance.
  *
  * @since 2.1.0
- * @author Cedric Champeau
  */
 public class SecureASTCustomizerFactory extends AbstractFactory {
     @Override
diff --git a/src/main/java/org/codehaus/groovy/control/customizers/builder/SourceAwareCustomizerFactory.java b/src/main/java/org/codehaus/groovy/control/customizers/builder/SourceAwareCustomizerFactory.java
index 1edf636..f9004fe 100644
--- a/src/main/java/org/codehaus/groovy/control/customizers/builder/SourceAwareCustomizerFactory.java
+++ b/src/main/java/org/codehaus/groovy/control/customizers/builder/SourceAwareCustomizerFactory.java
@@ -72,8 +72,6 @@ import java.util.Map;
  *         ast(CompileStatic)
  *     }
  * </code></pre>
- *
- * @author Cedric Champeau
  */
 public class SourceAwareCustomizerFactory extends AbstractFactory implements PostCompletionFactory {
 
diff --git a/src/main/java/org/codehaus/groovy/control/io/AbstractReaderSource.java b/src/main/java/org/codehaus/groovy/control/io/AbstractReaderSource.java
index 1c1084c..c3a9d59 100644
--- a/src/main/java/org/codehaus/groovy/control/io/AbstractReaderSource.java
+++ b/src/main/java/org/codehaus/groovy/control/io/AbstractReaderSource.java
@@ -27,10 +27,7 @@ import java.io.IOException;
 /**
  * For ReaderSources that can choose a parent class, a base that
  * provides common functionality.
- *
- * @author <a href="mailto:cpoirier@dreaming.org">Chris Poirier</a>
  */
-
 public abstract class AbstractReaderSource implements ReaderSource {
     protected CompilerConfiguration configuration;   // Configuration data
 
diff --git a/src/main/java/org/codehaus/groovy/control/io/FileReaderSource.java b/src/main/java/org/codehaus/groovy/control/io/FileReaderSource.java
index 6171f7a..07700d3 100644
--- a/src/main/java/org/codehaus/groovy/control/io/FileReaderSource.java
+++ b/src/main/java/org/codehaus/groovy/control/io/FileReaderSource.java
@@ -32,8 +32,6 @@ import java.nio.charset.Charset;
 
 /**
  *  A ReaderSource for source files.
- *
- *  @author <a href="mailto:cpoirier@dreaming.org">Chris Poirier</a>
  */
 public class FileReaderSource extends AbstractReaderSource {
     private final File file;  // The File from which we produce Readers.
diff --git a/src/main/java/org/codehaus/groovy/control/io/InputStreamReaderSource.java b/src/main/java/org/codehaus/groovy/control/io/InputStreamReaderSource.java
index d018698..3674012 100644
--- a/src/main/java/org/codehaus/groovy/control/io/InputStreamReaderSource.java
+++ b/src/main/java/org/codehaus/groovy/control/io/InputStreamReaderSource.java
@@ -28,8 +28,6 @@ import java.net.URI;
 
 /**
  * A ReaderSource for source strings.
- *
- * @author <a href="mailto:cpoirier@dreaming.org">Chris Poirier</a>
  */
 public class InputStreamReaderSource extends AbstractReaderSource {
     private InputStream stream;  // The InputStream from which we produce a Reader.
diff --git a/src/main/java/org/codehaus/groovy/control/io/NullWriter.java b/src/main/java/org/codehaus/groovy/control/io/NullWriter.java
index c783249..a50caed 100644
--- a/src/main/java/org/codehaus/groovy/control/io/NullWriter.java
+++ b/src/main/java/org/codehaus/groovy/control/io/NullWriter.java
@@ -22,8 +22,6 @@ import java.io.Writer;
 
 /**
  *  An Writer than eats its input.
- *
- *  @author <a href="mailto:cpoirier@dreaming.org">Chris Poirier</a>
  */
 public class NullWriter extends Writer {
     public static final NullWriter DEFAULT = new NullWriter();
diff --git a/src/main/java/org/codehaus/groovy/control/io/ReaderSource.java b/src/main/java/org/codehaus/groovy/control/io/ReaderSource.java
index 76ddd3c..9cf2d2a 100644
--- a/src/main/java/org/codehaus/groovy/control/io/ReaderSource.java
+++ b/src/main/java/org/codehaus/groovy/control/io/ReaderSource.java
@@ -28,8 +28,6 @@ import java.net.URI;
 /**
  *  An interface for things that can supply (and potentially resupply) a Reader
  *  on a source stream.
- *
- *  @author <a href="mailto:cpoirier@dreaming.org">Chris Poirier</a>
  */
 public interface ReaderSource extends HasCleanup {
    /**
diff --git a/src/main/java/org/codehaus/groovy/control/io/StringReaderSource.java b/src/main/java/org/codehaus/groovy/control/io/StringReaderSource.java
index 5e83de0..2f01140 100644
--- a/src/main/java/org/codehaus/groovy/control/io/StringReaderSource.java
+++ b/src/main/java/org/codehaus/groovy/control/io/StringReaderSource.java
@@ -28,10 +28,7 @@ import java.net.URISyntaxException;
 
 /**
  *  A ReaderSource for source strings.
- *
- *  @author <a href="mailto:cpoirier@dreaming.org">Chris Poirier</a>
  */
-
 public class StringReaderSource extends AbstractReaderSource {
     private final String string;  // The String from which we produce Readers.
 
diff --git a/src/main/java/org/codehaus/groovy/control/io/URLReaderSource.java b/src/main/java/org/codehaus/groovy/control/io/URLReaderSource.java
index 2af1a91..3644dd2 100644
--- a/src/main/java/org/codehaus/groovy/control/io/URLReaderSource.java
+++ b/src/main/java/org/codehaus/groovy/control/io/URLReaderSource.java
@@ -31,8 +31,6 @@ import java.net.URL;
 
 /**
  *  A ReaderSource for source files hosted at a URL.
- *
- *  @author <a href="mailto:cpoirier@dreaming.org">Chris Poirier</a>
  */
 public class URLReaderSource extends AbstractReaderSource {
     private final URL url;  // The URL from which we produce Readers.
diff --git a/src/main/java/org/codehaus/groovy/control/messages/ExceptionMessage.java b/src/main/java/org/codehaus/groovy/control/messages/ExceptionMessage.java
index 363b9f5..57c92fb 100644
--- a/src/main/java/org/codehaus/groovy/control/messages/ExceptionMessage.java
+++ b/src/main/java/org/codehaus/groovy/control/messages/ExceptionMessage.java
@@ -23,65 +23,50 @@ import org.codehaus.groovy.control.ProcessingUnit;
 
 import java.io.PrintWriter;
 
-
-
 /**
- *  A class for error messages produced by the parser system.
- *
- *  @author <a href="mailto:cpoirier@dreaming.org">Chris Poirier</a>
+ * A class for error messages produced by the parser system.
  */
-
-public class ExceptionMessage extends Message
-{
+public class ExceptionMessage extends Message {
     protected boolean verbose = true;
 
     private Exception cause = null;   // The exception source of the message, if any
     ProcessingUnit owner = null;
 
-    public ExceptionMessage( Exception cause, boolean v, ProcessingUnit owner )
-    {
+    public ExceptionMessage(Exception cause, boolean v, ProcessingUnit owner) {
         this.verbose = v;
         this.cause = cause;
         this.owner = owner;
     }
-    
-    
-   
-   /**
-    *  Returns the underlying Exception.
-    */
-
-    public Exception getCause()
-    {
+
+    /**
+     * Returns the underlying Exception.
+     */
+
+    public Exception getCause() {
         return this.cause;
     }
-    
 
 
-   /**
-    *  Writes out a nicely formatted summary of the exception. 
-    */
-    
-    public void write( PrintWriter output, Janitor janitor )
-    {
-        String description = "General error during " + owner.getPhaseDescription() + ": "; 
-        
+    /**
+     * Writes out a nicely formatted summary of the exception.
+     */
+
+    public void write(PrintWriter output, Janitor janitor) {
+        String description = "General error during " + owner.getPhaseDescription() + ": ";
+
         String message = cause.getMessage();
-        if( message != null )
-        {
-            output.println( description + message );
-        }
-        else
-        {
-            output.println( description + cause );
+        if (message != null) {
+            output.println(description + message);
+        } else {
+            output.println(description + cause);
         }
         output.println();
 
         //if (verbose) {
-            cause.printStackTrace(output);
+        cause.printStackTrace(output);
         //}
     }
-    
+
 }
 
 
diff --git a/src/main/java/org/codehaus/groovy/control/messages/LocatedMessage.java b/src/main/java/org/codehaus/groovy/control/messages/LocatedMessage.java
index d3368ac..98c0c5f 100644
--- a/src/main/java/org/codehaus/groovy/control/messages/LocatedMessage.java
+++ b/src/main/java/org/codehaus/groovy/control/messages/LocatedMessage.java
@@ -25,54 +25,45 @@ import org.codehaus.groovy.syntax.CSTNode;
 import java.io.PrintWriter;
 
 
-
 /**
- *  A base class for compilation messages.
- *
- *  @author <a href="mailto:cpoirier@dreaming.org">Chris Poirier</a>
+ * A base class for compilation messages.
  */
-
-public class LocatedMessage extends SimpleMessage
-{
+public class LocatedMessage extends SimpleMessage {
     protected CSTNode context;  // The CSTNode that indicates the location to which the message applies
-    
-    public LocatedMessage( String message, CSTNode context, SourceUnit source ) 
-    {
-        super( message, source );
+
+    public LocatedMessage(String message, CSTNode context, SourceUnit source) {
+        super(message, source);
         this.context = context;
     }
-    
-    
-    public LocatedMessage( String message, Object data, CSTNode context, SourceUnit source ) 
-    {
-        super( message, data, source );
+
+
+    public LocatedMessage(String message, Object data, CSTNode context, SourceUnit source) {
+        super(message, data, source);
         this.context = context;
     }
-    
-    
-    public void write( PrintWriter writer, Janitor janitor )
-    {
+
+
+    public void write(PrintWriter writer, Janitor janitor) {
         if (owner instanceof SourceUnit) {
             SourceUnit source = (SourceUnit) owner;
 
-            String name   = source.getName();
-            int    line   = context.getStartLine();
-            int    column = context.getStartColumn();
-            String sample = source.getSample( line, column, janitor );
+            String name = source.getName();
+            int line = context.getStartLine();
+            int column = context.getStartColumn();
+            String sample = source.getSample(line, column, janitor);
 
-            if( sample != null )
-            {
-                writer.println( source.getSample(line, column, janitor) );
+            if (sample != null) {
+                writer.println(source.getSample(line, column, janitor));
             }
 
-            writer.println( name + ": " + line + ": " + this.message );
+            writer.println(name + ": " + line + ": " + this.message);
             writer.println("");
         } else {
-            writer.println( "<No Relevant Source>: " + this.message );
+            writer.println("<No Relevant Source>: " + this.message);
             writer.println("");
         }
     }
-    
+
 }
 
 
diff --git a/src/main/java/org/codehaus/groovy/control/messages/Message.java b/src/main/java/org/codehaus/groovy/control/messages/Message.java
index 0c2feab..2392607 100644
--- a/src/main/java/org/codehaus/groovy/control/messages/Message.java
+++ b/src/main/java/org/codehaus/groovy/control/messages/Message.java
@@ -25,75 +25,48 @@ import org.codehaus.groovy.syntax.SyntaxException;
 
 import java.io.PrintWriter;
 
-
-
 /**
- *  A base class for compilation messages.
- *
- *  @author <a href="mailto:cpoirier@dreaming.org">Chris Poirier</a>
+ * A base class for compilation messages.
  */
+public abstract class Message {
 
-public abstract class Message
-{
-    
-    
-   /**
-    *  Writes the message to the specified PrintWriter.  The supplied
-    *  ProcessingUnit is the unit that holds this Message.
-    */
-    
-    public abstract void write( PrintWriter writer, Janitor janitor );
-    
-    
-   /**
-    *  A synonym for write( writer, owner, null ).
-    */
-    
-    public final void write( PrintWriter writer)
-    {
-        write( writer,  null );
+    /**
+     * Writes the message to the specified PrintWriter.  The supplied
+     * ProcessingUnit is the unit that holds this Message.
+     */
+    public abstract void write(PrintWriter writer, Janitor janitor);
+
+    /**
+     * A synonym for write( writer, owner, null ).
+     */
+    public final void write(PrintWriter writer) {
+        write(writer, null);
     }
-    
-    
-    
-  //---------------------------------------------------------------------------
-  // FACTORY METHODS
-    
-    
-   /**
-    *  Creates a new Message from the specified text.
-    */
-    
-    public static Message create( String text, ProcessingUnit owner )
-    {
-        return new SimpleMessage( text, owner );
+
+    //---------------------------------------------------------------------------
+    // FACTORY METHODS
+
+    /**
+     * Creates a new Message from the specified text.
+     */
+    public static Message create(String text, ProcessingUnit owner) {
+        return new SimpleMessage(text, owner);
     }
-    
-    
-          
-   /**
-    *  Creates a new Message from the specified text.
-    */
-     
-    public static Message create( String text, Object data, ProcessingUnit owner  )
-    {
-        return new SimpleMessage( text, data, owner);
+
+    /**
+     * Creates a new Message from the specified text.
+     */
+    public static Message create(String text, Object data, ProcessingUnit owner) {
+        return new SimpleMessage(text, data, owner);
     }
-     
-     
-           
-   /**
-    *  Creates a new Message from the specified SyntaxException.
-    */
-      
-    public static Message create( SyntaxException error, SourceUnit owner )
-    {
-        return new SyntaxErrorMessage( error, owner );
+
+    /**
+     * Creates a new Message from the specified SyntaxException.
+     */
+    public static Message create(SyntaxException error, SourceUnit owner) {
+        return new SyntaxErrorMessage(error, owner);
     }
-      
-    
-      
-    
+
 }
 
 
diff --git a/src/main/java/org/codehaus/groovy/control/messages/SimpleMessage.java b/src/main/java/org/codehaus/groovy/control/messages/SimpleMessage.java
index 2cbc9d8..8668dfe 100644
--- a/src/main/java/org/codehaus/groovy/control/messages/SimpleMessage.java
+++ b/src/main/java/org/codehaus/groovy/control/messages/SimpleMessage.java
@@ -24,54 +24,35 @@ import org.codehaus.groovy.control.SourceUnit;
 
 import java.io.PrintWriter;
 
-
-
 /**
- *  A base class for compilation messages.
- *
- *  @author <a href="mailto:cpoirier@dreaming.org">Chris Poirier</a>
+ * A base class for compilation messages.
  */
-
-public class SimpleMessage extends Message
-{
+public class SimpleMessage extends Message {
     protected String message;  // Message text
     protected Object data;     // Data, when the message text is an I18N identifier
     protected ProcessingUnit owner;
-    
-    public SimpleMessage( String message, ProcessingUnit source ) 
-    {
-        this( message, null, source );
+
+    public SimpleMessage(String message, ProcessingUnit source) {
+        this(message, null, source);
     }
-    
-    public SimpleMessage( String message, Object data, ProcessingUnit source )
-    {
+
+    public SimpleMessage(String message, Object data, ProcessingUnit source) {
         this.message = message;
-        this.data    = null;
+        this.data = null;
         this.owner = source;
     }
-    
-    
-    public void write( PrintWriter writer, Janitor janitor )
-    {
-        if( owner instanceof SourceUnit )
-        {
-            String name = ((SourceUnit)owner).getName();
-            writer.println( "" + name + ": " + message );
-        }
-        else
-        {
-            writer.println( message );
+
+    public void write(PrintWriter writer, Janitor janitor) {
+        if (owner instanceof SourceUnit) {
+            String name = ((SourceUnit) owner).getName();
+            writer.println("" + name + ": " + message);
+        } else {
+            writer.println(message);
         }
     }
-    
-    
-    public String getMessage()
-    {
+
+    public String getMessage() {
         return message;
     }
-    
-}
-
-
-
 
+}
diff --git a/src/main/java/org/codehaus/groovy/control/messages/SyntaxErrorMessage.java b/src/main/java/org/codehaus/groovy/control/messages/SyntaxErrorMessage.java
index be9339d..5955412 100644
--- a/src/main/java/org/codehaus/groovy/control/messages/SyntaxErrorMessage.java
+++ b/src/main/java/org/codehaus/groovy/control/messages/SyntaxErrorMessage.java
@@ -26,14 +26,11 @@ import java.io.PrintWriter;
 
 /**
  * A class for error messages produced by the parser system.
- *
- * @author <a href="mailto:cpoirier@dreaming.org">Chris Poirier</a>
  */
-
 public class SyntaxErrorMessage extends Message {
     protected SyntaxException cause;
     protected SourceUnit source;
-    
+
     public SyntaxErrorMessage(SyntaxException cause, SourceUnit source) {
         this.cause = cause;
         this.source = source;
@@ -43,7 +40,6 @@ public class SyntaxErrorMessage extends Message {
     /**
      * Returns the underlying SyntaxException.
      */
-
     public SyntaxException getCause() {
         return this.cause;
     }
@@ -51,7 +47,6 @@ public class SyntaxErrorMessage extends Message {
     /**
      * Writes out a nicely formatted summary of the syntax error.
      */
-
     public void write(PrintWriter output, Janitor janitor) {
         String name = source.getName();
         int line = getCause().getStartLine();
diff --git a/src/main/java/org/codehaus/groovy/control/messages/WarningMessage.java b/src/main/java/org/codehaus/groovy/control/messages/WarningMessage.java
index 969f29f..c245e8e 100644
--- a/src/main/java/org/codehaus/groovy/control/messages/WarningMessage.java
+++ b/src/main/java/org/codehaus/groovy/control/messages/WarningMessage.java
@@ -24,95 +24,66 @@ import org.codehaus.groovy.syntax.CSTNode;
 
 import java.io.PrintWriter;
 
-
-
 /**
- *  A class for warning messages.
- *
- *  @author <a href="mailto:cpoirier@dreaming.org">Chris Poirier</a>
+ * A class for warning messages.
  */
+public class WarningMessage extends LocatedMessage {
+    //---------------------------------------------------------------------------
+    // WARNING LEVELS
 
-public class WarningMessage extends LocatedMessage
-{
-  //---------------------------------------------------------------------------
-  // WARNING LEVELS
-
-    public static final int NONE            = 0;  // For querying, ignore all errors
-    public static final int LIKELY_ERRORS   = 1;  // Warning indicates likely error
+    public static final int NONE = 0;  // For querying, ignore all errors
+    public static final int LIKELY_ERRORS = 1;  // Warning indicates likely error
     public static final int POSSIBLE_ERRORS = 2;  // Warning indicates possible error
-    public static final int PARANOIA        = 3;  // Warning indicates paranoia on the part of the compiler
-    
-    
-   /**
-    *  Returns true if a warning would be relevant to the specified level.
-    */
-    
-    public static boolean isRelevant( int actual, int limit )
-    {
+    public static final int PARANOIA = 3;  // Warning indicates paranoia on the part of the compiler
+
+    /**
+     * Returns true if a warning would be relevant to the specified level.
+     */
+    public static boolean isRelevant(int actual, int limit) {
         return actual <= limit;
     }
-    
-    
-    
-   /**
-    *  Returns true if this message is as or more important than the 
-    *  specified importance level.
-    */
-    
-    public boolean isRelevant( int importance )
-    {
-        return isRelevant( this.importance, importance );
+
+    /**
+     * Returns true if this message is as or more important than the
+     * specified importance level.
+     */
+    public boolean isRelevant(int importance) {
+        return isRelevant(this.importance, importance);
     }
-    
-    
-    
-  //---------------------------------------------------------------------------
-  // CONSTRUCTION AND DATA ACCESS
+
+    //---------------------------------------------------------------------------
+    // CONSTRUCTION AND DATA ACCESS
 
     private final int importance;  // The warning level, for filtering
-    
-    
-   /**
-    *  Creates a new warning message.
-    * 
-    *  @param importance the warning level 
-    *  @param message    the message text
-    *  @param context    context information for locating the offending source text
-    */
-     
-    public WarningMessage( int importance, String message, CSTNode context, SourceUnit owner )
-    {
-        super( message, context, owner );
+
+    /**
+     * Creates a new warning message.
+     *
+     * @param importance the warning level
+     * @param message    the message text
+     * @param context    context information for locating the offending source text
+     */
+    public WarningMessage(int importance, String message, CSTNode context, SourceUnit owner) {
+        super(message, context, owner);
         this.importance = importance;
     }
 
-    
-    
-   /**
-    *  Creates a new warning message.
-    *
-    *  @param importance the warning level 
-    *  @param message    the message text
-    *  @param data       additional data needed when generating the message
-    *  @param context    context information for locating the offending source text
-    */
-     
-    public WarningMessage( int importance, String message, Object data, CSTNode context, SourceUnit owner )
-    {
-        super( message, data, context, owner );
+    /**
+     * Creates a new warning message.
+     *
+     * @param importance the warning level
+     * @param message    the message text
+     * @param data       additional data needed when generating the message
+     * @param context    context information for locating the offending source text
+     */
+    public WarningMessage(int importance, String message, Object data, CSTNode context, SourceUnit owner) {
+        super(message, data, context, owner);
         this.importance = importance;
     }
-    
-    
-    public void write( PrintWriter writer, Janitor janitor )
-    {
-        writer.print( "warning: " );
-        super.write( writer, janitor );
+
+    public void write(PrintWriter writer, Janitor janitor) {
+        writer.print("warning: ");
+        super.write(writer, janitor);
     }
 
-     
-     
 }
-
-
-
diff --git a/src/main/java/org/codehaus/groovy/reflection/CachedClass.java b/src/main/java/org/codehaus/groovy/reflection/CachedClass.java
index 7790930..5eba402 100644
--- a/src/main/java/org/codehaus/groovy/reflection/CachedClass.java
+++ b/src/main/java/org/codehaus/groovy/reflection/CachedClass.java
@@ -49,9 +49,6 @@ import java.util.LinkedList;
 import java.util.List;
 import java.util.Set;
 
-/**
- * @author Alex.Tkachman
- */
 public class CachedClass {
     private static final Method[] EMPTY_METHOD_ARRAY = new Method[0];
     private final Class cachedClass;
diff --git a/src/main/java/org/codehaus/groovy/reflection/CachedConstructor.java b/src/main/java/org/codehaus/groovy/reflection/CachedConstructor.java
index 74d9b71..d99a72c 100644
--- a/src/main/java/org/codehaus/groovy/reflection/CachedConstructor.java
+++ b/src/main/java/org/codehaus/groovy/reflection/CachedConstructor.java
@@ -27,9 +27,6 @@ import java.lang.reflect.InvocationTargetException;
 import java.security.AccessController;
 import java.security.PrivilegedAction;
 
-/**
- * @author Alex.Tkachman
- */
 public class CachedConstructor extends ParameterTypes {
     CachedClass clazz;
 
diff --git a/src/main/java/org/codehaus/groovy/reflection/CachedMethod.java b/src/main/java/org/codehaus/groovy/reflection/CachedMethod.java
index 1c8f3b3..b8ae4f8 100644
--- a/src/main/java/org/codehaus/groovy/reflection/CachedMethod.java
+++ b/src/main/java/org/codehaus/groovy/reflection/CachedMethod.java
@@ -1,344 +1,341 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-package org.codehaus.groovy.reflection;
-
-import groovy.lang.MetaClassImpl;
-import groovy.lang.MetaMethod;
-import groovy.lang.MissingMethodException;
-import org.codehaus.groovy.classgen.asm.BytecodeHelper;
-import org.codehaus.groovy.runtime.InvokerInvocationException;
-import org.codehaus.groovy.runtime.callsite.CallSite;
-import org.codehaus.groovy.runtime.callsite.CallSiteGenerator;
-import org.codehaus.groovy.runtime.callsite.PogoMetaMethodSite;
-import org.codehaus.groovy.runtime.callsite.PojoMetaMethodSite;
-import org.codehaus.groovy.runtime.callsite.StaticMetaMethodSite;
-import org.codehaus.groovy.runtime.metaclass.MethodHelper;
-
-import java.io.Serializable;
-import java.lang.ref.SoftReference;
-import java.lang.reflect.Constructor;
-import java.lang.reflect.InvocationTargetException;
-import java.lang.reflect.Method;
-import java.util.Arrays;
-import java.util.Comparator;
-
-/**
- * @author Alex.Tkachman
- */
-public class CachedMethod extends MetaMethod implements Comparable {
-    public static final CachedMethod[] EMPTY_ARRAY = new CachedMethod[0];
-    public final CachedClass cachedClass;
-
-    private final Method cachedMethod;
-    private int hashCode;
-
-    private static final MyComparator COMPARATOR = new MyComparator();
-
-    private SoftReference<Constructor> pogoCallSiteConstructor, pojoCallSiteConstructor, staticCallSiteConstructor;
-
-    private boolean skipCompiled;
-
-    public CachedMethod(CachedClass clazz, Method method) {
-        this.cachedMethod = method;
-        this.cachedClass = clazz;
-    }
-
-    public CachedMethod(Method method) {
-        this(ReflectionCache.getCachedClass(method.getDeclaringClass()),method);
-    }
-
-    public static CachedMethod find(Method method) {
-        CachedMethod[] methods = ReflectionCache.getCachedClass(method.getDeclaringClass()).getMethods();
-//        for (int i = 0; i < methods.length; i++) {
-//            CachedMethod cachedMethod = methods[i];
-//            if (cachedMethod.cachedMethod.equals(method))
-//                return cachedMethod;
-//        }
-//        return null;
-        int i = Arrays.binarySearch(methods, method, COMPARATOR);
-        if (i < 0)
-          return null;
-
-        return methods[i];
-    }
-
-    protected Class[] getPT() {
-        return cachedMethod.getParameterTypes();
-    }
-
-    public String getName() {
-        return cachedMethod.getName();
-    }
-
-    public String getDescriptor() {
-        return BytecodeHelper.getMethodDescriptor(getReturnType(), getNativeParameterTypes());
-    }
-
-    public CachedClass getDeclaringClass() {
-        return cachedClass;
-    }
-
-    public final Object invoke(Object object, Object[] arguments) {
-        try {
-            AccessPermissionChecker.checkAccessPermission(cachedMethod);
-        } catch (CacheAccessControlException ex) {
-            throw new InvokerInvocationException(ex);
-        }
-        try {
-            return cachedMethod.invoke(object, arguments);
-        } catch (IllegalArgumentException | IllegalAccessException e) {
-            throw new InvokerInvocationException(e);
-        } catch (InvocationTargetException e) {
-            Throwable cause = e.getCause(); 
-            throw (cause instanceof RuntimeException && !(cause instanceof MissingMethodException)) ? 
-                    (RuntimeException) cause : new InvokerInvocationException(e);
-        }
-    }
-
-    public ParameterTypes getParamTypes() {
-        return null;
-    }
-
-    public Class getReturnType() {
-        return cachedMethod.getReturnType();
-    }
-
-    public int getParamsCount() {
-        return getParameterTypes().length;
-    }
-
-    public int getModifiers() {
-        return cachedMethod.getModifiers();
-    }
-
-
-    public String getSignature() {
-        return getName() + getDescriptor();
-    }
-
-    public final Method setAccessible() {
-        AccessPermissionChecker.checkAccessPermission(cachedMethod);
-//        if (queuedToCompile.compareAndSet(false,true)) {
-//            if (isCompilable())
-//              CompileThread.addMethod(this);
-//        }
-        return cachedMethod;
-    }
-
-    public boolean isStatic() {
-        return MethodHelper.isStatic(cachedMethod);
-    }
-
-    public int compareTo(Object o) {
-      if (o instanceof CachedMethod)
-        return compareToCachedMethod((CachedMethod)o);
-      else
-        return compareToMethod((Method)o);
-    }
-
-    private int compareToCachedMethod(CachedMethod other) {
-        if (other == null)
-            return -1;
-
-        final int strComp = getName().compareTo(other.getName());
-        if (strComp != 0)
-            return strComp;
-
-        final int retComp = getReturnType().getName().compareTo(other.getReturnType().getName());
-        if (retComp != 0)
-            return retComp;
-
-        CachedClass[] params = getParameterTypes();
-        CachedClass[] otherParams = other.getParameterTypes();
-
-        final int pd = params.length - otherParams.length;
-        if (pd != 0)
-            return pd;
-
-        for (int i = 0; i != params.length; ++i) {
-            final int nameComp = params[i].getName().compareTo(otherParams[i].getName());
-            if (nameComp != 0)
-                return nameComp;
-        }
-
-        final int classComp = cachedClass.toString().compareTo(other.getDeclaringClass().toString());
-        if (classComp != 0)
-            return classComp;
-
-        throw new RuntimeException("Should never happen");
-    }
-
-    private int compareToMethod(Method other) {
-        if (other == null)
-            return -1;
-
-        final int strComp = getName().compareTo(other.getName());
-        if (strComp != 0)
-            return strComp;
-
-        final int retComp = getReturnType().getName().compareTo(other.getReturnType().getName());
-        if (retComp != 0)
-            return retComp;
-
-        CachedClass[] params = getParameterTypes();
-        Class[] mparams = other.getParameterTypes();
-
-        final int pd = params.length - mparams.length;
-        if (pd != 0)
-            return pd;
-
-        for (int i = 0; i != params.length; ++i) {
-            final int nameComp = params[i].getName().compareTo(mparams[i].getName());
-            if (nameComp != 0)
-                return nameComp;
-        }
-
-        return 0;
-    }
-
-    public boolean equals(Object o) {
-        return (o instanceof CachedMethod && cachedMethod.equals(((CachedMethod)o).cachedMethod))
-                || (o instanceof Method && cachedMethod.equals(o));
-    }
-
-    public int hashCode() {
-        if (hashCode == 0) {
-           hashCode = cachedMethod.hashCode();
-           if (hashCode == 0)
-             hashCode = 0xcafebebe;
-        }
-        return hashCode;
-    }
-
-    public String toString() {
-        return cachedMethod.toString();
-    }
-    
-    private static Constructor getConstructor(SoftReference<Constructor> ref) {
-        if (ref==null) return null;
-        return ref.get();
-    }
-
-    public CallSite createPogoMetaMethodSite(CallSite site, MetaClassImpl metaClass, Class[] params) {
-        if (!skipCompiled) {
-            Constructor constr = getConstructor(pogoCallSiteConstructor);
-            if (constr==null) {
-                if (CallSiteGenerator.isCompilable(this)) {
-                  constr = CallSiteGenerator.compilePogoMethod(this);
-                }
-                if (constr != null) {
-                     pogoCallSiteConstructor = new SoftReference<Constructor> (constr);
-                } else {
-                    skipCompiled = true;
-                }
-            }
-    
-            if (constr!=null) {
-                try {
-                    return (CallSite) constr.newInstance(site, metaClass, this, params, constr);
-                } catch (Error e) {
-                    skipCompiled=true;
-                    throw e;
-                } catch (Throwable e) {
-                    skipCompiled=true;
-                }
-            }
-        }
-        return new PogoMetaMethodSite.PogoCachedMethodSiteNoUnwrapNoCoerce(site, metaClass, this, params);
-    }
-
-
-    public CallSite createPojoMetaMethodSite(CallSite site, MetaClassImpl metaClass, Class[] params) {
-        if (!skipCompiled) {
-            Constructor constr = getConstructor(pojoCallSiteConstructor);
-            if (constr==null) {
-                if (CallSiteGenerator.isCompilable(this)) {
-                  constr = CallSiteGenerator.compilePojoMethod(this);
-                }
-                if (constr != null) {
-                    pojoCallSiteConstructor = new SoftReference<Constructor> (constr);
-                } else {
-                    skipCompiled = true;
-                }
-            }
-    
-            if (constr!=null) {
-                try {
-                    return (CallSite) constr.newInstance(site, metaClass, this, params, constr);
-                } catch (Error e) {
-                    skipCompiled=true;
-                    throw e;
-                } catch (Throwable e) {
-                    skipCompiled=true;
-                }
-            }
-        }
-        return new PojoMetaMethodSite.PojoCachedMethodSiteNoUnwrapNoCoerce(site, metaClass, this, params);
-    }
-
-    public CallSite createStaticMetaMethodSite(CallSite site, MetaClassImpl metaClass, Class[] params) {
-        if (!skipCompiled) {
-            Constructor constr = getConstructor(staticCallSiteConstructor);
-            if (constr==null) {
-                if (CallSiteGenerator.isCompilable(this)) {
-                  constr = CallSiteGenerator.compileStaticMethod(this);
-                }
-                if (constr != null) {
-                    staticCallSiteConstructor = new SoftReference<Constructor> (constr);
-                } else {
-                    skipCompiled = true;
-                }
-            }
-    
-            if (constr!=null) {
-                try {
-                    return (CallSite) constr.newInstance(site, metaClass, this, params, constr);
-                } catch (Error e) {
-                    skipCompiled=true;
-                    throw e;
-                } catch (Throwable e) {
-                    skipCompiled=true;
-                }
-            }
-        }
-
-        return new StaticMetaMethodSite.StaticMetaMethodSiteNoUnwrapNoCoerce(site, metaClass, this, params);
-    }
-
-    private static class MyComparator implements Comparator, Serializable {
-        private static final long serialVersionUID = 8909277090690131302L;
-
-        public int compare(Object o1, Object o2) {
-            if (o1 instanceof CachedMethod)
-                return ((CachedMethod)o1).compareTo(o2);
-            else if (o2 instanceof CachedMethod)
-                return -((CachedMethod)o2).compareTo(o1);
-            else
-                // really, this should never happen, it's evidence of corruption if it does
-                throw new ClassCastException("One of the two comparables must be a CachedMethod");
-        }
-    }
-
-    public Method getCachedMethod() {
-        AccessPermissionChecker.checkAccessPermission(cachedMethod);
-        return cachedMethod;
-    }
-
-}
-
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.codehaus.groovy.reflection;
+
+import groovy.lang.MetaClassImpl;
+import groovy.lang.MetaMethod;
+import groovy.lang.MissingMethodException;
+import org.codehaus.groovy.classgen.asm.BytecodeHelper;
+import org.codehaus.groovy.runtime.InvokerInvocationException;
+import org.codehaus.groovy.runtime.callsite.CallSite;
+import org.codehaus.groovy.runtime.callsite.CallSiteGenerator;
+import org.codehaus.groovy.runtime.callsite.PogoMetaMethodSite;
+import org.codehaus.groovy.runtime.callsite.PojoMetaMethodSite;
+import org.codehaus.groovy.runtime.callsite.StaticMetaMethodSite;
+import org.codehaus.groovy.runtime.metaclass.MethodHelper;
+
+import java.io.Serializable;
+import java.lang.ref.SoftReference;
+import java.lang.reflect.Constructor;
+import java.lang.reflect.InvocationTargetException;
+import java.lang.reflect.Method;
+import java.util.Arrays;
+import java.util.Comparator;
+
+public class CachedMethod extends MetaMethod implements Comparable {
+    public static final CachedMethod[] EMPTY_ARRAY = new CachedMethod[0];
+    public final CachedClass cachedClass;
+
+    private final Method cachedMethod;
+    private int hashCode;
+
+    private static final MyComparator COMPARATOR = new MyComparator();
+
+    private SoftReference<Constructor> pogoCallSiteConstructor, pojoCallSiteConstructor, staticCallSiteConstructor;
+
+    private boolean skipCompiled;
+
+    public CachedMethod(CachedClass clazz, Method method) {
+        this.cachedMethod = method;
+        this.cachedClass = clazz;
+    }
+
+    public CachedMethod(Method method) {
+        this(ReflectionCache.getCachedClass(method.getDeclaringClass()),method);
+    }
+
+    public static CachedMethod find(Method method) {
+        CachedMethod[] methods = ReflectionCache.getCachedClass(method.getDeclaringClass()).getMethods();
+//        for (int i = 0; i < methods.length; i++) {
+//            CachedMethod cachedMethod = methods[i];
+//            if (cachedMethod.cachedMethod.equals(method))
+//                return cachedMethod;
+//        }
+//        return null;
+        int i = Arrays.binarySearch(methods, method, COMPARATOR);
+        if (i < 0)
+          return null;
+
+        return methods[i];
+    }
+
+    protected Class[] getPT() {
+        return cachedMethod.getParameterTypes();
+    }
+
+    public String getName() {
+        return cachedMethod.getName();
+    }
+
+    public String getDescriptor() {
+        return BytecodeHelper.getMethodDescriptor(getReturnType(), getNativeParameterTypes());
+    }
+
+    public CachedClass getDeclaringClass() {
+        return cachedClass;
+    }
+
+    public final Object invoke(Object object, Object[] arguments) {
+        try {
+            AccessPermissionChecker.checkAccessPermission(cachedMethod);
+        } catch (CacheAccessControlException ex) {
+            throw new InvokerInvocationException(ex);
+        }
+        try {
+            return cachedMethod.invoke(object, arguments);
+        } catch (IllegalArgumentException | IllegalAccessException e) {
+            throw new InvokerInvocationException(e);
+        } catch (InvocationTargetException e) {
+            Throwable cause = e.getCause(); 
+            throw (cause instanceof RuntimeException && !(cause instanceof MissingMethodException)) ? 
+                    (RuntimeException) cause : new InvokerInvocationException(e);
+        }
+    }
+
+    public ParameterTypes getParamTypes() {
+        return null;
+    }
+
+    public Class getReturnType() {
+        return cachedMethod.getReturnType();
+    }
+
+    public int getParamsCount() {
+        return getParameterTypes().length;
+    }
+
+    public int getModifiers() {
+        return cachedMethod.getModifiers();
+    }
+
+
+    public String getSignature() {
+        return getName() + getDescriptor();
+    }
+
+    public final Method setAccessible() {
+        AccessPermissionChecker.checkAccessPermission(cachedMethod);
+//        if (queuedToCompile.compareAndSet(false,true)) {
+//            if (isCompilable())
+//              CompileThread.addMethod(this);
+//        }
+        return cachedMethod;
+    }
+
+    public boolean isStatic() {
+        return MethodHelper.isStatic(cachedMethod);
+    }
+
+    public int compareTo(Object o) {
+      if (o instanceof CachedMethod)
+        return compareToCachedMethod((CachedMethod)o);
+      else
+        return compareToMethod((Method)o);
+    }
+
+    private int compareToCachedMethod(CachedMethod other) {
+        if (other == null)
+            return -1;
+
+        final int strComp = getName().compareTo(other.getName());
+        if (strComp != 0)
+            return strComp;
+
+        final int retComp = getReturnType().getName().compareTo(other.getReturnType().getName());
+        if (retComp != 0)
+            return retComp;
+
+        CachedClass[] params = getParameterTypes();
+        CachedClass[] otherParams = other.getParameterTypes();
+
+        final int pd = params.length - otherParams.length;
+        if (pd != 0)
+            return pd;
+
+        for (int i = 0; i != params.length; ++i) {
+            final int nameComp = params[i].getName().compareTo(otherParams[i].getName());
+            if (nameComp != 0)
+                return nameComp;
+        }
+
+        final int classComp = cachedClass.toString().compareTo(other.getDeclaringClass().toString());
+        if (classComp != 0)
+            return classComp;
+
+        throw new RuntimeException("Should never happen");
+    }
+
+    private int compareToMethod(Method other) {
+        if (other == null)
+            return -1;
+
+        final int strComp = getName().compareTo(other.getName());
+        if (strComp != 0)
+            return strComp;
+
+        final int retComp = getReturnType().getName().compareTo(other.getReturnType().getName());
+        if (retComp != 0)
+            return retComp;
+
+        CachedClass[] params = getParameterTypes();
+        Class[] mparams = other.getParameterTypes();
+
+        final int pd = params.length - mparams.length;
+        if (pd != 0)
+            return pd;
+
+        for (int i = 0; i != params.length; ++i) {
+            final int nameComp = params[i].getName().compareTo(mparams[i].getName());
+            if (nameComp != 0)
+                return nameComp;
+        }
+
+        return 0;
+    }
+
+    public boolean equals(Object o) {
+        return (o instanceof CachedMethod && cachedMethod.equals(((CachedMethod)o).cachedMethod))
+                || (o instanceof Method && cachedMethod.equals(o));
+    }
+
+    public int hashCode() {
+        if (hashCode == 0) {
+           hashCode = cachedMethod.hashCode();
+           if (hashCode == 0)
+             hashCode = 0xcafebebe;
+        }
+        return hashCode;
+    }
+
+    public String toString() {
+        return cachedMethod.toString();
+    }
+    
+    private static Constructor getConstructor(SoftReference<Constructor> ref) {
+        if (ref==null) return null;
+        return ref.get();
+    }
+
+    public CallSite createPogoMetaMethodSite(CallSite site, MetaClassImpl metaClass, Class[] params) {
+        if (!skipCompiled) {
+            Constructor constr = getConstructor(pogoCallSiteConstructor);
+            if (constr==null) {
+                if (CallSiteGenerator.isCompilable(this)) {
+                  constr = CallSiteGenerator.compilePogoMethod(this);
+                }
+                if (constr != null) {
+                     pogoCallSiteConstructor = new SoftReference<Constructor> (constr);
+                } else {
+                    skipCompiled = true;
+                }
+            }
+    
+            if (constr!=null) {
+                try {
+                    return (CallSite) constr.newInstance(site, metaClass, this, params, constr);
+                } catch (Error e) {
+                    skipCompiled=true;
+                    throw e;
+                } catch (Throwable e) {
+                    skipCompiled=true;
+                }
+            }
+        }
+        return new PogoMetaMethodSite.PogoCachedMethodSiteNoUnwrapNoCoerce(site, metaClass, this, params);
+    }
+
+
+    public CallSite createPojoMetaMethodSite(CallSite site, MetaClassImpl metaClass, Class[] params) {
+        if (!skipCompiled) {
+            Constructor constr = getConstructor(pojoCallSiteConstructor);
+            if (constr==null) {
+                if (CallSiteGenerator.isCompilable(this)) {
+                  constr = CallSiteGenerator.compilePojoMethod(this);
+                }
+                if (constr != null) {
+                    pojoCallSiteConstructor = new SoftReference<Constructor> (constr);
+                } else {
+                    skipCompiled = true;
+                }
+            }
+    
+            if (constr!=null) {
+                try {
+                    return (CallSite) constr.newInstance(site, metaClass, this, params, constr);
+                } catch (Error e) {
+                    skipCompiled=true;
+                    throw e;
+                } catch (Throwable e) {
+                    skipCompiled=true;
+                }
+            }
+        }
+        return new PojoMetaMethodSite.PojoCachedMethodSiteNoUnwrapNoCoerce(site, metaClass, this, params);
+    }
+
+    public CallSite createStaticMetaMethodSite(CallSite site, MetaClassImpl metaClass, Class[] params) {
+        if (!skipCompiled) {
+            Constructor constr = getConstructor(staticCallSiteConstructor);
+            if (constr==null) {
+                if (CallSiteGenerator.isCompilable(this)) {
+                  constr = CallSiteGenerator.compileStaticMethod(this);
+                }
+                if (constr != null) {
+                    staticCallSiteConstructor = new SoftReference<Constructor> (constr);
+                } else {
+                    skipCompiled = true;
+                }
+            }
+    
+            if (constr!=null) {
+                try {
+                    return (CallSite) constr.newInstance(site, metaClass, this, params, constr);
+                } catch (Error e) {
+                    skipCompiled=true;
+                    throw e;
+                } catch (Throwable e) {
+                    skipCompiled=true;
+                }
+            }
+        }
+
+        return new StaticMetaMethodSite.StaticMetaMethodSiteNoUnwrapNoCoerce(site, metaClass, this, params);
+    }
+
+    private static class MyComparator implements Comparator, Serializable {
+        private static final long serialVersionUID = 8909277090690131302L;
+
+        public int compare(Object o1, Object o2) {
+            if (o1 instanceof CachedMethod)
+                return ((CachedMethod)o1).compareTo(o2);
+            else if (o2 instanceof CachedMethod)
+                return -((CachedMethod)o2).compareTo(o1);
+            else
+                // really, this should never happen, it's evidence of corruption if it does
+                throw new ClassCastException("One of the two comparables must be a CachedMethod");
+        }
+    }
+
+    public Method getCachedMethod() {
+        AccessPermissionChecker.checkAccessPermission(cachedMethod);
+        return cachedMethod;
+    }
+
+}
+
diff --git a/src/main/java/org/codehaus/groovy/reflection/ClassInfo.java b/src/main/java/org/codehaus/groovy/reflection/ClassInfo.java
index 1067e4b..2c4ae9a 100644
--- a/src/main/java/org/codehaus/groovy/reflection/ClassInfo.java
+++ b/src/main/java/org/codehaus/groovy/reflection/ClassInfo.java
@@ -69,8 +69,6 @@ import java.util.concurrent.atomic.AtomicInteger;
  * from the cache.  Internally the {@code Class} associated with a {@code ClassInfo}
  * instance is kept as {@link WeakReference}, so it not safe to reference
  * and instance without the Class being either strongly or softly reachable.
- *
- * @author Alex.Tkachman
  */
 public class ClassInfo implements Finalizable {
 
diff --git a/src/main/java/org/codehaus/groovy/reflection/stdclasses/ArrayCachedClass.java b/src/main/java/org/codehaus/groovy/reflection/stdclasses/ArrayCachedClass.java
index fcf2908..6f53cac 100644
--- a/src/main/java/org/codehaus/groovy/reflection/stdclasses/ArrayCachedClass.java
+++ b/src/main/java/org/codehaus/groovy/reflection/stdclasses/ArrayCachedClass.java
@@ -23,9 +23,6 @@ import org.codehaus.groovy.reflection.CachedClass;
 import org.codehaus.groovy.reflection.ClassInfo;
 import org.codehaus.groovy.runtime.typehandling.DefaultTypeTransformation;
 
-/**
- * @author Alex.Tkachman
- */
 public class ArrayCachedClass extends CachedClass {
     public ArrayCachedClass(Class klazz, ClassInfo classInfo) {
         super(klazz, classInfo);
diff --git a/src/main/java/org/codehaus/groovy/reflection/stdclasses/BigDecimalCachedClass.java b/src/main/java/org/codehaus/groovy/reflection/stdclasses/BigDecimalCachedClass.java
index 45a1c85..d1f7646 100644
--- a/src/main/java/org/codehaus/groovy/reflection/stdclasses/BigDecimalCachedClass.java
+++ b/src/main/java/org/codehaus/groovy/reflection/stdclasses/BigDecimalCachedClass.java
@@ -23,9 +23,6 @@ import org.codehaus.groovy.reflection.ClassInfo;
 import java.math.BigDecimal;
 import java.math.BigInteger;
 
-/**
- * @author Alex.Tkachman
- */
 public class BigDecimalCachedClass extends DoubleCachedClass {
     public BigDecimalCachedClass(Class klazz, ClassInfo classInfo) {
         super(klazz, classInfo, true);
diff --git a/src/main/java/org/codehaus/groovy/reflection/stdclasses/BigIntegerCachedClass.java b/src/main/java/org/codehaus/groovy/reflection/stdclasses/BigIntegerCachedClass.java
index 573fc42..ba90a8b 100644
--- a/src/main/java/org/codehaus/groovy/reflection/stdclasses/BigIntegerCachedClass.java
+++ b/src/main/java/org/codehaus/groovy/reflection/stdclasses/BigIntegerCachedClass.java
@@ -22,9 +22,6 @@ import org.codehaus.groovy.reflection.ClassInfo;
 
 import java.math.BigInteger;
 
-/**
- * @author Alex.Tkachman
- */
 public class BigIntegerCachedClass extends NumberCachedClass {
     public BigIntegerCachedClass(Class klazz, ClassInfo classInfo) {
         super(klazz, classInfo);
diff --git a/src/main/java/org/codehaus/groovy/reflection/stdclasses/BooleanCachedClass.java b/src/main/java/org/codehaus/groovy/reflection/stdclasses/BooleanCachedClass.java
index 9dacdf4..2d24f73 100644
--- a/src/main/java/org/codehaus/groovy/reflection/stdclasses/BooleanCachedClass.java
+++ b/src/main/java/org/codehaus/groovy/reflection/stdclasses/BooleanCachedClass.java
@@ -21,9 +21,6 @@ package org.codehaus.groovy.reflection.stdclasses;
 import org.codehaus.groovy.reflection.CachedClass;
 import org.codehaus.groovy.reflection.ClassInfo;
 
-/**
- * @author Alex.Tkachman
- */
 public class BooleanCachedClass extends CachedClass {
     private final boolean allowNull;
     public BooleanCachedClass(Class klazz, ClassInfo classInfo, boolean allowNull) {
diff --git a/src/main/java/org/codehaus/groovy/reflection/stdclasses/ByteCachedClass.java b/src/main/java/org/codehaus/groovy/reflection/stdclasses/ByteCachedClass.java
index 21abd59..c9d75f9 100644
--- a/src/main/java/org/codehaus/groovy/reflection/stdclasses/ByteCachedClass.java
+++ b/src/main/java/org/codehaus/groovy/reflection/stdclasses/ByteCachedClass.java
@@ -20,9 +20,6 @@ package org.codehaus.groovy.reflection.stdclasses;
 
 import org.codehaus.groovy.reflection.ClassInfo;
 
-/**
- * @author Alex.Tkachman
- */
 public class ByteCachedClass extends NumberCachedClass {
     private final boolean allowNull;
     public ByteCachedClass(Class klazz, ClassInfo classInfo, boolean allowNull) {
diff --git a/src/main/java/org/codehaus/groovy/reflection/stdclasses/CharacterCachedClass.java b/src/main/java/org/codehaus/groovy/reflection/stdclasses/CharacterCachedClass.java
index 619332e..44d9b0f 100644
--- a/src/main/java/org/codehaus/groovy/reflection/stdclasses/CharacterCachedClass.java
+++ b/src/main/java/org/codehaus/groovy/reflection/stdclasses/CharacterCachedClass.java
@@ -21,9 +21,6 @@ package org.codehaus.groovy.reflection.stdclasses;
 import org.codehaus.groovy.reflection.CachedClass;
 import org.codehaus.groovy.reflection.ClassInfo;
 
-/**
- * @author Alex.Tkachman
- */
 public class CharacterCachedClass extends CachedClass {
     private final boolean allowNull;
 
diff --git a/src/main/java/org/codehaus/groovy/reflection/stdclasses/DoubleCachedClass.java b/src/main/java/org/codehaus/groovy/reflection/stdclasses/DoubleCachedClass.java
index 4a0f5c6..5e4fc72 100644
--- a/src/main/java/org/codehaus/groovy/reflection/stdclasses/DoubleCachedClass.java
+++ b/src/main/java/org/codehaus/groovy/reflection/stdclasses/DoubleCachedClass.java
@@ -23,9 +23,6 @@ import org.codehaus.groovy.reflection.ClassInfo;
 import java.math.BigDecimal;
 import java.math.BigInteger;
 
-/**
- * @author Alex.Tkachman
- */
 public class DoubleCachedClass extends NumberCachedClass { // Double, double
     private final boolean allowNull;
 
diff --git a/src/main/java/org/codehaus/groovy/reflection/stdclasses/FloatCachedClass.java b/src/main/java/org/codehaus/groovy/reflection/stdclasses/FloatCachedClass.java
index a579028..a615f2a 100644
--- a/src/main/java/org/codehaus/groovy/reflection/stdclasses/FloatCachedClass.java
+++ b/src/main/java/org/codehaus/groovy/reflection/stdclasses/FloatCachedClass.java
@@ -23,9 +23,6 @@ import org.codehaus.groovy.reflection.ClassInfo;
 import java.math.BigDecimal;
 import java.math.BigInteger;
 
-/**
- * @author Alex.Tkachman
- */
 public class FloatCachedClass extends NumberCachedClass {
     private final boolean allowNull;
 
diff --git a/src/main/java/org/codehaus/groovy/reflection/stdclasses/IntegerCachedClass.java b/src/main/java/org/codehaus/groovy/reflection/stdclasses/IntegerCachedClass.java
index 334a3ab..35be554 100644
--- a/src/main/java/org/codehaus/groovy/reflection/stdclasses/IntegerCachedClass.java
+++ b/src/main/java/org/codehaus/groovy/reflection/stdclasses/IntegerCachedClass.java
@@ -22,9 +22,6 @@ import org.codehaus.groovy.reflection.ClassInfo;
 
 import java.math.BigInteger;
 
-/**
- * @author Alex.Tkachman
- */
 public class IntegerCachedClass extends NumberCachedClass {  // int, Integer
     private final boolean allowNull;
 
diff --git a/src/main/java/org/codehaus/groovy/reflection/stdclasses/LongCachedClass.java b/src/main/java/org/codehaus/groovy/reflection/stdclasses/LongCachedClass.java
index 5d42b0c..0b15b91 100644
--- a/src/main/java/org/codehaus/groovy/reflection/stdclasses/LongCachedClass.java
+++ b/src/main/java/org/codehaus/groovy/reflection/stdclasses/LongCachedClass.java
@@ -20,9 +20,6 @@ package org.codehaus.groovy.reflection.stdclasses;
 
 import org.codehaus.groovy.reflection.ClassInfo;
 
-/**
- * @author Alex.Tkachman
- */
 public class LongCachedClass extends NumberCachedClass {
     private final boolean allowNull;
 
diff --git a/src/main/java/org/codehaus/groovy/reflection/stdclasses/NumberCachedClass.java b/src/main/java/org/codehaus/groovy/reflection/stdclasses/NumberCachedClass.java
index 311cbc2..70a9a35 100644
--- a/src/main/java/org/codehaus/groovy/reflection/stdclasses/NumberCachedClass.java
+++ b/src/main/java/org/codehaus/groovy/reflection/stdclasses/NumberCachedClass.java
@@ -23,9 +23,6 @@ import org.codehaus.groovy.reflection.ClassInfo;
 
 import java.math.BigInteger;
 
-/**
- * @author Alex.Tkachman
- */
 public class NumberCachedClass extends CachedClass {
 
     public NumberCachedClass(Class klazz, ClassInfo classInfo) {
diff --git a/src/main/java/org/codehaus/groovy/reflection/stdclasses/ObjectCachedClass.java b/src/main/java/org/codehaus/groovy/reflection/stdclasses/ObjectCachedClass.java
index f29acf7..9c281f5 100644
--- a/src/main/java/org/codehaus/groovy/reflection/stdclasses/ObjectCachedClass.java
+++ b/src/main/java/org/codehaus/groovy/reflection/stdclasses/ObjectCachedClass.java
@@ -21,9 +21,6 @@ package org.codehaus.groovy.reflection.stdclasses;
 import org.codehaus.groovy.reflection.CachedClass;
 import org.codehaus.groovy.reflection.ClassInfo;
 
-/**
- * @author Alex.Tkachman
- */
 public class ObjectCachedClass extends CachedClass {
     public ObjectCachedClass(ClassInfo classInfo) {
         super(Object.class,classInfo);
diff --git a/src/main/java/org/codehaus/groovy/reflection/stdclasses/ShortCachedClass.java b/src/main/java/org/codehaus/groovy/reflection/stdclasses/ShortCachedClass.java
index f6cccf1..917380b 100644
--- a/src/main/java/org/codehaus/groovy/reflection/stdclasses/ShortCachedClass.java
+++ b/src/main/java/org/codehaus/groovy/reflection/stdclasses/ShortCachedClass.java
@@ -20,9 +20,6 @@ package org.codehaus.groovy.reflection.stdclasses;
 
 import org.codehaus.groovy.reflection.ClassInfo;
 
-/**
- * @author Alex.Tkachman
- */
 public class ShortCachedClass extends NumberCachedClass {
     private final boolean allowNull;
 
diff --git a/src/main/java/org/codehaus/groovy/reflection/stdclasses/StringCachedClass.java b/src/main/java/org/codehaus/groovy/reflection/stdclasses/StringCachedClass.java
index a3039ad..01b41b5 100644
--- a/src/main/java/org/codehaus/groovy/reflection/stdclasses/StringCachedClass.java
+++ b/src/main/java/org/codehaus/groovy/reflection/stdclasses/StringCachedClass.java
@@ -23,9 +23,6 @@ import org.codehaus.groovy.reflection.CachedClass;
 import org.codehaus.groovy.reflection.ClassInfo;
 import org.codehaus.groovy.reflection.ReflectionCache;
 
-/**
- * @author Alex.Tkachman
- */
 public class StringCachedClass extends CachedClass {
     private static final Class STRING_CLASS = String.class;
     private static final Class GSTRING_CLASS = GString.class;
diff --git a/src/main/java/org/codehaus/groovy/runtime/AbstractComparator.java b/src/main/java/org/codehaus/groovy/runtime/AbstractComparator.java
index 7c977cd..db12114 100644
--- a/src/main/java/org/codehaus/groovy/runtime/AbstractComparator.java
+++ b/src/main/java/org/codehaus/groovy/runtime/AbstractComparator.java
@@ -20,9 +20,6 @@ package org.codehaus.groovy.runtime;
 
 import java.util.Comparator;
 
-/**
- * @author Andres Almiray
- */
 public abstract class AbstractComparator<T> implements Comparator<T> {
     public boolean equals(Object obj) {
         return this == obj;
diff --git a/src/main/java/org/codehaus/groovy/runtime/BytecodeInterface8.java b/src/main/java/org/codehaus/groovy/runtime/BytecodeInterface8.java
index 79fae05..71cabf3 100644
--- a/src/main/java/org/codehaus/groovy/runtime/BytecodeInterface8.java
+++ b/src/main/java/org/codehaus/groovy/runtime/BytecodeInterface8.java
@@ -22,7 +22,6 @@ import org.codehaus.groovy.runtime.metaclass.DefaultMetaClassInfo;
 
 /**
  * This class contains methods special to optimizations used directly from bytecode in Groovy 1.8
- * @author <a href="mailto:blackdrag@gmx.org">Jochen "blackdrag" Theodorou</a>
  */
 public class BytecodeInterface8 {
     
diff --git a/src/main/java/org/codehaus/groovy/runtime/DefaultCachedMethodKey.java b/src/main/java/org/codehaus/groovy/runtime/DefaultCachedMethodKey.java
index 9dd8cd0..7dd9a35 100644
--- a/src/main/java/org/codehaus/groovy/runtime/DefaultCachedMethodKey.java
+++ b/src/main/java/org/codehaus/groovy/runtime/DefaultCachedMethodKey.java
@@ -23,8 +23,6 @@ import org.codehaus.groovy.reflection.CachedClass;
 
 /**
  * A default implementation of MethodKey
- *
- * @author <a href="mailto:james@coredevelopers.net">James Strachan</a>
  */
 public class DefaultCachedMethodKey extends MethodKey{
 
diff --git a/src/main/java/org/codehaus/groovy/runtime/DefaultMethodKey.java b/src/main/java/org/codehaus/groovy/runtime/DefaultMethodKey.java
index 96612ff..97fe495 100644
--- a/src/main/java/org/codehaus/groovy/runtime/DefaultMethodKey.java
+++ b/src/main/java/org/codehaus/groovy/runtime/DefaultMethodKey.java
@@ -20,8 +20,6 @@ package org.codehaus.groovy.runtime;
 
 /**
  * A default implementation of MethodKey
- *
- * @author <a href="mailto:james@coredevelopers.net">James Strachan</a>
  */
 public class DefaultMethodKey extends MethodKey{
 
diff --git a/src/main/java/org/codehaus/groovy/runtime/FlushingStreamWriter.java b/src/main/java/org/codehaus/groovy/runtime/FlushingStreamWriter.java
index 6fb77b7..89f2113 100644
--- a/src/main/java/org/codehaus/groovy/runtime/FlushingStreamWriter.java
+++ b/src/main/java/org/codehaus/groovy/runtime/FlushingStreamWriter.java
@@ -24,8 +24,6 @@ import java.io.OutputStreamWriter;
 
 /**
  * Stream writer which flushes after each write operation.
- *
- * @author Guillaume Laforge
  */
 public class FlushingStreamWriter extends OutputStreamWriter {
 
diff --git a/src/main/java/org/codehaus/groovy/runtime/GeneratedClosure.java b/src/main/java/org/codehaus/groovy/runtime/GeneratedClosure.java
index 50da843..efcfb5e 100644
--- a/src/main/java/org/codehaus/groovy/runtime/GeneratedClosure.java
+++ b/src/main/java/org/codehaus/groovy/runtime/GeneratedClosure.java
@@ -1,29 +1,28 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-package org.codehaus.groovy.runtime;
-
-/**
- * Marker interface to identify closures generated by the groovy compiler.
- * For internal use only!
- * 
- * @author Jochen Theodorou
- * @since 1.5
- * @see org.codehaus.groovy.runtime.metaclass.ClosureMetaClass
- */
-public interface GeneratedClosure {}
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.codehaus.groovy.runtime;
+
+/**
+ * Marker interface to identify closures generated by the groovy compiler.
+ * For internal use only!
+ * 
+ * @since 1.5
+ * @see org.codehaus.groovy.runtime.metaclass.ClosureMetaClass
+ */
+public interface GeneratedClosure {}
diff --git a/src/main/java/org/codehaus/groovy/runtime/MetaClassHelper.java b/src/main/java/org/codehaus/groovy/runtime/MetaClassHelper.java
index 7839a59..5d745d4 100644
--- a/src/main/java/org/codehaus/groovy/runtime/MetaClassHelper.java
+++ b/src/main/java/org/codehaus/groovy/runtime/MetaClassHelper.java
@@ -42,10 +42,6 @@ import java.util.Set;
 import java.util.logging.Level;
 import java.util.logging.Logger;
 
-/**
- * @author John Wilson
- * @author Jochen Theodorou
- */
 public class MetaClassHelper {
 
     public static final Object[] EMPTY_ARRAY = {};
diff --git a/src/main/java/org/codehaus/groovy/runtime/MethodKey.java b/src/main/java/org/codehaus/groovy/runtime/MethodKey.java
index d03b85a..aaa7e4a 100644
--- a/src/main/java/org/codehaus/groovy/runtime/MethodKey.java
+++ b/src/main/java/org/codehaus/groovy/runtime/MethodKey.java
@@ -26,8 +26,6 @@ import java.util.List;
 /**
  * An abstract base class for a key used for comparators and Map keys to lookup a method by
  * name and parameter types
- * 
- * @author <a href="mailto:james@coredevelopers.net">James Strachan</a>
  */
 public abstract class MethodKey {
 
diff --git a/src/main/java/org/codehaus/groovy/runtime/MethodRankHelper.java b/src/main/java/org/codehaus/groovy/runtime/MethodRankHelper.java
index 689245c..83723df 100644
--- a/src/main/java/org/codehaus/groovy/runtime/MethodRankHelper.java
+++ b/src/main/java/org/codehaus/groovy/runtime/MethodRankHelper.java
@@ -36,8 +36,6 @@ import java.util.Set;
  * Utility class for MissingMethodException, MissingPropertyException etc.
  * This class contains methods assisting in ranking and listing probable intended
  * methods/fields when a exception is thrown.
- *
- * @author Hjalmar Ekengren
  */
 public class MethodRankHelper{
     //These are the costs for the various edit operations
diff --git a/src/main/java/org/codehaus/groovy/runtime/ReflectionMethodInvoker.java b/src/main/java/org/codehaus/groovy/runtime/ReflectionMethodInvoker.java
index a5e8ed4..731eaab 100644
--- a/src/main/java/org/codehaus/groovy/runtime/ReflectionMethodInvoker.java
+++ b/src/main/java/org/codehaus/groovy/runtime/ReflectionMethodInvoker.java
@@ -26,8 +26,6 @@ import java.lang.reflect.Method;
  * The class is particularly useful for Groovy classes implementing <code>GroovyInterceptable</code>,
  * since it is not possible to call any method from this class,
  * because it is intercepted by the <code>invokeMethod()</code> method.
- *
- * @author Guillaume Laforge
  */
 public class ReflectionMethodInvoker {
 
diff --git a/src/main/java/org/codehaus/groovy/runtime/Reflector.java b/src/main/java/org/codehaus/groovy/runtime/Reflector.java
index b1626cc..239467e 100644
--- a/src/main/java/org/codehaus/groovy/runtime/Reflector.java
+++ b/src/main/java/org/codehaus/groovy/runtime/Reflector.java
@@ -24,8 +24,6 @@ import org.codehaus.groovy.reflection.CachedMethod;
 
 /**
  * Provides as alternative to reflection using bytecode generation.
- * 
- * @author <a href="mailto:james@coredevelopers.net">James Strachan</a>
  */
 public class Reflector {
 
diff --git a/src/main/java/org/codehaus/groovy/runtime/ResourceGroovyMethods.java b/src/main/java/org/codehaus/groovy/runtime/ResourceGroovyMethods.java
index a47adab..3bdcb19 100644
--- a/src/main/java/org/codehaus/groovy/runtime/ResourceGroovyMethods.java
+++ b/src/main/java/org/codehaus/groovy/runtime/ResourceGroovyMethods.java
@@ -85,34 +85,6 @@ import static org.codehaus.groovy.runtime.DefaultGroovyMethods.get;
  * at the Java method call level. I.e. future versions of Groovy may
  * remove or move a method call in this file but would normally
  * aim to keep the method available from within Groovy.
- *
- * @author <a href="mailto:james@coredevelopers.net">James Strachan</a>
- * @author Jeremy Rayner
- * @author Sam Pullara
- * @author Rod Cope
- * @author Guillaume Laforge
- * @author John Wilson
- * @author Hein Meling
- * @author Dierk Koenig
- * @author Pilho Kim
- * @author Marc Guillemot
- * @author Russel Winder
- * @author bing ran
- * @author Jochen Theodorou
- * @author Paul King
- * @author Michael Baehr
- * @author Joachim Baumann
- * @author Alex Tkachman
- * @author Ted Naleid
- * @author Brad Long
- * @author Jim Jagielski
- * @author Rodolfo Velasco
- * @author jeremi Joslin
- * @author Hamlet D'Arcy
- * @author Cedric Champeau
- * @author Tim Yates
- * @author Dinko Srkoc
- * @author Sergei Egorov
  */
 public class ResourceGroovyMethods extends DefaultGroovyMethodsSupport {
 
@@ -132,13 +104,11 @@ public class ResourceGroovyMethods extends DefaultGroovyMethodsSupport {
      *
      * @param self a file object
      * @return directory size (length)
-     * @since 2.1
-     *
-     * @throws IOException if File object specified does not exist
+     * @throws IOException              if File object specified does not exist
      * @throws IllegalArgumentException if the provided File object does not represent a directory
+     * @since 2.1
      */
-    public static long directorySize(File self) throws IOException, IllegalArgumentException
-    {
+    public static long directorySize(File self) throws IOException, IllegalArgumentException {
         final long[] size = {0L};
 
         eachFileRecurse(self, FileType.FILES, new Closure<Void>(null) {
@@ -176,7 +146,7 @@ public class ResourceGroovyMethods extends DefaultGroovyMethodsSupport {
      * @see IOGroovyMethods#withStream(java.io.OutputStream, groovy.lang.Closure)
      * @since 1.5.0
      */
-    public static <T> T withObjectOutputStream(File file, @ClosureParams(value=SimpleType.class, options="java.io.ObjectOutputStream") Closure<T> closure) throws IOException {
+    public static <T> T withObjectOutputStream(File file, @ClosureParams(value = SimpleType.class, options = "java.io.ObjectOutputStream") Closure<T> closure) throws IOException {
         return IOGroovyMethods.withStream(newObjectOutputStream(file), closure);
     }
 
@@ -230,7 +200,7 @@ public class ResourceGroovyMethods extends DefaultGroovyMethodsSupport {
      * @see IOGroovyMethods#withStream(java.io.InputStream, groovy.lang.Closure)
      * @since 1.5.2
      */
-    public static <T> T withObjectInputStream(File file, @ClosureParams(value=SimpleType.class, options="java.io.ObjectInputStream") Closure<T> closure) throws IOException {
+    public static <T> T withObjectInputStream(File file, @ClosureParams(value = SimpleType.class, options = "java.io.ObjectInputStream") Closure<T> closure) throws IOException {
         return IOGroovyMethods.withStream(newObjectInputStream(file), closure);
     }
 
@@ -246,7 +216,7 @@ public class ResourceGroovyMethods extends DefaultGroovyMethodsSupport {
      * @see IOGroovyMethods#withStream(java.io.InputStream, groovy.lang.Closure)
      * @since 1.5.2
      */
-    public static <T> T withObjectInputStream(File file, ClassLoader classLoader, @ClosureParams(value=SimpleType.class, options="java.io.ObjectInputStream") Closure<T> closure) throws IOException {
+    public static <T> T withObjectInputStream(File file, ClassLoader classLoader, @ClosureParams(value = SimpleType.class, options = "java.io.ObjectInputStream") Closure<T> closure) throws IOException {
         return IOGroovyMethods.withStream(newObjectInputStream(file, classLoader), closure);
     }
 
@@ -262,7 +232,7 @@ public class ResourceGroovyMethods extends DefaultGroovyMethodsSupport {
      * @see #eachLine(java.io.File, int, groovy.lang.Closure)
      * @since 1.5.5
      */
-    public static <T> T eachLine(File self, @ClosureParams(value=FromString.class,options={"String","String,Integer"}) Closure<T> closure) throws IOException {
+    public static <T> T eachLine(File self, @ClosureParams(value = FromString.class, options = {"String", "String,Integer"}) Closure<T> closure) throws IOException {
         return eachLine(self, 1, closure);
     }
 
@@ -279,7 +249,7 @@ public class ResourceGroovyMethods extends DefaultGroovyMethodsSupport {
      * @see #eachLine(java.io.File, java.lang.String, int, groovy.lang.Closure)
      * @since 1.6.8
      */
-    public static <T> T eachLine(File self, String charset, @ClosureParams(value=FromString.class,options={"String","String,Integer"}) Closure<T> closure) throws IOException {
+    public static <T> T eachLine(File self, String charset, @ClosureParams(value = FromString.class, options = {"String", "String,Integer"}) Closure<T> closure) throws IOException {
         return eachLine(self, charset, 1, closure);
     }
 
@@ -296,7 +266,7 @@ public class ResourceGroovyMethods extends DefaultGroovyMethodsSupport {
      * @see IOGroovyMethods#eachLine(java.io.Reader, int, groovy.lang.Closure)
      * @since 1.5.7
      */
-    public static <T> T eachLine(File self, int firstLine, @ClosureParams(value=FromString.class,options={"String","String,Integer"}) Closure<T> closure) throws IOException {
+    public static <T> T eachLine(File self, int firstLine, @ClosureParams(value = FromString.class, options = {"String", "String,Integer"}) Closure<T> closure) throws IOException {
         return IOGroovyMethods.eachLine(newReader(self), firstLine, closure);
     }
 
@@ -314,7 +284,7 @@ public class ResourceGroovyMethods extends DefaultGroovyMethodsSupport {
      * @see IOGroovyMethods#eachLine(java.io.Reader, int, groovy.lang.Closure)
      * @since 1.6.8
      */
-    public static <T> T eachLine(File self, String charset, int firstLine, @ClosureParams(value=FromString.class,options={"String","String,Integer"}) Closure<T> closure) throws IOException {
+    public static <T> T eachLine(File self, String charset, int firstLine, @ClosureParams(value = FromString.class, options = {"String", "String,Integer"}) Closure<T> closure) throws IOException {
         return IOGroovyMethods.eachLine(newReader(self, charset), firstLine, closure);
     }
 
@@ -329,7 +299,7 @@ public class ResourceGroovyMethods extends DefaultGroovyMethodsSupport {
      * @see #eachLine(java.net.URL, int, groovy.lang.Closure)
      * @since 1.5.6
      */
-    public static <T> T eachLine(URL url, @ClosureParams(value=FromString.class,options={"String","String,Integer"}) Closure<T> closure) throws IOException {
+    public static <T> T eachLine(URL url, @ClosureParams(value = FromString.class, options = {"String", "String,Integer"}) Closure<T> closure) throws IOException {
         return eachLine(url, 1, closure);
     }
 
@@ -345,7 +315,7 @@ public class ResourceGroovyMethods extends DefaultGroovyMethodsSupport {
      * @see IOGroovyMethods#eachLine(java.io.InputStream, int, groovy.lang.Closure)
      * @since 1.5.7
      */
-    public static <T> T eachLine(URL url, int firstLine, @ClosureParams(value=FromString.class,options={"String","String,Integer"}) Closure<T> closure) throws IOException {
+    public static <T> T eachLine(URL url, int firstLine, @ClosureParams(value = FromString.class, options = {"String", "String,Integer"}) Closure<T> closure) throws IOException {
         return IOGroovyMethods.eachLine(url.openConnection().getInputStream(), firstLine, closure);
     }
 
@@ -361,7 +331,7 @@ public class ResourceGroovyMethods extends DefaultGroovyMethodsSupport {
      * @see #eachLine(java.net.URL, java.lang.String, int, groovy.lang.Closure)
      * @since 1.5.6
      */
-    public static <T> T eachLine(URL url, String charset, @ClosureParams(value=FromString.class,options={"String","String,Integer"}) Closure<T> closure) throws IOException {
+    public static <T> T eachLine(URL url, String charset, @ClosureParams(value = FromString.class, options = {"String", "String,Integer"}) Closure<T> closure) throws IOException {
         return eachLine(url, charset, 1, closure);
     }
 
@@ -378,7 +348,7 @@ public class ResourceGroovyMethods extends DefaultGroovyMethodsSupport {
      * @see IOGroovyMethods#eachLine(java.io.Reader, int, groovy.lang.Closure)
      * @since 1.5.7
      */
-    public static <T> T eachLine(URL url, String charset, int firstLine, @ClosureParams(value=FromString.class,options={"String","String,Integer"}) Closure<T> closure) throws IOException {
+    public static <T> T eachLine(URL url, String charset, int firstLine, @ClosureParams(value = FromString.class, options = {"String", "String,Integer"}) Closure<T> closure) throws IOException {
         return IOGroovyMethods.eachLine(newReader(url, charset), firstLine, closure);
     }
 
@@ -393,13 +363,12 @@ public class ResourceGroovyMethods extends DefaultGroovyMethodsSupport {
      * @param regex   the delimiting regular expression
      * @param closure a closure
      * @return the last value returned by the closure
-     * @throws IOException if an IOException occurs.
-     * @throws java.util.regex.PatternSyntaxException
-     *                     if the regular expression's syntax is invalid
+     * @throws IOException                            if an IOException occurs.
+     * @throws java.util.regex.PatternSyntaxException if the regular expression's syntax is invalid
      * @see IOGroovyMethods#splitEachLine(java.io.Reader, java.lang.String, groovy.lang.Closure)
      * @since 1.5.5
      */
-    public static <T> T splitEachLine(File self, String regex, @ClosureParams(value=FromString.class,options={"List<String>","String[]"},conflictResolutionStrategy=PickFirstResolver.class) Closure<T> closure) throws IOException {
+    public static <T> T splitEachLine(File self, String regex, @ClosureParams(value = FromString.class, options = {"List<String>", "String[]"}, conflictResolutionStrategy = PickFirstResolver.class) Closure<T> closure) throws IOException {
         return IOGroovyMethods.splitEachLine(newReader(self), regex, closure);
     }
 
@@ -418,7 +387,7 @@ public class ResourceGroovyMethods extends DefaultGroovyMethodsSupport {
      * @see IOGroovyMethods#splitEachLine(java.io.Reader, java.util.regex.Pattern, groovy.lang.Closure)
      * @since 1.6.8
      */
-    public static <T> T splitEachLine(File self, Pattern pattern, @ClosureParams(value=FromString.class,options={"List<String>","String[]"},conflictResolutionStrategy=PickFirstResolver.class) Closure<T> closure) throws IOException {
+    public static <T> T splitEachLine(File self, Pattern pattern, @ClosureParams(value = FromString.class, options = {"List<String>", "String[]"}, conflictResolutionStrategy = PickFirstResolver.class) Closure<T> closure) throws IOException {
         return IOGroovyMethods.splitEachLine(newReader(self), pattern, closure);
     }
 
@@ -434,13 +403,12 @@ public class ResourceGroovyMethods extends DefaultGroovyMethodsSupport {
      * @param charset opens the file with a specified charset
      * @param closure a closure
      * @return the last value returned by the closure
-     * @throws IOException if an IOException occurs.
-     * @throws java.util.regex.PatternSyntaxException
-     *                     if the regular expression's syntax is invalid
+     * @throws IOException                            if an IOException occurs.
+     * @throws java.util.regex.PatternSyntaxException if the regular expression's syntax is invalid
      * @see IOGroovyMethods#splitEachLine(java.io.Reader, java.lang.String, groovy.lang.Closure)
      * @since 1.6.8
      */
-    public static <T> T splitEachLine(File self, String regex, String charset, @ClosureParams(value=FromString.class,options={"List<String>","String[]"},conflictResolutionStrategy=PickFirstResolver.class) Closure<T> closure) throws IOException {
+    public static <T> T splitEachLine(File self, String regex, String charset, @ClosureParams(value = FromString.class, options = {"List<String>", "String[]"}, conflictResolutionStrategy = PickFirstResolver.class) Closure<T> closure) throws IOException {
         return IOGroovyMethods.splitEachLine(newReader(self, charset), regex, closure);
     }
 
@@ -460,7 +428,7 @@ public class ResourceGroovyMethods extends DefaultGroovyMethodsSupport {
      * @see IOGroovyMethods#splitEachLine(java.io.Reader, java.util.regex.Pattern, groovy.lang.Closure)
      * @since 1.6.8
      */
-    public static <T> T splitEachLine(File self, Pattern pattern, String charset, @ClosureParams(value=FromString.class,options={"List<String>","String[]"},conflictResolutionStrategy=PickFirstResolver.class) Closure<T> closure) throws IOException {
+    public static <T> T splitEachLine(File self, Pattern pattern, String charset, @ClosureParams(value = FromString.class, options = {"List<String>", "String[]"}, conflictResolutionStrategy = PickFirstResolver.class) Closure<T> closure) throws IOException {
         return IOGroovyMethods.splitEachLine(newReader(self, charset), pattern, closure);
     }
 
@@ -475,13 +443,12 @@ public class ResourceGroovyMethods extends DefaultGroovyMethodsSupport {
      * @param regex   the delimiting regular expression
      * @param closure a closure
      * @return the last value returned by the closure
-     * @throws IOException if an IOException occurs.
-     * @throws java.util.regex.PatternSyntaxException
-     *                     if the regular expression's syntax is invalid
+     * @throws IOException                            if an IOException occurs.
+     * @throws java.util.regex.PatternSyntaxException if the regular expression's syntax is invalid
      * @see IOGroovyMethods#splitEachLine(java.io.Reader, java.lang.String, groovy.lang.Closure)
      * @since 1.6.8
      */
-    public static <T> T splitEachLine(URL self, String regex, @ClosureParams(value=FromString.class,options={"List<String>","String[]"},conflictResolutionStrategy=PickFirstResolver.class) Closure<T> closure) throws IOException {
+    public static <T> T splitEachLine(URL self, String regex, @ClosureParams(value = FromString.class, options = {"List<String>", "String[]"}, conflictResolutionStrategy = PickFirstResolver.class) Closure<T> closure) throws IOException {
         return IOGroovyMethods.splitEachLine(newReader(self), regex, closure);
     }
 
@@ -500,7 +467,7 @@ public class ResourceGroovyMethods extends DefaultGroovyMethodsSupport {
      * @see IOGroovyMethods#splitEachLine(java.io.Reader, java.util.regex.Pattern, groovy.lang.Closure)
      * @since 1.6.8
      */
-    public static <T> T splitEachLine(URL self, Pattern pattern, @ClosureParams(value=FromString.class,options={"List<String>","String[]"},conflictResolutionStrategy=PickFirstResolver.class) Closure<T> closure) throws IOException {
+    public static <T> T splitEachLine(URL self, Pattern pattern, @ClosureParams(value = FromString.class, options = {"List<String>", "String[]"}, conflictResolutionStrategy = PickFirstResolver.class) Closure<T> closure) throws IOException {
         return IOGroovyMethods.splitEachLine(newReader(self), pattern, closure);
     }
 
@@ -516,13 +483,12 @@ public class ResourceGroovyMethods extends DefaultGroovyMethodsSupport {
      * @param charset opens the file with a specified charset
      * @param closure a closure
      * @return the last value returned by the closure
-     * @throws IOException if an IOException occurs.
-     * @throws java.util.regex.PatternSyntaxException
-     *                     if the regular expression's syntax is invalid
+     * @throws IOException                            if an IOException occurs.
+     * @throws java.util.regex.PatternSyntaxException if the regular expression's syntax is invalid
      * @see IOGroovyMethods#splitEachLine(java.io.Reader, java.lang.String, groovy.lang.Closure)
      * @since 1.6.8
      */
-    public static <T> T splitEachLine(URL self, String regex, String charset, @ClosureParams(value=FromString.class,options={"List<String>","String[]"},conflictResolutionStrategy=PickFirstResolver.class) Closure<T> closure) throws IOException {
+    public static <T> T splitEachLine(URL self, String regex, String charset, @ClosureParams(value = FromString.class, options = {"List<String>", "String[]"}, conflictResolutionStrategy = PickFirstResolver.class) Closure<T> closure) throws IOException {
         return IOGroovyMethods.splitEachLine(newReader(self, charset), regex, closure);
     }
 
@@ -542,7 +508,7 @@ public class ResourceGroovyMethods extends DefaultGroovyMethodsSupport {
      * @see IOGroovyMethods#splitEachLine(java.io.Reader, java.util.regex.Pattern, groovy.lang.Closure)
      * @since 1.6.8
      */
-    public static <T> T splitEachLine(URL self, Pattern pattern, String charset, @ClosureParams(value=FromString.class,options={"List<String>","String[]"},conflictResolutionStrategy=PickFirstResolver.class) Closure<T> closure) throws IOException {
+    public static <T> T splitEachLine(URL self, Pattern pattern, String charset, @ClosureParams(value = FromString.class, options = {"List<String>", "String[]"}, conflictResolutionStrategy = PickFirstResolver.class) Closure<T> closure) throws IOException {
         return IOGroovyMethods.splitEachLine(newReader(self, charset), pattern, closure);
     }
 
@@ -934,7 +900,7 @@ public class ResourceGroovyMethods extends DefaultGroovyMethodsSupport {
     /**
      * Append the text supplied by the Writer at the end of the File without writing a BOM.
      *
-     * @param file a File
+     * @param file   a File
      * @param reader the Reader supplying the text to append at the end of the File
      * @throws IOException if an IOException occurs.
      * @since 2.3
@@ -946,13 +912,13 @@ public class ResourceGroovyMethods extends DefaultGroovyMethodsSupport {
     /**
      * Append the text supplied by the Writer at the end of the File without writing a BOM.
      *
-     * @param file a File
+     * @param file   a File
      * @param writer the Writer supplying the text to append at the end of the File
      * @throws IOException if an IOException occurs.
      * @since 2.3
      */
     public static void append(File file, Writer writer) throws IOException {
-         append(file, writer, false);
+        append(file, writer, false);
     }
 
     /**
@@ -1101,9 +1067,9 @@ public class ResourceGroovyMethods extends DefaultGroovyMethodsSupport {
      * exist, the requisite byte order mark is written to the file before the
      * text is appended.
      *
-     * @param file    a File
-     * @param writer  the Writer supplying the text to append at the end of the File
-     * @param charset the charset used
+     * @param file     a File
+     * @param writer   the Writer supplying the text to append at the end of the File
+     * @param charset  the charset used
      * @param writeBom whether to write a BOM
      * @throws IOException if an IOException occurs.
      * @since 2.5.0
@@ -1119,8 +1085,8 @@ public class ResourceGroovyMethods extends DefaultGroovyMethodsSupport {
      * exist, the requisite byte order mark is written to the file before the
      * text is appended.
      *
-     * @param file    a File
-     * @param reader  the Reader supplying the text to append at the end of the File
+     * @param file     a File
+     * @param reader   the Reader supplying the text to append at the end of the File
      * @param writeBom whether to write a BOM
      * @throws IOException if an IOException occurs.
      * @since 2.5.0
@@ -1150,9 +1116,9 @@ public class ResourceGroovyMethods extends DefaultGroovyMethodsSupport {
      * exist, the requisite byte order mark is written to the file before the
      * text is appended.
      *
-     * @param file    a File
-     * @param reader  the Reader supplying the text to append at the end of the File
-     * @param charset the charset used
+     * @param file     a File
+     * @param reader   the Reader supplying the text to append at the end of the File
+     * @param charset  the charset used
      * @param writeBom whether to write a BOM
      * @throws IOException if an IOException occurs.
      * @since 2.5.0
@@ -1208,7 +1174,7 @@ public class ResourceGroovyMethods extends DefaultGroovyMethodsSupport {
      * @throws IllegalArgumentException if the provided File object does not represent a directory
      * @since 1.7.1
      */
-    public static void eachFile(final File self, final FileType fileType, @ClosureParams(value=SimpleType.class,options="java.io.File") final Closure closure)
+    public static void eachFile(final File self, final FileType fileType, @ClosureParams(value = SimpleType.class, options = "java.io.File") final Closure closure)
             throws FileNotFoundException, IllegalArgumentException {
         checkDir(self);
         final File[] files = self.listFiles();
@@ -1235,7 +1201,7 @@ public class ResourceGroovyMethods extends DefaultGroovyMethodsSupport {
      * @see #eachFile(java.io.File, groovy.io.FileType, groovy.lang.Closure)
      * @since 1.5.0
      */
-    public static void eachFile(final File self, @ClosureParams(value=SimpleType.class,options="java.io.File") final Closure closure) throws FileNotFoundException, IllegalArgumentException {
+    public static void eachFile(final File self, @ClosureParams(value = SimpleType.class, options = "java.io.File") final Closure closure) throws FileNotFoundException, IllegalArgumentException {
         eachFile(self, FileType.ANY, closure);
     }
 
@@ -1251,7 +1217,7 @@ public class ResourceGroovyMethods extends DefaultGroovyMethodsSupport {
      * @see #eachFile(java.io.File, groovy.io.FileType, groovy.lang.Closure)
      * @since 1.0
      */
-    public static void eachDir(File self, @ClosureParams(value=SimpleType.class,options="java.io.File") Closure closure) throws FileNotFoundException, IllegalArgumentException {
+    public static void eachDir(File self, @ClosureParams(value = SimpleType.class, options = "java.io.File") Closure closure) throws FileNotFoundException, IllegalArgumentException {
         eachFile(self, FileType.DIRECTORIES, closure);
     }
 
@@ -1269,7 +1235,7 @@ public class ResourceGroovyMethods extends DefaultGroovyMethodsSupport {
      * @throws IllegalArgumentException if the provided File object does not represent a directory
      * @since 1.7.1
      */
-    public static void eachFileRecurse(final File self, final FileType fileType, @ClosureParams(value=SimpleType.class,options="java.io.File") final Closure closure)
+    public static void eachFileRecurse(final File self, final FileType fileType, @ClosureParams(value = SimpleType.class, options = "java.io.File") final Closure closure)
             throws FileNotFoundException, IllegalArgumentException {
         checkDir(self);
         final File[] files = self.listFiles();
@@ -1290,7 +1256,7 @@ public class ResourceGroovyMethods extends DefaultGroovyMethodsSupport {
      * Processing consists of potentially calling <code>closure</code> passing it the current
      * file (which may be a normal file or subdirectory) and then if a subdirectory was encountered,
      * recursively processing the subdirectory.
-     *
+     * <p>
      * The traversal can be adapted by providing various options in the <code>options</code> Map according
      * to the following keys:<dl>
      * <dt>type</dt><dd>A {@link groovy.io.FileType} enum to determine if normal files or directories or both are processed</dd>
@@ -1344,7 +1310,7 @@ public class ResourceGroovyMethods extends DefaultGroovyMethodsSupport {
      * @see groovy.io.FileType
      * @since 1.7.1
      */
-    public static void traverse(final File self, final Map<String, Object> options, @ClosureParams(value=SimpleType.class, options="java.io.File") final Closure closure)
+    public static void traverse(final File self, final Map<String, Object> options, @ClosureParams(value = SimpleType.class, options = "java.io.File") final Closure closure)
             throws FileNotFoundException, IllegalArgumentException {
         Number maxDepthNumber = DefaultGroovyMethods.asType(options.remove("maxDepth"), Number.class);
         int maxDepth = maxDepthNumber == null ? -1 : maxDepthNumber.intValue();
@@ -1421,7 +1387,7 @@ public class ResourceGroovyMethods extends DefaultGroovyMethodsSupport {
      * @see #traverse(java.io.File, java.util.Map, groovy.lang.Closure)
      * @since 1.7.1
      */
-    public static void traverse(final File self, @ClosureParams(value=SimpleType.class, options="java.io.File") final Closure closure)
+    public static void traverse(final File self, @ClosureParams(value = SimpleType.class, options = "java.io.File") final Closure closure)
             throws FileNotFoundException, IllegalArgumentException {
         traverse(self, new HashMap<String, Object>(), closure);
     }
@@ -1461,7 +1427,7 @@ public class ResourceGroovyMethods extends DefaultGroovyMethodsSupport {
         // null check because of http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4803836
         if (origFiles != null) {
             List<File> files = Arrays.asList(origFiles);
-            if (sort != null) files = DefaultGroovyMethods.sort((Iterable<File>)files, sort);
+            if (sort != null) files = DefaultGroovyMethods.sort((Iterable<File>) files, sort);
             for (File file : files) {
                 if (file.isDirectory()) {
                     if (type != FileType.FILES) {
@@ -1514,7 +1480,7 @@ public class ResourceGroovyMethods extends DefaultGroovyMethodsSupport {
      * @see #eachFileRecurse(java.io.File, groovy.io.FileType, groovy.lang.Closure)
      * @since 1.0
      */
-    public static void eachFileRecurse(File self, @ClosureParams(value=SimpleType.class,options="java.io.File") Closure closure) throws FileNotFoundException, IllegalArgumentException {
+    public static void eachFileRecurse(File self, @ClosureParams(value = SimpleType.class, options = "java.io.File") Closure closure) throws FileNotFoundException, IllegalArgumentException {
         eachFileRecurse(self, FileType.ANY, closure);
     }
 
@@ -1531,7 +1497,7 @@ public class ResourceGroovyMethods extends DefaultGroovyMethodsSupport {
      * @see #eachFileRecurse(java.io.File, groovy.io.FileType, groovy.lang.Closure)
      * @since 1.5.0
      */
-    public static void eachDirRecurse(final File self, @ClosureParams(value=SimpleType.class,options="java.io.File") final Closure closure) throws FileNotFoundException, IllegalArgumentException {
+    public static void eachDirRecurse(final File self, @ClosureParams(value = SimpleType.class, options = "java.io.File") final Closure closure) throws FileNotFoundException, IllegalArgumentException {
         eachFileRecurse(self, FileType.DIRECTORIES, closure);
     }
 
@@ -1563,7 +1529,7 @@ public class ResourceGroovyMethods extends DefaultGroovyMethodsSupport {
      * @throws IllegalArgumentException if the provided File object does not represent a directory
      * @since 1.7.1
      */
-    public static void eachFileMatch(final File self, final FileType fileType, final Object nameFilter, @ClosureParams(value=SimpleType.class,options="java.io.File") final Closure closure)
+    public static void eachFileMatch(final File self, final FileType fileType, final Object nameFilter, @ClosureParams(value = SimpleType.class, options = "java.io.File") final Closure closure)
             throws FileNotFoundException, IllegalArgumentException {
         checkDir(self);
         final File[] files = self.listFiles();
@@ -1594,7 +1560,7 @@ public class ResourceGroovyMethods extends DefaultGroovyMethodsSupport {
      * @see #eachFileMatch(java.io.File, groovy.io.FileType, java.lang.Object, groovy.lang.Closure)
      * @since 1.5.0
      */
-    public static void eachFileMatch(final File self, final Object nameFilter, @ClosureParams(value=SimpleType.class,options="java.io.File") final Closure closure)
+    public static void eachFileMatch(final File self, final Object nameFilter, @ClosureParams(value = SimpleType.class, options = "java.io.File") final Closure closure)
             throws FileNotFoundException, IllegalArgumentException {
         eachFileMatch(self, FileType.ANY, nameFilter, closure);
     }
@@ -1613,7 +1579,7 @@ public class ResourceGroovyMethods extends DefaultGroovyMethodsSupport {
      * @see #eachFileMatch(java.io.File, groovy.io.FileType, java.lang.Object, groovy.lang.Closure)
      * @since 1.5.0
      */
-    public static void eachDirMatch(final File self, final Object nameFilter, @ClosureParams(value=SimpleType.class,options="java.io.File") final Closure closure) throws FileNotFoundException, IllegalArgumentException {
+    public static void eachDirMatch(final File self, final Object nameFilter, @ClosureParams(value = SimpleType.class, options = "java.io.File") final Closure closure) throws FileNotFoundException, IllegalArgumentException {
         eachFileMatch(self, FileType.DIRECTORIES, nameFilter, closure);
     }
 
@@ -1627,7 +1593,6 @@ public class ResourceGroovyMethods extends DefaultGroovyMethodsSupport {
      * <li>false, when directory couldn't be deleted</li>
      * </ul>
      *
-     *
      * @param self a File
      * @return true if the file doesn't exist or deletion was successful
      * @since 1.6.0
@@ -1668,7 +1633,7 @@ public class ResourceGroovyMethods extends DefaultGroovyMethodsSupport {
      * @param self        a File
      * @param newPathName The new pathname for the named file
      * @return <code>true</code> if and only if the renaming succeeded;
-     *         <code>false</code> otherwise
+     * <code>false</code> otherwise
      * @since 1.7.4
      */
     public static boolean renameTo(final File self, String newPathName) {
@@ -1678,8 +1643,8 @@ public class ResourceGroovyMethods extends DefaultGroovyMethodsSupport {
     /**
      * Relative path to file.
      *
-     * @param self  the <code>File</code> to calculate the path from
-     * @param to    the <code>File</code> to calculate the path to
+     * @param self the <code>File</code> to calculate the path from
+     * @param to   the <code>File</code> to calculate the path to
      * @return the relative path between the files
      */
     public static String relativePath(File self, File to) throws IOException {
@@ -1804,7 +1769,7 @@ public class ResourceGroovyMethods extends DefaultGroovyMethodsSupport {
      * @throws IOException if an IOException occurs.
      * @since 1.5.2
      */
-    public static <T> T withReader(File file, @ClosureParams(value=SimpleType.class, options="java.io.BufferedReader") Closure<T> closure) throws IOException {
+    public static <T> T withReader(File file, @ClosureParams(value = SimpleType.class, options = "java.io.BufferedReader") Closure<T> closure) throws IOException {
         return IOGroovyMethods.withReader(newReader(file), closure);
     }
 
@@ -1820,7 +1785,7 @@ public class ResourceGroovyMethods extends DefaultGroovyMethodsSupport {
      * @throws IOException if an IOException occurs.
      * @since 1.6.0
      */
-    public static <T> T withReader(File file, String charset, @ClosureParams(value=SimpleType.class, options="java.io.BufferedReader") Closure<T> closure) throws IOException {
+    public static <T> T withReader(File file, String charset, @ClosureParams(value = SimpleType.class, options = "java.io.BufferedReader") Closure<T> closure) throws IOException {
         return IOGroovyMethods.withReader(newReader(file, charset), closure);
     }
 
@@ -1859,7 +1824,7 @@ public class ResourceGroovyMethods extends DefaultGroovyMethodsSupport {
      * @see IOGroovyMethods#withStream(java.io.OutputStream, groovy.lang.Closure)
      * @since 1.5.2
      */
-    public static Object withOutputStream(File file, @ClosureParams(value=SimpleType.class, options="java.io.OutputStream") Closure closure) throws IOException {
+    public static Object withOutputStream(File file, @ClosureParams(value = SimpleType.class, options = "java.io.OutputStream") Closure closure) throws IOException {
         return IOGroovyMethods.withStream(newOutputStream(file), closure);
     }
 
@@ -1874,7 +1839,7 @@ public class ResourceGroovyMethods extends DefaultGroovyMethodsSupport {
      * @see IOGroovyMethods#withStream(java.io.InputStream, groovy.lang.Closure)
      * @since 1.5.2
      */
-    public static Object withInputStream(File file, @ClosureParams(value=SimpleType.class, options="java.io.InputStream") Closure closure) throws IOException {
+    public static Object withInputStream(File file, @ClosureParams(value = SimpleType.class, options = "java.io.InputStream") Closure closure) throws IOException {
         return IOGroovyMethods.withStream(newInputStream(file), closure);
     }
 
@@ -1889,7 +1854,7 @@ public class ResourceGroovyMethods extends DefaultGroovyMethodsSupport {
      * @see IOGroovyMethods#withStream(java.io.InputStream, groovy.lang.Closure)
      * @since 1.5.2
      */
-    public static <T> T withInputStream(URL url, @ClosureParams(value=SimpleType.class, options="java.io.InputStream") Closure<T> closure) throws IOException {
+    public static <T> T withInputStream(URL url, @ClosureParams(value = SimpleType.class, options = "java.io.InputStream") Closure<T> closure) throws IOException {
         return IOGroovyMethods.withStream(newInputStream(url), closure);
     }
 
@@ -1904,7 +1869,7 @@ public class ResourceGroovyMethods extends DefaultGroovyMethodsSupport {
      * @see IOGroovyMethods#withStream(java.io.OutputStream, groovy.lang.Closure)
      * @since 1.5.2
      */
-    public static <T> T withDataOutputStream(File file, @ClosureParams(value=SimpleType.class, options="java.io.DataOutputStream") Closure<T> closure) throws IOException {
+    public static <T> T withDataOutputStream(File file, @ClosureParams(value = SimpleType.class, options = "java.io.DataOutputStream") Closure<T> closure) throws IOException {
         return IOGroovyMethods.withStream(newDataOutputStream(file), closure);
     }
 
@@ -1919,7 +1884,7 @@ public class ResourceGroovyMethods extends DefaultGroovyMethodsSupport {
      * @see IOGroovyMethods#withStream(java.io.InputStream, groovy.lang.Closure)
      * @since 1.5.2
      */
-    public static <T> T withDataInputStream(File file, @ClosureParams(value=SimpleType.class, options="java.io.DataInputStream") Closure<T> closure) throws IOException {
+    public static <T> T withDataInputStream(File file, @ClosureParams(value = SimpleType.class, options = "java.io.DataInputStream") Closure<T> closure) throws IOException {
         return IOGroovyMethods.withStream(newDataInputStream(file), closure);
     }
 
@@ -1969,9 +1934,9 @@ public class ResourceGroovyMethods extends DefaultGroovyMethodsSupport {
      * requisite byte order mark is written to the stream before the writer
      * is returned.
      *
-     * @param file    a File
-     * @param charset the name of the encoding used to write in this file
-     * @param append  true if in append mode
+     * @param file     a File
+     * @param charset  the name of the encoding used to write in this file
+     * @param append   true if in append mode
      * @param writeBom whether to write a BOM
      * @return a BufferedWriter
      * @throws IOException if an IOException occurs.
@@ -2018,7 +1983,7 @@ public class ResourceGroovyMethods extends DefaultGroovyMethodsSupport {
      * @throws IOException if an IOException occurs.
      * @since 1.5.2
      */
-    public static <T> T withWriter(File file, @ClosureParams(value=SimpleType.class, options="java.io.BufferedWriter") Closure<T> closure) throws IOException {
+    public static <T> T withWriter(File file, @ClosureParams(value = SimpleType.class, options = "java.io.BufferedWriter") Closure<T> closure) throws IOException {
         return IOGroovyMethods.withWriter(newWriter(file), closure);
     }
 
@@ -2036,7 +2001,7 @@ public class ResourceGroovyMethods extends DefaultGroovyMethodsSupport {
      * @throws IOException if an IOException occurs.
      * @since 1.5.2
      */
-    public static <T> T withWriter(File file, String charset, @ClosureParams(value=SimpleType.class, options="java.io.BufferedWriter") Closure<T> closure) throws IOException {
+    public static <T> T withWriter(File file, String charset, @ClosureParams(value = SimpleType.class, options = "java.io.BufferedWriter") Closure<T> closure) throws IOException {
         return IOGroovyMethods.withWriter(newWriter(file, charset), closure);
     }
 
@@ -2054,7 +2019,7 @@ public class ResourceGroovyMethods extends DefaultGroovyMethodsSupport {
      * @throws IOException if an IOException occurs.
      * @since 1.5.2
      */
-    public static <T> T withWriterAppend(File file, String charset, @ClosureParams(value=SimpleType.class, options="java.io.BufferedWriter") Closure<T> closure) throws IOException {
+    public static <T> T withWriterAppend(File file, String charset, @ClosureParams(value = SimpleType.class, options = "java.io.BufferedWriter") Closure<T> closure) throws IOException {
         return IOGroovyMethods.withWriter(newWriter(file, charset, true), closure);
     }
 
@@ -2068,7 +2033,7 @@ public class ResourceGroovyMethods extends DefaultGroovyMethodsSupport {
      * @throws IOException if an IOException occurs.
      * @since 1.5.2
      */
-    public static <T> T withWriterAppend(File file, @ClosureParams(value=SimpleType.class, options="java.io.BufferedWriter") Closure<T> closure) throws IOException {
+    public static <T> T withWriterAppend(File file, @ClosureParams(value = SimpleType.class, options = "java.io.BufferedWriter") Closure<T> closure) throws IOException {
         return IOGroovyMethods.withWriter(newWriter(file, true), closure);
     }
 
@@ -2111,7 +2076,7 @@ public class ResourceGroovyMethods extends DefaultGroovyMethodsSupport {
      * @throws IOException if an IOException occurs.
      * @since 1.5.2
      */
-    public static <T> T withPrintWriter(File file, @ClosureParams(value=SimpleType.class, options="java.io.PrintWriter") Closure<T> closure) throws IOException {
+    public static <T> T withPrintWriter(File file, @ClosureParams(value = SimpleType.class, options = "java.io.PrintWriter") Closure<T> closure) throws IOException {
         return IOGroovyMethods.withWriter(newPrintWriter(file), closure);
     }
 
@@ -2129,7 +2094,7 @@ public class ResourceGroovyMethods extends DefaultGroovyMethodsSupport {
      * @throws IOException if an IOException occurs.
      * @since 1.5.2
      */
-    public static <T> T withPrintWriter(File file, String charset, @ClosureParams(value=SimpleType.class, options="java.io.PrintWriter") Closure<T> closure) throws IOException {
+    public static <T> T withPrintWriter(File file, String charset, @ClosureParams(value = SimpleType.class, options = "java.io.PrintWriter") Closure<T> closure) throws IOException {
         return IOGroovyMethods.withWriter(newPrintWriter(file, charset), closure);
     }
 
@@ -2143,7 +2108,7 @@ public class ResourceGroovyMethods extends DefaultGroovyMethodsSupport {
      * @throws IOException if an IOException occurs.
      * @since 1.5.2
      */
-    public static <T> T withReader(URL url, @ClosureParams(value=SimpleType.class, options="java.io.Reader") Closure<T> closure) throws IOException {
+    public static <T> T withReader(URL url, @ClosureParams(value = SimpleType.class, options = "java.io.Reader") Closure<T> closure) throws IOException {
         return IOGroovyMethods.withReader(url.openConnection().getInputStream(), closure);
     }
 
@@ -2158,7 +2123,7 @@ public class ResourceGroovyMethods extends DefaultGroovyMethodsSupport {
      * @throws IOException if an IOException occurs.
      * @since 1.5.6
      */
-    public static <T> T withReader(URL url, String charset, @ClosureParams(value=SimpleType.class, options="java.io.Reader") Closure<T> closure) throws IOException {
+    public static <T> T withReader(URL url, String charset, @ClosureParams(value = SimpleType.class, options = "java.io.Reader") Closure<T> closure) throws IOException {
         return IOGroovyMethods.withReader(url.openConnection().getInputStream(), charset, closure);
     }
 
@@ -2242,7 +2207,7 @@ public class ResourceGroovyMethods extends DefaultGroovyMethodsSupport {
      * <li>allowUserInteraction : set the user interaction flag for the URL connection</li>
      * <li>requestProperties : a map of properties to be passed to the URL connection</li>
      * </ul>
-     * 
+     *
      * @param url        a URL
      * @param parameters connection parameters
      * @return a BufferedInputStream for the URL
@@ -2340,7 +2305,7 @@ public class ResourceGroovyMethods extends DefaultGroovyMethodsSupport {
      * @see IOGroovyMethods#eachByte(java.io.InputStream, groovy.lang.Closure)
      * @since 1.0
      */
-    public static void eachByte(File self, @ClosureParams(value= SimpleType.class,options="byte") Closure closure) throws IOException {
+    public static void eachByte(File self, @ClosureParams(value = SimpleType.class, options = "byte") Closure closure) throws IOException {
         BufferedInputStream is = newInputStream(self);
         IOGroovyMethods.eachByte(is, closure);
     }
@@ -2355,7 +2320,7 @@ public class ResourceGroovyMethods extends DefaultGroovyMethodsSupport {
      * @see IOGroovyMethods#eachByte(java.io.InputStream, int, groovy.lang.Closure)
      * @since 1.7.4
      */
-    public static void eachByte(File self, int bufferLen, @ClosureParams(value= FromString.class,options="byte[],Integer") Closure closure) throws IOException {
+    public static void eachByte(File self, int bufferLen, @ClosureParams(value = FromString.class, options = "byte[],Integer") Closure closure) throws IOException {
         BufferedInputStream is = newInputStream(self);
         IOGroovyMethods.eachByte(is, bufferLen, closure);
     }
@@ -2370,7 +2335,7 @@ public class ResourceGroovyMethods extends DefaultGroovyMethodsSupport {
      * @see IOGroovyMethods#eachByte(java.io.InputStream, groovy.lang.Closure)
      * @since 1.0
      */
-    public static void eachByte(URL url, @ClosureParams(value= SimpleType.class,options="byte") Closure closure) throws IOException {
+    public static void eachByte(URL url, @ClosureParams(value = SimpleType.class, options = "byte") Closure closure) throws IOException {
         InputStream is = url.openConnection().getInputStream();
         IOGroovyMethods.eachByte(is, closure);
     }
@@ -2386,7 +2351,7 @@ public class ResourceGroovyMethods extends DefaultGroovyMethodsSupport {
      * @see IOGroovyMethods#eachByte(java.io.InputStream, int, groovy.lang.Closure)
      * @since 1.8
      */
-    public static void eachByte(URL url, int bufferLen, @ClosureParams(value= FromString.class,options="byte[],Integer") Closure closure) throws IOException {
+    public static void eachByte(URL url, int bufferLen, @ClosureParams(value = FromString.class, options = "byte[],Integer") Closure closure) throws IOException {
         InputStream is = url.openConnection().getInputStream();
         IOGroovyMethods.eachByte(is, bufferLen, closure);
     }
@@ -2403,7 +2368,7 @@ public class ResourceGroovyMethods extends DefaultGroovyMethodsSupport {
      * @see IOGroovyMethods#filterLine(java.io.Reader, groovy.lang.Closure)
      * @since 1.0
      */
-    public static Writable filterLine(File self, @ClosureParams(value=SimpleType.class, options="java.lang.String") Closure closure) throws IOException {
+    public static Writable filterLine(File self, @ClosureParams(value = SimpleType.class, options = "java.lang.String") Closure closure) throws IOException {
         return IOGroovyMethods.filterLine(newReader(self), closure);
     }
 
@@ -2420,7 +2385,7 @@ public class ResourceGroovyMethods extends DefaultGroovyMethodsSupport {
      * @see IOGroovyMethods#filterLine(java.io.Reader, groovy.lang.Closure)
      * @since 1.6.8
      */
-    public static Writable filterLine(File self, String charset, @ClosureParams(value=SimpleType.class, options="java.lang.String") Closure closure) throws IOException {
+    public static Writable filterLine(File self, String charset, @ClosureParams(value = SimpleType.class, options = "java.lang.String") Closure closure) throws IOException {
         return IOGroovyMethods.filterLine(newReader(self, charset), closure);
     }
 
@@ -2436,7 +2401,7 @@ public class ResourceGroovyMethods extends DefaultGroovyMethodsSupport {
      * @see IOGroovyMethods#filterLine(java.io.Reader, java.io.Writer, groovy.lang.Closure)
      * @since 1.0
      */
-    public static void filterLine(File self, Writer writer, @ClosureParams(value=SimpleType.class, options="java.lang.String") Closure closure) throws IOException {
+    public static void filterLine(File self, Writer writer, @ClosureParams(value = SimpleType.class, options = "java.lang.String") Closure closure) throws IOException {
         IOGroovyMethods.filterLine(newReader(self), writer, closure);
     }
 
@@ -2453,7 +2418,7 @@ public class ResourceGroovyMethods extends DefaultGroovyMethodsSupport {
      * @see IOGroovyMethods#filterLine(java.io.Reader, java.io.Writer, groovy.lang.Closure)
      * @since 1.6.8
      */
-    public static void filterLine(File self, Writer writer, String charset, @ClosureParams(value=SimpleType.class, options="java.lang.String") Closure closure) throws IOException {
+    public static void filterLine(File self, Writer writer, String charset, @ClosureParams(value = SimpleType.class, options = "java.lang.String") Closure closure) throws IOException {
         IOGroovyMethods.filterLine(newReader(self, charset), writer, closure);
     }
 
@@ -2469,7 +2434,7 @@ public class ResourceGroovyMethods extends DefaultGroovyMethodsSupport {
      * @see IOGroovyMethods#filterLine(java.io.Reader, groovy.lang.Closure)
      * @since 1.6.8
      */
-    public static Writable filterLine(URL self, @ClosureParams(value=SimpleType.class, options="java.lang.String") Closure predicate) throws IOException {
+    public static Writable filterLine(URL self, @ClosureParams(value = SimpleType.class, options = "java.lang.String") Closure predicate) throws IOException {
         return IOGroovyMethods.filterLine(newReader(self), predicate);
     }
 
@@ -2486,7 +2451,7 @@ public class ResourceGroovyMethods extends DefaultGroovyMethodsSupport {
      * @see IOGroovyMethods#filterLine(java.io.Reader, groovy.lang.Closure)
      * @since 1.6.8
      */
-    public static Writable filterLine(URL self, String charset, @ClosureParams(value=SimpleType.class, options="java.lang.String") Closure predicate) throws IOException {
+    public static Writable filterLine(URL self, String charset, @ClosureParams(value = SimpleType.class, options = "java.lang.String") Closure predicate) throws IOException {
         return IOGroovyMethods.filterLine(newReader(self, charset), predicate);
     }
 
@@ -2503,7 +2468,7 @@ public class ResourceGroovyMethods extends DefaultGroovyMethodsSupport {
      * @see IOGroovyMethods#filterLine(java.io.Reader, java.io.Writer, groovy.lang.Closure)
      * @since 1.6.8
      */
-    public static void filterLine(URL self, Writer writer, @ClosureParams(value=SimpleType.class, options="java.lang.String") Closure predicate) throws IOException {
+    public static void filterLine(URL self, Writer writer, @ClosureParams(value = SimpleType.class, options = "java.lang.String") Closure predicate) throws IOException {
         IOGroovyMethods.filterLine(newReader(self), writer, predicate);
     }
 
@@ -2521,7 +2486,7 @@ public class ResourceGroovyMethods extends DefaultGroovyMethodsSupport {
      * @see IOGroovyMethods#filterLine(java.io.Reader, java.io.Writer, groovy.lang.Closure)
      * @since 1.6.8
      */
-    public static void filterLine(URL self, Writer writer, String charset, @ClosureParams(value=SimpleType.class, options="java.lang.String") Closure predicate) throws IOException {
+    public static void filterLine(URL self, Writer writer, String charset, @ClosureParams(value = SimpleType.class, options = "java.lang.String") Closure predicate) throws IOException {
         IOGroovyMethods.filterLine(newReader(self, charset), writer, predicate);
     }
 
diff --git a/src/main/java/org/codehaus/groovy/runtime/ReverseListIterator.java b/src/main/java/org/codehaus/groovy/runtime/ReverseListIterator.java
index 4313397..6f312b8 100644
--- a/src/main/java/org/codehaus/groovy/runtime/ReverseListIterator.java
+++ b/src/main/java/org/codehaus/groovy/runtime/ReverseListIterator.java
@@ -28,8 +28,6 @@ import java.util.ListIterator;
  * {@link Iterator} that efficiently traverses the <code>List</code> in
  * reverse. The fail-fast semantics of this iterator are the same as the
  * semantics of the underlying <code>ListIterator</code>.
- *
- * @author Mike Dillon
  */
 public class ReverseListIterator<T> implements Iterator<T> {
     private final ListIterator<T> delegate;
diff --git a/src/main/java/org/codehaus/groovy/runtime/ScriptBytecodeAdapter.java b/src/main/java/org/codehaus/groovy/runtime/ScriptBytecodeAdapter.java
index 9c7909a..d1c83d8 100644
--- a/src/main/java/org/codehaus/groovy/runtime/ScriptBytecodeAdapter.java
+++ b/src/main/java/org/codehaus/groovy/runtime/ScriptBytecodeAdapter.java
@@ -48,8 +48,6 @@ import java.util.regex.Pattern;
 
 /**
  * A static helper class to interface bytecode and runtime
- *
- * @author Jochen Theodorou
  */
 public class ScriptBytecodeAdapter {
     public static final Object[] EMPTY_ARGS = {};
diff --git a/src/main/java/org/codehaus/groovy/runtime/StackTraceUtils.java b/src/main/java/org/codehaus/groovy/runtime/StackTraceUtils.java
index fc34ccd..65b53a1 100644
--- a/src/main/java/org/codehaus/groovy/runtime/StackTraceUtils.java
+++ b/src/main/java/org/codehaus/groovy/runtime/StackTraceUtils.java
@@ -1,195 +1,194 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-package org.codehaus.groovy.runtime;
-
-import groovy.lang.Closure;
-import org.apache.groovy.util.SystemUtil;
-import org.codehaus.groovy.runtime.typehandling.DefaultTypeTransformation;
-
-import java.io.PrintWriter;
-import java.util.ArrayList;
-import java.util.Enumeration;
-import java.util.List;
-import java.util.logging.Level;
-import java.util.logging.LogManager;
-import java.util.logging.Logger;
-
-/**
- * Originally was grails.utils.GrailsUtils, removed some grails specific stuff.
- * Utility methods removing internal lines from stack traces
- *
- * @author Graeme Rocher
- * @since 1.5
- */
-public class StackTraceUtils {
-
-    public static final String STACK_LOG_NAME = "StackTrace";
-    private static final Logger STACK_LOG;
-    // set log to consume traces by default, end user can override later
-
-    static {
-        outer:
-        do {
-            Enumeration existingLogs = LogManager.getLogManager().getLoggerNames();
-            while (existingLogs.hasMoreElements()) {
-                if (STACK_LOG_NAME.equals(existingLogs.nextElement())) {
-                    STACK_LOG = Logger.getLogger(STACK_LOG_NAME);
-                    break outer;
-                }
-            }
-            STACK_LOG = Logger.getLogger(STACK_LOG_NAME);
-            STACK_LOG.setUseParentHandlers(false);
-        } while (false);
-    }
-
-    private static final String[] GROOVY_PACKAGES =
-            System.getProperty("groovy.sanitized.stacktraces",
-                    "groovy.," +
-                            "org.codehaus.groovy.," +
-                            "java.," +
-                            "javax.," +
-                            "sun.," +
-                            "gjdk.groovy.,"
-            ).split("(\\s|,)+");
-
-    private static final List<Closure> tests = new ArrayList<Closure>();
-
-    /**
-     * Adds a groovy.lang.Closure to test whether the stack trace
-     * element should be added or not.
-     * <p>
-     * The groovy.lang.Closure will be given the class name as parameter.
-     * the return value decides if the element will be added or not.
-     * <ul>
-     * <li><b>true</b>  - trace element will be added to the trace
-     * <li><b>false</b> - trace element will <b>not</b> be added to the trace
-     * <li><b>null</b>  - continue with next test
-     * </ul>
-     * Groovy truth will be used to determine true and false, null is excluded from
-     * defaulting to false here. If all tests have been executed and all of them skipped, then
-     * the groovy standard filtering will take place.
-     *
-     * @param test the testing groovy.lang.Closure
-     */
-    public static void addClassTest(Closure test) {
-        tests.add(test);
-    }
-
-    /**
-     * Remove all apparently groovy-internal trace entries from the exception instance
-     * <p>
-     * This modifies the original instance and returns it, it does not clone
-     *
-     * @param t the Throwable whose stack trace we want to sanitize
-     * @return The original Throwable but with a sanitized stack trace
-     */
-    public static Throwable sanitize(Throwable t) {
-        // Note that this getBoolean access may well be synced...
-        if (!SystemUtil.getBooleanSafe("groovy.full.stacktrace")) {
-            StackTraceElement[] trace = t.getStackTrace();
-            List<StackTraceElement> newTrace = new ArrayList<StackTraceElement>();
-            for (StackTraceElement stackTraceElement : trace) {
-                if (isApplicationClass(stackTraceElement.getClassName())) {
-                    newTrace.add(stackTraceElement);
-                }
-            }
-
-            // We don't want to lose anything, so log it
-            STACK_LOG.log(Level.WARNING, "Sanitizing stacktrace:", t);
-
-            StackTraceElement[] clean = new StackTraceElement[newTrace.size()];
-            newTrace.toArray(clean);
-            t.setStackTrace(clean);
-        }
-        return t;
-    }
-
-    public static void printSanitizedStackTrace(Throwable t, PrintWriter p) {
-        t = StackTraceUtils.sanitize(t);
-
-        StackTraceElement[] trace = t.getStackTrace();
-        for (StackTraceElement stackTraceElement : trace) {
-            p.println("at " + stackTraceElement.getClassName()
-                    + "(" + stackTraceElement.getMethodName()
-                    + ":" + stackTraceElement.getLineNumber() + ")");
-        }
-    }
-
-    public static void printSanitizedStackTrace(Throwable t) {
-        printSanitizedStackTrace(t, new PrintWriter(System.err));
-    }
-
-    public static boolean isApplicationClass(String className) {
-        for (Closure test : tests) {
-            Object result = test.call(className);
-            if (result != null) {
-                return DefaultTypeTransformation.castToBoolean(result);
-            }
-        }
-
-        for (String groovyPackage : GROOVY_PACKAGES) {
-            if (className.startsWith(groovyPackage)) {
-                return false;
-            }
-        }
-        return true;
-    }
-
-    /**
-     * Extracts the root cause of the exception, no matter how nested it is
-     *
-     * @param t a Throwable
-     * @return The deepest cause of the exception that can be found
-     */
-    public static Throwable extractRootCause(Throwable t) {
-        Throwable result = t;
-        while (result.getCause() != null) {
-            result = result.getCause();
-        }
-        return result;
-    }
-
-    /**
-     * Get the root cause of an exception and sanitize it for display to the user
-     * <p>
-     * This will MODIFY the stacktrace of the root cause exception object and return it
-     *
-     * @param t a throwable
-     * @return The root cause exception instance, with its stace trace modified to filter out groovy runtime classes
-     */
-    public static Throwable sanitizeRootCause(Throwable t) {
-        return StackTraceUtils.sanitize(StackTraceUtils.extractRootCause(t));
-    }
-
-    /**
-     * Sanitize the exception and ALL nested causes
-     * <p>
-     * This will MODIFY the stacktrace of the exception instance and all its causes irreversibly
-     *
-     * @param t a throwable
-     * @return The root cause exception instances, with stack trace modified to filter out groovy runtime classes
-     */
-    public static Throwable deepSanitize(Throwable t) {
-        Throwable current = t;
-        while (current.getCause() != null) {
-            current = StackTraceUtils.sanitize(current.getCause());
-        }
-        return StackTraceUtils.sanitize(t);
-    }
-}
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.codehaus.groovy.runtime;
+
+import groovy.lang.Closure;
+import org.apache.groovy.util.SystemUtil;
+import org.codehaus.groovy.runtime.typehandling.DefaultTypeTransformation;
+
+import java.io.PrintWriter;
+import java.util.ArrayList;
+import java.util.Enumeration;
+import java.util.List;
+import java.util.logging.Level;
+import java.util.logging.LogManager;
+import java.util.logging.Logger;
+
+/**
+ * Originally was grails.utils.GrailsUtils, removed some grails specific stuff.
+ * Utility methods removing internal lines from stack traces
+ *
+ * @since 1.5
+ */
+public class StackTraceUtils {
+
+    public static final String STACK_LOG_NAME = "StackTrace";
+    private static final Logger STACK_LOG;
+    // set log to consume traces by default, end user can override later
+
+    static {
+        outer:
+        do {
+            Enumeration existingLogs = LogManager.getLogManager().getLoggerNames();
+            while (existingLogs.hasMoreElements()) {
+                if (STACK_LOG_NAME.equals(existingLogs.nextElement())) {
+                    STACK_LOG = Logger.getLogger(STACK_LOG_NAME);
+                    break outer;
+                }
+            }
+            STACK_LOG = Logger.getLogger(STACK_LOG_NAME);
+            STACK_LOG.setUseParentHandlers(false);
+        } while (false);
+    }
+
+    private static final String[] GROOVY_PACKAGES =
+            System.getProperty("groovy.sanitized.stacktraces",
+                    "groovy.," +
+                            "org.codehaus.groovy.," +
+                            "java.," +
+                            "javax.," +
+                            "sun.," +
+                            "gjdk.groovy.,"
+            ).split("(\\s|,)+");
+
+    private static final List<Closure> tests = new ArrayList<Closure>();
+
+    /**
+     * Adds a groovy.lang.Closure to test whether the stack trace
+     * element should be added or not.
+     * <p>
+     * The groovy.lang.Closure will be given the class name as parameter.
+     * the return value decides if the element will be added or not.
+     * <ul>
+     * <li><b>true</b>  - trace element will be added to the trace
+     * <li><b>false</b> - trace element will <b>not</b> be added to the trace
+     * <li><b>null</b>  - continue with next test
+     * </ul>
+     * Groovy truth will be used to determine true and false, null is excluded from
+     * defaulting to false here. If all tests have been executed and all of them skipped, then
+     * the groovy standard filtering will take place.
+     *
+     * @param test the testing groovy.lang.Closure
+     */
+    public static void addClassTest(Closure test) {
+        tests.add(test);
+    }
+
+    /**
+     * Remove all apparently groovy-internal trace entries from the exception instance
+     * <p>
+     * This modifies the original instance and returns it, it does not clone
+     *
+     * @param t the Throwable whose stack trace we want to sanitize
+     * @return The original Throwable but with a sanitized stack trace
+     */
+    public static Throwable sanitize(Throwable t) {
+        // Note that this getBoolean access may well be synced...
+        if (!SystemUtil.getBooleanSafe("groovy.full.stacktrace")) {
+            StackTraceElement[] trace = t.getStackTrace();
+            List<StackTraceElement> newTrace = new ArrayList<StackTraceElement>();
+            for (StackTraceElement stackTraceElement : trace) {
+                if (isApplicationClass(stackTraceElement.getClassName())) {
+                    newTrace.add(stackTraceElement);
+                }
+            }
+
+            // We don't want to lose anything, so log it
+            STACK_LOG.log(Level.WARNING, "Sanitizing stacktrace:", t);
+
+            StackTraceElement[] clean = new StackTraceElement[newTrace.size()];
+            newTrace.toArray(clean);
+            t.setStackTrace(clean);
+        }
+        return t;
+    }
+
+    public static void printSanitizedStackTrace(Throwable t, PrintWriter p) {
+        t = StackTraceUtils.sanitize(t);
+
+        StackTraceElement[] trace = t.getStackTrace();
+        for (StackTraceElement stackTraceElement : trace) {
+            p.println("at " + stackTraceElement.getClassName()
+                    + "(" + stackTraceElement.getMethodName()
+                    + ":" + stackTraceElement.getLineNumber() + ")");
+        }
+    }
+
+    public static void printSanitizedStackTrace(Throwable t) {
+        printSanitizedStackTrace(t, new PrintWriter(System.err));
+    }
+
+    public static boolean isApplicationClass(String className) {
+        for (Closure test : tests) {
+            Object result = test.call(className);
+            if (result != null) {
+                return DefaultTypeTransformation.castToBoolean(result);
+            }
+        }
+
+        for (String groovyPackage : GROOVY_PACKAGES) {
+            if (className.startsWith(groovyPackage)) {
+                return false;
+            }
+        }
+        return true;
+    }
+
+    /**
+     * Extracts the root cause of the exception, no matter how nested it is
+     *
+     * @param t a Throwable
+     * @return The deepest cause of the exception that can be found
+     */
+    public static Throwable extractRootCause(Throwable t) {
+        Throwable result = t;
+        while (result.getCause() != null) {
+            result = result.getCause();
+        }
+        return result;
+    }
+
+    /**
+     * Get the root cause of an exception and sanitize it for display to the user
+     * <p>
+     * This will MODIFY the stacktrace of the root cause exception object and return it
+     *
+     * @param t a throwable
+     * @return The root cause exception instance, with its stace trace modified to filter out groovy runtime classes
+     */
+    public static Throwable sanitizeRootCause(Throwable t) {
+        return StackTraceUtils.sanitize(StackTraceUtils.extractRootCause(t));
+    }
+
+    /**
+     * Sanitize the exception and ALL nested causes
+     * <p>
+     * This will MODIFY the stacktrace of the exception instance and all its causes irreversibly
+     *
+     * @param t a throwable
+     * @return The root cause exception instances, with stack trace modified to filter out groovy runtime classes
+     */
+    public static Throwable deepSanitize(Throwable t) {
+        Throwable current = t;
+        while (current.getCause() != null) {
+            current = StackTraceUtils.sanitize(current.getCause());
+        }
+        return StackTraceUtils.sanitize(t);
+    }
+}
diff --git a/src/main/java/org/codehaus/groovy/runtime/StringBufferWriter.java b/src/main/java/org/codehaus/groovy/runtime/StringBufferWriter.java
index 5bdcbe0..d25398e 100644
--- a/src/main/java/org/codehaus/groovy/runtime/StringBufferWriter.java
+++ b/src/main/java/org/codehaus/groovy/runtime/StringBufferWriter.java
@@ -25,8 +25,6 @@ import java.io.Writer;
  * This class codes around a silly limitation of StringWriter which doesn't allow a StringBuffer
  * to be passed in as a constructor for some bizarre reason.
  * So we replicate the behaviour of StringWriter here but allow a StringBuffer to be passed in.
- * 
- * @author <a href="mailto:james@coredevelopers.net">James Strachan</a>
  */
 public class StringBufferWriter extends Writer {
 
diff --git a/src/main/java/org/codehaus/groovy/runtime/callsite/BooleanClosureWrapper.java b/src/main/java/org/codehaus/groovy/runtime/callsite/BooleanClosureWrapper.java
index 28d0f0a..68abc48 100644
--- a/src/main/java/org/codehaus/groovy/runtime/callsite/BooleanClosureWrapper.java
+++ b/src/main/java/org/codehaus/groovy/runtime/callsite/BooleanClosureWrapper.java
@@ -32,7 +32,6 @@ import java.util.Map.Entry;
  * in {@link org.codehaus.groovy.runtime.typehandling.DefaultTypeTransformation#castToBoolean(Object)}. The purpose of
  * this class is to avoid the slow "asBoolean" call in that method.
  * {@link BooleanReturningMethodInvoker} is used for caching.
- * @author <a href="mailto:blackdrag@gmx.org">Jochen "blackdrag" Theodorou</a>
  *
  */
 public class BooleanClosureWrapper {
diff --git a/src/main/java/org/codehaus/groovy/runtime/callsite/BooleanReturningMethodInvoker.java b/src/main/java/org/codehaus/groovy/runtime/callsite/BooleanReturningMethodInvoker.java
index 428b8ce..7865f05 100644
--- a/src/main/java/org/codehaus/groovy/runtime/callsite/BooleanReturningMethodInvoker.java
+++ b/src/main/java/org/codehaus/groovy/runtime/callsite/BooleanReturningMethodInvoker.java
@@ -31,8 +31,6 @@ import org.apache.groovy.internal.util.UncheckedThrow;
  * 
  * The nature of this class allows a per instance caching instead of a per class
  * caching like the normal {@link CallSiteArray} logic.
- * 
- * @author <a href="mailto:blackdrag@gmx.org">Jochen "blackdrag" Theodorou</a>
  */
 public class BooleanReturningMethodInvoker {
     private final CallSiteArray csa;
diff --git a/src/main/java/org/codehaus/groovy/runtime/callsite/ConstructorMetaMethodSite.java b/src/main/java/org/codehaus/groovy/runtime/callsite/ConstructorMetaMethodSite.java
index aa6e7f5..0b98ca8 100644
--- a/src/main/java/org/codehaus/groovy/runtime/callsite/ConstructorMetaMethodSite.java
+++ b/src/main/java/org/codehaus/groovy/runtime/callsite/ConstructorMetaMethodSite.java
@@ -28,8 +28,6 @@ import org.codehaus.groovy.runtime.ScriptBytecodeAdapter;
  * Call site for invoking static methods
 *   meta class  - cached
 *   method - not cached
-*
-* @author Alex Tkachman
 */
 public class ConstructorMetaMethodSite extends MetaMethodSite {
 
diff --git a/src/main/java/org/codehaus/groovy/runtime/callsite/MetaClassConstructorSite.java b/src/main/java/org/codehaus/groovy/runtime/callsite/MetaClassConstructorSite.java
index edbe3b9..fd1498a 100644
--- a/src/main/java/org/codehaus/groovy/runtime/callsite/MetaClassConstructorSite.java
+++ b/src/main/java/org/codehaus/groovy/runtime/callsite/MetaClassConstructorSite.java
@@ -27,8 +27,6 @@ import org.codehaus.groovy.runtime.ScriptBytecodeAdapter;
  * Call site for constructor
  *   meta class - cached
  *   method - not cached
- *
- * @author Alex Tkachman
 */
 public class MetaClassConstructorSite extends MetaClassSite {
 
diff --git a/src/main/java/org/codehaus/groovy/runtime/callsite/MetaClassSite.java b/src/main/java/org/codehaus/groovy/runtime/callsite/MetaClassSite.java
index 50f09de..f9fb77b 100644
--- a/src/main/java/org/codehaus/groovy/runtime/callsite/MetaClassSite.java
+++ b/src/main/java/org/codehaus/groovy/runtime/callsite/MetaClassSite.java
@@ -22,8 +22,6 @@ import groovy.lang.MetaClass;
 
 /**
  * Call site which holds reference to meta class
- *
- * @author Alex Tkachman
 */
 public abstract class MetaClassSite extends AbstractCallSite {
     protected final MetaClass metaClass;
diff --git a/src/main/java/org/codehaus/groovy/runtime/callsite/MetaMethodSite.java b/src/main/java/org/codehaus/groovy/runtime/callsite/MetaMethodSite.java
index dc15145..12ef33d 100644
--- a/src/main/java/org/codehaus/groovy/runtime/callsite/MetaMethodSite.java
+++ b/src/main/java/org/codehaus/groovy/runtime/callsite/MetaMethodSite.java
@@ -23,8 +23,6 @@ import groovy.lang.MetaMethod;
 
 /**
  * Call site which caches meta method
- * 
- * @author Alex Tkachman
  */
 public abstract class MetaMethodSite extends MetaClassSite {
     final MetaMethod metaMethod;
diff --git a/src/main/java/org/codehaus/groovy/runtime/callsite/PogoInterceptableSite.java b/src/main/java/org/codehaus/groovy/runtime/callsite/PogoInterceptableSite.java
index 7f0f251..77ffab9 100644
--- a/src/main/java/org/codehaus/groovy/runtime/callsite/PogoInterceptableSite.java
+++ b/src/main/java/org/codehaus/groovy/runtime/callsite/PogoInterceptableSite.java
@@ -25,8 +25,6 @@ import org.codehaus.groovy.runtime.ScriptBytecodeAdapter;
 
 /**
  * Call site for GroovyInterceptable
- *
- * @author Alex Tkachman
 */
 public class PogoInterceptableSite extends AbstractCallSite {
     public PogoInterceptableSite(CallSite site) {
diff --git a/src/main/java/org/codehaus/groovy/runtime/callsite/PogoMetaClassSite.java b/src/main/java/org/codehaus/groovy/runtime/callsite/PogoMetaClassSite.java
index 1e7c9ad..4b16fcb 100644
--- a/src/main/java/org/codehaus/groovy/runtime/callsite/PogoMetaClassSite.java
+++ b/src/main/java/org/codehaus/groovy/runtime/callsite/PogoMetaClassSite.java
@@ -25,10 +25,6 @@ import groovy.lang.MissingMethodException;
 import org.codehaus.groovy.runtime.ScriptBytecodeAdapter;
 import org.codehaus.groovy.runtime.metaclass.MissingMethodExecutionFailed;
 
-/**
- *
- * @author Alex Tkachman
- */
 public class PogoMetaClassSite extends MetaClassSite {
     public PogoMetaClassSite(CallSite site, MetaClass metaClass) {
         super(site, metaClass);
diff --git a/src/main/java/org/codehaus/groovy/runtime/callsite/PojoMetaClassSite.java b/src/main/java/org/codehaus/groovy/runtime/callsite/PojoMetaClassSite.java
index 9f96b7d..c1fae7f 100644
--- a/src/main/java/org/codehaus/groovy/runtime/callsite/PojoMetaClassSite.java
+++ b/src/main/java/org/codehaus/groovy/runtime/callsite/PojoMetaClassSite.java
@@ -27,8 +27,6 @@ import org.codehaus.groovy.runtime.ScriptBytecodeAdapter;
  * POJO call site
  *   meta class - cached
  *   method - not cached
- *
- * @author Alex Tkachman
 */
 public class PojoMetaClassSite extends MetaClassSite{
     private final ClassInfo classInfo;
diff --git a/src/main/java/org/codehaus/groovy/runtime/callsite/PojoMetaMethodSite.java b/src/main/java/org/codehaus/groovy/runtime/callsite/PojoMetaMethodSite.java
index fb52e1f..ae06074 100644
--- a/src/main/java/org/codehaus/groovy/runtime/callsite/PojoMetaMethodSite.java
+++ b/src/main/java/org/codehaus/groovy/runtime/callsite/PojoMetaMethodSite.java
@@ -33,8 +33,6 @@ import java.lang.reflect.Method;
  * POJO call site
  *   meta class - cached
  *   method - cached
- *
- * @author Alex Tkachman
 */
 public class PojoMetaMethodSite extends PlainObjectMetaMethodSite {
 
diff --git a/src/main/java/org/codehaus/groovy/runtime/callsite/StaticMetaClassSite.java b/src/main/java/org/codehaus/groovy/runtime/callsite/StaticMetaClassSite.java
index 8399796..a97fe92 100644
--- a/src/main/java/org/codehaus/groovy/runtime/callsite/StaticMetaClassSite.java
+++ b/src/main/java/org/codehaus/groovy/runtime/callsite/StaticMetaClassSite.java
@@ -27,8 +27,6 @@ import org.codehaus.groovy.runtime.ScriptBytecodeAdapter;
  * Call site for invoking static methods
  *   meta class  - cached
  *   method - not cached
- *
- * @author Alex Tkachman
  */
 public class StaticMetaClassSite extends MetaClassSite {
 
diff --git a/src/main/java/org/codehaus/groovy/runtime/callsite/StaticMetaMethodSite.java b/src/main/java/org/codehaus/groovy/runtime/callsite/StaticMetaMethodSite.java
index cc49a55..2758478 100644
--- a/src/main/java/org/codehaus/groovy/runtime/callsite/StaticMetaMethodSite.java
+++ b/src/main/java/org/codehaus/groovy/runtime/callsite/StaticMetaMethodSite.java
@@ -29,8 +29,6 @@ import org.codehaus.groovy.runtime.ScriptBytecodeAdapter;
  * POJO call site
  *   meta class - cached
  *   method - cached
- *
- * @author Alex Tkachman
 */
 public class StaticMetaMethodSite extends MetaMethodSite {
     private final int version;
diff --git a/src/main/java/org/codehaus/groovy/runtime/m12n/ExtensionModule.java b/src/main/java/org/codehaus/groovy/runtime/m12n/ExtensionModule.java
index 0c30a3b..887ba30 100644
--- a/src/main/java/org/codehaus/groovy/runtime/m12n/ExtensionModule.java
+++ b/src/main/java/org/codehaus/groovy/runtime/m12n/ExtensionModule.java
@@ -28,8 +28,6 @@ import java.util.List;
  * existing classes.
  *
  * @since 2.0.0
- *
- * @author Cedric Champeau
  */
 public abstract class ExtensionModule {
     private final String name;
diff --git a/src/main/java/org/codehaus/groovy/runtime/m12n/ExtensionModuleRegistry.java b/src/main/java/org/codehaus/groovy/runtime/m12n/ExtensionModuleRegistry.java
index 01161ce..77d53d3 100644
--- a/src/main/java/org/codehaus/groovy/runtime/m12n/ExtensionModuleRegistry.java
+++ b/src/main/java/org/codehaus/groovy/runtime/m12n/ExtensionModuleRegistry.java
@@ -29,7 +29,6 @@ import java.util.List;
  * In previous Groovy versions, such methods could only be defined in a single class called {@link org.codehaus.groovy.runtime.DefaultGroovyMethods}
  * for instance methods, and {@link org.codehaus.groovy.runtime.DefaultGroovyStaticMethods} for static methods.
  *
- * @author Cedric Champeau
  * @since 2.0.0
  */
 public class ExtensionModuleRegistry {
diff --git a/src/main/java/org/codehaus/groovy/runtime/m12n/MetaInfExtensionModule.java b/src/main/java/org/codehaus/groovy/runtime/m12n/MetaInfExtensionModule.java
index 10c1fd3..2891ee4 100644
--- a/src/main/java/org/codehaus/groovy/runtime/m12n/MetaInfExtensionModule.java
+++ b/src/main/java/org/codehaus/groovy/runtime/m12n/MetaInfExtensionModule.java
@@ -31,8 +31,6 @@ import java.util.logging.Logger;
  * metadata from META-INF.
  *
  * @since 2.0.0
- *
- * @author Cedric Champeau
  */
 public class MetaInfExtensionModule extends SimpleExtensionModule {
     private static final Logger LOG = Logger.getLogger(MetaInfExtensionModule.class.getName());
diff --git a/src/main/java/org/codehaus/groovy/runtime/m12n/PropertiesModuleFactory.java b/src/main/java/org/codehaus/groovy/runtime/m12n/PropertiesModuleFactory.java
index 6946db7..e59f53b 100644
--- a/src/main/java/org/codehaus/groovy/runtime/m12n/PropertiesModuleFactory.java
+++ b/src/main/java/org/codehaus/groovy/runtime/m12n/PropertiesModuleFactory.java
@@ -25,8 +25,6 @@ import java.util.Properties;
  * using properties.
  *
  * @since 2.0.0
- *
- * @author Cedric Champeau
  */
 public abstract class PropertiesModuleFactory {
     public static final String MODULE_NAME_KEY = "moduleName";
diff --git a/src/main/java/org/codehaus/groovy/runtime/m12n/SimpleExtensionModule.java b/src/main/java/org/codehaus/groovy/runtime/m12n/SimpleExtensionModule.java
index af5df54..4ed4e59 100644
--- a/src/main/java/org/codehaus/groovy/runtime/m12n/SimpleExtensionModule.java
+++ b/src/main/java/org/codehaus/groovy/runtime/m12n/SimpleExtensionModule.java
@@ -81,7 +81,6 @@ import java.util.logging.Logger;
  * }
  * </pre>
  *
- * @author Cedric Champeau
  * @since 2.0.0
  */
 public abstract class SimpleExtensionModule extends ExtensionModule {
diff --git a/src/main/java/org/codehaus/groovy/runtime/metaclass/ClosureMetaClass.java b/src/main/java/org/codehaus/groovy/runtime/metaclass/ClosureMetaClass.java
index 1a59c0b..bdf8c8d 100644
--- a/src/main/java/org/codehaus/groovy/runtime/metaclass/ClosureMetaClass.java
+++ b/src/main/java/org/codehaus/groovy/runtime/metaclass/ClosureMetaClass.java
@@ -1,713 +1,712 @@
-/*
- *  Licensed to the Apache Software Foundation (ASF) under one
- *  or more contributor license agreements.  See the NOTICE file
- *  distributed with this work for additional information
- *  regarding copyright ownership.  The ASF licenses this file
- *  to you under the Apache License, Version 2.0 (the
- *  "License"); you may not use this file except in compliance
- *  with the License.  You may obtain a copy of the License at
- *
- *    http://www.apache.org/licenses/LICENSE-2.0
- *
- *  Unless required by applicable law or agreed to in writing,
- *  software distributed under the License is distributed on an
- *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- *  KIND, either express or implied.  See the License for the
- *  specific language governing permissions and limitations
- *  under the License.
- */
-package org.codehaus.groovy.runtime.metaclass;
-
-import groovy.lang.Closure;
-import groovy.lang.ExpandoMetaClass;
-import groovy.lang.GroovyObject;
-import groovy.lang.GroovyRuntimeException;
-import groovy.lang.MetaBeanProperty;
-import groovy.lang.MetaClass;
-import groovy.lang.MetaClassImpl;
-import groovy.lang.MetaClassRegistry;
-import groovy.lang.MetaMethod;
-import groovy.lang.MetaProperty;
-import groovy.lang.MissingMethodException;
-import groovy.lang.MissingPropertyException;
-import groovy.lang.ProxyMetaClass;
-import org.codehaus.groovy.reflection.CachedClass;
-import org.codehaus.groovy.reflection.CachedField;
-import org.codehaus.groovy.reflection.CachedMethod;
-import org.codehaus.groovy.reflection.ParameterTypes;
-import org.codehaus.groovy.runtime.InvokerHelper;
-import org.codehaus.groovy.runtime.MetaClassHelper;
-import org.codehaus.groovy.runtime.callsite.CallSite;
-import org.codehaus.groovy.runtime.callsite.PogoMetaClassSite;
-import org.codehaus.groovy.runtime.wrappers.Wrapper;
-import org.codehaus.groovy.util.FastArray;
-
-import java.beans.PropertyDescriptor;
-import java.lang.reflect.Constructor;
-import java.lang.reflect.Method;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.LinkedList;
-import java.util.List;
-import java.util.Map;
-
-/**
- * A meta class for closures generated by the Groovy compiler. These classes
- * have special characteristics this MetaClass uses. One of these is that a
- * generated Closure has only additional doCall methods, all other methods
- * are in the Closure class as well. To use this fact this MetaClass uses
- * a MetaClass for Closure as static field And delegates calls to this
- * MetaClass if needed. This allows a lean implementation for this MetaClass.
- * Multiple generated closures will then use the same MetaClass for Closure.
- * For static dispatching this class uses the MetaClass of Class, again
- * all instances of this class will share that MetaClass. The Class MetaClass
- * is initialized lazy, because most operations do not need this MetaClass.
- * <p>
- * The Closure and Class MetaClasses are not replaceable.
- * <p>
- * This MetaClass is for internal usage only!
- *
- * @author Jochen Theodorou
- * @since 1.5
- */
-public final class ClosureMetaClass extends MetaClassImpl {
-    private volatile boolean initialized;
-    private final FastArray closureMethods = new FastArray(3);
-    private Map<String, CachedField> attributes = new HashMap<String, CachedField>();
-    private MethodChooser chooser;
-    private volatile boolean attributeInitDone = false;
-
-    private static MetaClassImpl CLOSURE_METACLASS;
-    private static MetaClassImpl classMetaClass;
-    private static final Object[] EMPTY_ARGUMENTS = {};
-    private static final String CLOSURE_CALL_METHOD = "call";
-    private static final String CLOSURE_DO_CALL_METHOD = "doCall";
-
-    static {
-        resetCachedMetaClasses();
-    }
-
-    public static void resetCachedMetaClasses() {
-        MetaClassImpl temp = new MetaClassImpl(Closure.class);
-        temp.initialize();
-        synchronized (ClosureMetaClass.class) {
-            CLOSURE_METACLASS = temp;
-        }
-        if (classMetaClass!=null) {
-            temp = new MetaClassImpl(Class.class);
-            temp.initialize();
-            synchronized (ClosureMetaClass.class) {
-                classMetaClass = temp;
-            }
-        }
-    }
-
-    private static synchronized MetaClass getStaticMetaClass() {
-        if (classMetaClass == null) {
-            classMetaClass = new MetaClassImpl(Class.class);
-            classMetaClass.initialize();
-        }
-        return classMetaClass;
-    }
-
-    private interface MethodChooser {
-        Object chooseMethod(Class[] arguments, boolean coerce);
-    }
-
-    private static class StandardClosureChooser implements MethodChooser {
-        private final MetaMethod doCall0;
-        private final MetaMethod doCall1;
-
-        StandardClosureChooser(MetaMethod m0, MetaMethod m1) {
-            doCall0 = m0;
-            doCall1 = m1;
-        }
-
-        public Object chooseMethod(Class[] arguments, boolean coerce) {
-            if (arguments.length == 0) return doCall0;
-            if (arguments.length == 1) return doCall1;
-            return null;
-        }
-    }
-
-    private static class NormalMethodChooser implements MethodChooser {
-        private final FastArray methods;
-        final Class theClass;
-
-        NormalMethodChooser(Class theClass, FastArray methods) {
-            this.theClass = theClass;
-            this.methods = methods;
-        }
-
-        public Object chooseMethod(Class[] arguments, boolean coerce) {
-            if (arguments.length == 0) {
-                return MetaClassHelper.chooseEmptyMethodParams(methods);
-            } else if (arguments.length == 1 && arguments[0] == null) {
-                return MetaClassHelper.chooseMostGeneralMethodWith1NullParam(methods);
-            } else {
-                List matchingMethods = new ArrayList();
-                final Object[] data = methods.getArray();
-                for (int i = 0, len = methods.size(); i != len; ++i) {
-                    Object method = data[i];
-
-                    // making this false helps find matches
-                    if (((ParameterTypes) method).isValidMethod(arguments)) {
-                        matchingMethods.add(method);
-                    }
-                }
-
-                int size = matchingMethods.size();
-                if (0 == size) {
-                    return null;
-                } else if (1 == size) {
-                    return matchingMethods.get(0);
-                }
-
-                return chooseMostSpecificParams(CLOSURE_DO_CALL_METHOD, matchingMethods, arguments);
-            }
-        }
-
-        private Object chooseMostSpecificParams(String name, List matchingMethods, Class[] arguments) {
-            return doChooseMostSpecificParams(theClass.getName(), name, matchingMethods, arguments, true);
-        }
-    }
-
-    public ClosureMetaClass(MetaClassRegistry registry, Class theClass) {
-        super(registry, theClass);
-    }
-
-    public MetaProperty getMetaProperty(String name) {
-        return CLOSURE_METACLASS.getMetaProperty(name);
-    }
-
-    private static void unwrap(Object[] arguments) {
-        for (int i = 0; i != arguments.length; i++) {
-            if (arguments[i] instanceof Wrapper) {
-                arguments[i] = ((Wrapper) arguments[i]).unwrap();
-            }
-        }
-    }
-
-    private MetaMethod pickClosureMethod(Class[] argClasses) {
-        Object answer = chooser.chooseMethod(argClasses, false);
-        return (MetaMethod) answer;
-    }
-
-    private MetaMethod getDelegateMethod(Closure closure, Object delegate, String methodName, Class[] argClasses) {
-        if (delegate == closure || delegate == null) return null;
-        if (delegate instanceof Class) {
-            for (Class superClass = (Class) delegate;
-                 superClass != Object.class && superClass != null;
-                 superClass = superClass.getSuperclass())
-            {
-                MetaClass mc = registry.getMetaClass(superClass);
-                MetaMethod method = mc.getStaticMetaMethod(methodName, argClasses);
-                if (method != null) return method;
-            }
-            return null;
-        } else {
-            MetaClass delegateMetaClass = lookupObjectMetaClass(delegate);
-            MetaMethod method = delegateMetaClass.pickMethod(methodName, argClasses);
-            if (method != null) {
-                return method;
-            }
-
-            if (delegateMetaClass instanceof ExpandoMetaClass) {
-                method = ((ExpandoMetaClass) delegateMetaClass).findMixinMethod(methodName, argClasses);
-
-                if (method != null) {
-                    onMixinMethodFound(method);
-                    return method;
-                }
-            }
-
-            if (delegateMetaClass instanceof MetaClassImpl) {
-                method = MetaClassImpl.findMethodInClassHierarchy(getTheClass(), methodName, argClasses, this);
-                if (method != null) {
-                    onSuperMethodFoundInHierarchy(method);
-                    return method;
-                }
-            }
-
-            return method;
-        }
-    }
-
-    public Object invokeMethod(Class sender, Object object, String methodName, Object[] originalArguments, boolean isCallToSuper, boolean fromInsideClass) {
-        checkInitalised();
-        if (object == null) {
-            throw new NullPointerException("Cannot invoke method: " + methodName + " on null object");
-        }
-
-        final Object[] arguments = makeArguments(originalArguments, methodName);
-        final Class[] argClasses = MetaClassHelper.convertToTypeArray(arguments);
-        unwrap(arguments);
-
-        MetaMethod method = null;
-        final Closure closure = (Closure) object;
-
-        if (CLOSURE_DO_CALL_METHOD.equals(methodName) || CLOSURE_CALL_METHOD.equals(methodName)) {
-            method = pickClosureMethod(argClasses);
-            if (method == null && arguments.length == 1 && arguments[0] instanceof List) {
-                Object[] newArguments = ((List) arguments[0]).toArray();
-                Class[] newArgClasses = MetaClassHelper.convertToTypeArray(newArguments);
-                method = createTransformMetaMethod(pickClosureMethod(newArgClasses));
-            }
-            if (method == null) throw new MissingMethodException(methodName, theClass, arguments, false);
-        }
-
-        boolean shouldDefer = closure.getResolveStrategy() == Closure.DELEGATE_ONLY && isInternalMethod(methodName);
-        if (method == null && !shouldDefer) {
-            method = CLOSURE_METACLASS.pickMethod(methodName, argClasses);
-        }
-
-        if (method != null) return method.doMethodInvoke(object, arguments);
-
-        MissingMethodException last = null;
-        Object callObject = object;
-        final Object owner = closure.getOwner();
-        final Object delegate = closure.getDelegate();
-        final Object thisObject = closure.getThisObject();
-        final int resolveStrategy = closure.getResolveStrategy();
-        boolean invokeOnDelegate = false;
-        boolean invokeOnOwner = false;
-        boolean ownerFirst = true;
-
-        switch (resolveStrategy) {
-            case Closure.TO_SELF:
-                break;
-            case Closure.DELEGATE_ONLY:
-                method = getDelegateMethod(closure, delegate, methodName, argClasses);
-                callObject = delegate;
-                if (method == null) {
-                    invokeOnDelegate = delegate != closure && (delegate instanceof GroovyObject);
-                }
-                break;
-            case Closure.OWNER_ONLY:
-                method = getDelegateMethod(closure, owner, methodName, argClasses);
-                callObject = owner;
-                if (method == null) {
-                    invokeOnOwner = owner != closure && (owner instanceof GroovyObject);
-                }
-
-                break;
-            case Closure.DELEGATE_FIRST:
-                method = getDelegateMethod(closure, delegate, methodName, argClasses);
-                callObject = delegate;
-                if (method == null) {
-                    method = getDelegateMethod(closure, owner, methodName, argClasses);
-                    callObject = owner;
-                }
-                if (method == null) {
-                    invokeOnDelegate = delegate != closure && (delegate instanceof GroovyObject);
-                    invokeOnOwner = owner != closure && (owner instanceof GroovyObject);
-                    ownerFirst = false;
-                }
-                break;
-            default: // owner first
-                // owner first means we start with the outer most owner that is not a generated closure
-                // this owner is equal to the this object, so we check that one first.
-                method = getDelegateMethod(closure, thisObject, methodName, argClasses);
-                callObject = thisObject;
-                if (method == null) {
-                    // try finding a delegate that has that method... we start from
-                    // outside building a stack and try each delegate
-                    LinkedList list = new LinkedList();
-                    for (Object current = closure; current != thisObject;) {
-                        if (!(current instanceof Closure)) break;
-                        Closure currentClosure = (Closure) current;
-                        if (currentClosure.getDelegate() != null) list.add(current);
-                        current = currentClosure.getOwner();
-                    }
-
-                    while (!list.isEmpty() && method == null) {
-                        Closure closureWithDelegate = (Closure) list.removeLast();
-                        Object currentDelegate = closureWithDelegate.getDelegate();
-                        method = getDelegateMethod(closureWithDelegate, currentDelegate, methodName, argClasses);
-                        callObject = currentDelegate;
-                    }
-                }
-                if (method == null) {
-                    invokeOnDelegate = delegate != closure && (delegate instanceof GroovyObject);
-                    invokeOnOwner = owner != closure && (owner instanceof GroovyObject);
-                }
-        }
-        if (method == null && (invokeOnOwner || invokeOnDelegate)) {
-            try {
-                if (ownerFirst) {
-                    return invokeOnDelegationObjects(invokeOnOwner, owner, invokeOnDelegate, delegate, methodName, arguments);
-                } else {
-                    return invokeOnDelegationObjects(invokeOnDelegate, delegate, invokeOnOwner, owner, methodName, arguments);
-                }
-            } catch (MissingMethodException mme) {
-                last = mme;
-            }
-        }
-
-        if (method != null) {
-            MetaClass metaClass = registry.getMetaClass(callObject.getClass());
-            if (metaClass instanceof ProxyMetaClass) {
-                return metaClass.invokeMethod(callObject, methodName, arguments);
-            } else {
-                return method.doMethodInvoke(callObject, arguments);
-            }
-        } else {
-            // if no method was found, try to find a closure defined as a field of the class and run it
-            Object value = null;
-            try {
-                value = this.getProperty(object, methodName);
-            } catch (MissingPropertyException mpe) {
-                // ignore
-            }
-            if (value instanceof Closure) {  // This test ensures that value != this If you ever change this ensure that value != this
-                Closure cl = (Closure) value;
-                MetaClass delegateMetaClass = cl.getMetaClass();
-                return delegateMetaClass.invokeMethod(cl.getClass(), closure, CLOSURE_DO_CALL_METHOD, originalArguments, false, fromInsideClass);
-            }
-        }
-
-        if (last != null) throw last;
-        throw new MissingMethodException(methodName, theClass, arguments, false);
-    }
-
-    private static boolean isInternalMethod(String methodName) {
-        return methodName.equals("curry") || methodName.equals("ncurry") || methodName.equals("rcurry") ||
-                methodName.equals("leftShift") || methodName.equals("rightShift");
-    }
-
-    private static Object[] makeArguments(Object[] arguments, String methodName) {
-        if (arguments == null) return EMPTY_ARGUMENTS;
-        return arguments;
-    }
-
-    private static Throwable unwrap(GroovyRuntimeException gre) {
-        Throwable th = gre;
-        if (th.getCause() != null && th.getCause() != gre) th = th.getCause();
-        if (th != gre && (th instanceof GroovyRuntimeException)) return unwrap((GroovyRuntimeException) th);
-        return th;
-    }
-
-    private static Object invokeOnDelegationObjects(
-            boolean invoke1, Object o1,
-            boolean invoke2, Object o2,
-            String methodName, Object[] args) {
-        MissingMethodException first = null;
-        if (invoke1) {
-            GroovyObject go = (GroovyObject) o1;
-            try {
-                return go.invokeMethod(methodName, args);
-            } catch (MissingMethodException mme) {
-                first = mme;
-            } catch (GroovyRuntimeException gre) {
-                Throwable th = unwrap(gre);
-                if ((th instanceof MissingMethodException)
-                        && (methodName.equals(((MissingMethodException) th).getMethod()))) {
-                    first = (MissingMethodException) th;
-                } else {
-                    throw gre;
-                }
-            }
-        }
-        if (invoke2 && (!invoke1 || o1 != o2)) {
-            GroovyObject go = (GroovyObject) o2;
-            try {
-                return go.invokeMethod(methodName, args);
-            } catch (MissingMethodException mme) {
-                // patch needed here too, but we need a test case to trip it first
-                if (first == null) first = mme;
-            } catch (GroovyRuntimeException gre) {
-                Throwable th = unwrap(gre);
-                if (th instanceof MissingMethodException) {
-                    first = (MissingMethodException) th;
-                } else {
-                    throw gre;
-                }
-            }
-        }
-        throw first;
-    }
-
-    private synchronized void initAttributes() {
-        if (!attributes.isEmpty()) return;
-        attributes.put("!", null); // just a dummy for later
-        CachedField[] fieldArray = theCachedClass.getFields();
-        for (CachedField aFieldArray : fieldArray) {
-            attributes.put(aFieldArray.getName(), aFieldArray);
-        }
-        attributeInitDone = !attributes.isEmpty();
-    }
-
-    public synchronized void initialize() {
-        if (!isInitialized()) {
-            CachedMethod[] methodArray = theCachedClass.getMethods();
-            synchronized (theCachedClass) {
-                for (final CachedMethod cachedMethod : methodArray) {
-                    if (!cachedMethod.getName().equals(CLOSURE_DO_CALL_METHOD)) continue;
-                    closureMethods.add(cachedMethod);
-                }
-            }
-            assignMethodChooser();
-
-            initialized = true;
-        }
-    }
-
-    private void assignMethodChooser() {
-        if (closureMethods.size() == 1) {
-            final MetaMethod doCall = (MetaMethod) closureMethods.get(0);
-            final CachedClass[] c = doCall.getParameterTypes();
-            int length = c.length;
-            if (length == 0) {
-                // no arg method
-                chooser = new MethodChooser() {
-                    public Object chooseMethod(Class[] arguments, boolean coerce) {
-                        if (arguments.length == 0) return doCall;
-                        return null;
-                    }
-                };
-            } else {
-                if (length == 1 && c[0].getTheClass() == Object.class) {
-                    // Object fits all, so simple dispatch rule here
-                    chooser = new MethodChooser() {
-                        public Object chooseMethod(Class[] arguments, boolean coerce) {
-                            // <2, because foo() is same as foo(null)
-                            if (arguments.length < 2) return doCall;
-                            return null;
-                        }
-                    };
-                } else {
-                    boolean allObject = true;
-                    for (int i = 0; i < c.length - 1; i++) {
-                        if (c[i].getTheClass() != Object.class) {
-                            allObject = false;
-                            break;
-                        }
-                    }
-                    if (allObject && c[c.length - 1].getTheClass() == Object.class) {
-                        // all arguments are object, so test only if argument number is correct
-                        chooser = new MethodChooser() {
-                            public Object chooseMethod(Class[] arguments, boolean coerce) {
-                                if (arguments.length == c.length) return doCall;
-                                return null;
-                            }
-                        };
-                    } else {
-                        if (allObject && c[c.length - 1].getTheClass() == Object[].class) {
-                            // all arguments are Object but last, which is a vargs argument, that
-                            // will fit all, so just test if the number of argument is equal or
-                            // more than the parameters we have.
-                            final int minimumLength = c.length - 2;
-                            chooser = new MethodChooser() {
-                                public Object chooseMethod(Class[] arguments, boolean coerce) {
-                                    if (arguments.length > minimumLength) return doCall;
-                                    return null;
-                                }
-                            };
-                        } else {
-                            // general case for single method
-                            chooser = new MethodChooser() {
-                                public Object chooseMethod(Class[] arguments, boolean coerce) {
-                                    if (doCall.isValidMethod(arguments)) {
-                                        return doCall;
-                                    }
-                                    return null;
-                                }
-                            };
-                        }
-                    }
-                }
-            }
-        } else if (closureMethods.size() == 2) {
-            MetaMethod m0 = null, m1 = null;
-            for (int i = 0; i != closureMethods.size(); ++i) {
-                MetaMethod m = (MetaMethod) closureMethods.get(i);
-                CachedClass[] c = m.getParameterTypes();
-                if (c.length == 0) {
-                    m0 = m;
-                } else {
-                    if (c.length == 1 && c[0].getTheClass() == Object.class) {
-                        m1 = m;
-                    }
-                }
-            }
-            if (m0 != null && m1 != null) {
-                // standard closure (2 methods because "it" is with default null)
-                chooser = new StandardClosureChooser(m0, m1);
-            }
-        }
-        if (chooser == null) {
-            // standard chooser for cases if it is not a single method and if it is
-            // not the standard closure.
-            chooser = new NormalMethodChooser(theClass, closureMethods);
-        }
-    }
-
-    private MetaClass lookupObjectMetaClass(Object object) {
-        if (object instanceof GroovyObject) {
-            GroovyObject go = (GroovyObject) object;
-            return go.getMetaClass();
-        }
-        Class ownerClass = object.getClass();
-        if (ownerClass == Class.class) {
-            ownerClass = (Class) object;
-            return registry.getMetaClass(ownerClass);
-        }
-        MetaClass metaClass = InvokerHelper.getMetaClass(object);
-        return metaClass;
-    }
-
-    @Override
-    public List<MetaMethod> getMethods() {
-        List<MetaMethod> answer = CLOSURE_METACLASS.getMetaMethods();
-        answer.addAll(closureMethods.toList());
-        return answer;
-    }
-
-    @Override
-    public List<MetaMethod> getMetaMethods() {
-        return CLOSURE_METACLASS.getMetaMethods();
-    }
-
-    @Override
-    public List<MetaProperty> getProperties() {
-        return CLOSURE_METACLASS.getProperties();
-    }
-
-    @Override
-    public MetaMethod pickMethod(String name, Class[] argTypes) {
-        if (argTypes == null) argTypes = MetaClassHelper.EMPTY_CLASS_ARRAY;
-        if (name.equals(CLOSURE_CALL_METHOD) || name.equals(CLOSURE_DO_CALL_METHOD)) {
-            return pickClosureMethod(argTypes);
-        }
-        return CLOSURE_METACLASS.getMetaMethod(name, argTypes);
-    }
-
-    public MetaMethod retrieveStaticMethod(String methodName, Class[] arguments) {
-        return null;
-    }
-
-    protected boolean isInitialized() {
-        return initialized;
-    }
-
-    public MetaMethod getStaticMetaMethod(String name, Object[] args) {
-        return CLOSURE_METACLASS.getStaticMetaMethod(name, args);
-    }
-
-    public MetaMethod getStaticMetaMethod(String name, Class[] argTypes) {
-        return CLOSURE_METACLASS.getStaticMetaMethod(name, argTypes);
-    }
-
-    public Object getProperty(Class sender, Object object, String name, boolean useSuper, boolean fromInsideClass) {
-        if (object instanceof Class) {
-            return getStaticMetaClass().getProperty(sender, object, name, useSuper, fromInsideClass);
-        } else {
-            return CLOSURE_METACLASS.getProperty(sender, object, name, useSuper, fromInsideClass);
-        }
-    }
-
-    @Override
-    public Object getAttribute(Class sender, Object object, String attribute, boolean useSuper, boolean fromInsideClass) {
-        if (object instanceof Class) {
-            return getStaticMetaClass().getAttribute(sender, object, attribute, useSuper);
-        } else {
-            if (!attributeInitDone) initAttributes();
-            CachedField mfp = attributes.get(attribute);
-            if (mfp == null) {
-                return CLOSURE_METACLASS.getAttribute(sender, object, attribute, useSuper);
-            } else {
-                return mfp.getProperty(object);
-            }
-        }
-    }
-
-    @Override
-    public void setAttribute(Class sender, Object object, String attribute,
-                             Object newValue, boolean useSuper, boolean fromInsideClass) {
-        if (object instanceof Class) {
-            getStaticMetaClass().setAttribute(sender, object, attribute, newValue, useSuper, fromInsideClass);
-        } else {
-            if (!attributeInitDone) initAttributes();
-            CachedField mfp = attributes.get(attribute);
-            if (mfp == null) {
-                CLOSURE_METACLASS.setAttribute(sender, object, attribute, newValue, useSuper, fromInsideClass);
-            } else {
-                mfp.setProperty(object, newValue);
-            }
-        }
-    }
-
-    public Object invokeStaticMethod(Object object, String methodName, Object[] arguments) {
-        return getStaticMetaClass().invokeMethod(Class.class, object, methodName, arguments, false, false);
-    }
-
-    public void setProperty(Class sender, Object object, String name, Object newValue, boolean useSuper, boolean fromInsideClass) {
-        if (object instanceof Class) {
-            getStaticMetaClass().setProperty(sender, object, name, newValue, useSuper, fromInsideClass);
-        } else {
-            CLOSURE_METACLASS.setProperty(sender, object, name, newValue, useSuper, fromInsideClass);
-        }
-    }
-
-    public MetaMethod getMethodWithoutCaching(int index, Class sender, String methodName, Class[] arguments, boolean isCallToSuper) {
-        throw new UnsupportedOperationException();
-    }
-
-    public void setProperties(Object bean, Map map) {
-        throw new UnsupportedOperationException();
-    }
-
-    public void addMetaBeanProperty(MetaBeanProperty mp) {
-        throw new UnsupportedOperationException();
-    }
-
-    public void addMetaMethod(MetaMethod method) {
-        throw new UnsupportedOperationException();
-    }
-
-    public void addNewInstanceMethod(Method method) {
-        throw new UnsupportedOperationException();
-    }
-
-    public void addNewStaticMethod(Method method) {
-        throw new UnsupportedOperationException();
-    }
-
-    public Constructor retrieveConstructor(Class[] arguments) {
-        throw new UnsupportedOperationException();
-    }
-
-    public CallSite createPojoCallSite(CallSite site, Object receiver, Object[] args) {
-        throw new UnsupportedOperationException();
-    }
-
-    public CallSite createPogoCallSite(CallSite site, Object[] args) {
-        return new PogoMetaClassSite(site, this);
-    }
-
-    public CallSite createPogoCallCurrentSite(CallSite site, Class sender, Object[] args) {
-        return new PogoMetaClassSite(site, this);
-    }
-
-    public List respondsTo(Object obj, String name, Object[] argTypes) {
-        loadMetaInfo();
-        return super.respondsTo(obj, name, argTypes);
-    }
-
-    public List respondsTo(final Object obj, final String name) {
-        loadMetaInfo();
-        return super.respondsTo(obj, name);
-    }
-
-    private synchronized void loadMetaInfo() {
-        if (metaMethodIndex.isEmpty()) {
-            initialized = false;
-            super.initialize();
-            initialized = true;
-        }
-    }
-
-    protected void applyPropertyDescriptors(PropertyDescriptor[] propertyDescriptors) {
-        // do nothing
-    }
-}
+/*
+ *  Licensed to the Apache Software Foundation (ASF) under one
+ *  or more contributor license agreements.  See the NOTICE file
+ *  distributed with this work for additional information
+ *  regarding copyright ownership.  The ASF licenses this file
+ *  to you under the Apache License, Version 2.0 (the
+ *  "License"); you may not use this file except in compliance
+ *  with the License.  You may obtain a copy of the License at
+ *
+ *    http://www.apache.org/licenses/LICENSE-2.0
+ *
+ *  Unless required by applicable law or agreed to in writing,
+ *  software distributed under the License is distributed on an
+ *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ *  KIND, either express or implied.  See the License for the
+ *  specific language governing permissions and limitations
+ *  under the License.
+ */
+package org.codehaus.groovy.runtime.metaclass;
+
+import groovy.lang.Closure;
+import groovy.lang.ExpandoMetaClass;
+import groovy.lang.GroovyObject;
+import groovy.lang.GroovyRuntimeException;
+import groovy.lang.MetaBeanProperty;
+import groovy.lang.MetaClass;
+import groovy.lang.MetaClassImpl;
+import groovy.lang.MetaClassRegistry;
+import groovy.lang.MetaMethod;
+import groovy.lang.MetaProperty;
+import groovy.lang.MissingMethodException;
+import groovy.lang.MissingPropertyException;
+import groovy.lang.ProxyMetaClass;
+import org.codehaus.groovy.reflection.CachedClass;
+import org.codehaus.groovy.reflection.CachedField;
+import org.codehaus.groovy.reflection.CachedMethod;
+import org.codehaus.groovy.reflection.ParameterTypes;
+import org.codehaus.groovy.runtime.InvokerHelper;
+import org.codehaus.groovy.runtime.MetaClassHelper;
+import org.codehaus.groovy.runtime.callsite.CallSite;
+import org.codehaus.groovy.runtime.callsite.PogoMetaClassSite;
+import org.codehaus.groovy.runtime.wrappers.Wrapper;
+import org.codehaus.groovy.util.FastArray;
+
+import java.beans.PropertyDescriptor;
+import java.lang.reflect.Constructor;
+import java.lang.reflect.Method;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.LinkedList;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * A meta class for closures generated by the Groovy compiler. These classes
+ * have special characteristics this MetaClass uses. One of these is that a
+ * generated Closure has only additional doCall methods, all other methods
+ * are in the Closure class as well. To use this fact this MetaClass uses
+ * a MetaClass for Closure as static field And delegates calls to this
+ * MetaClass if needed. This allows a lean implementation for this MetaClass.
+ * Multiple generated closures will then use the same MetaClass for Closure.
+ * For static dispatching this class uses the MetaClass of Class, again
+ * all instances of this class will share that MetaClass. The Class MetaClass
+ * is initialized lazy, because most operations do not need this MetaClass.
+ * <p>
+ * The Closure and Class MetaClasses are not replaceable.
+ * <p>
+ * This MetaClass is for internal usage only!
+ *
+ * @since 1.5
+ */
+public final class ClosureMetaClass extends MetaClassImpl {
+    private volatile boolean initialized;
+    private final FastArray closureMethods = new FastArray(3);
+    private Map<String, CachedField> attributes = new HashMap<String, CachedField>();
+    private MethodChooser chooser;
+    private volatile boolean attributeInitDone = false;
+
+    private static MetaClassImpl CLOSURE_METACLASS;
+    private static MetaClassImpl classMetaClass;
+    private static final Object[] EMPTY_ARGUMENTS = {};
+    private static final String CLOSURE_CALL_METHOD = "call";
+    private static final String CLOSURE_DO_CALL_METHOD = "doCall";
+
+    static {
+        resetCachedMetaClasses();
+    }
+
+    public static void resetCachedMetaClasses() {
+        MetaClassImpl temp = new MetaClassImpl(Closure.class);
+        temp.initialize();
+        synchronized (ClosureMetaClass.class) {
+            CLOSURE_METACLASS = temp;
+        }
+        if (classMetaClass!=null) {
+            temp = new MetaClassImpl(Class.class);
+            temp.initialize();
+            synchronized (ClosureMetaClass.class) {
+                classMetaClass = temp;
+            }
+        }
+    }
+
+    private static synchronized MetaClass getStaticMetaClass() {
+        if (classMetaClass == null) {
+            classMetaClass = new MetaClassImpl(Class.class);
+            classMetaClass.initialize();
+        }
+        return classMetaClass;
+    }
+
+    private interface MethodChooser {
+        Object chooseMethod(Class[] arguments, boolean coerce);
+    }
+
+    private static class StandardClosureChooser implements MethodChooser {
+        private final MetaMethod doCall0;
+        private final MetaMethod doCall1;
+
+        StandardClosureChooser(MetaMethod m0, MetaMethod m1) {
+            doCall0 = m0;
+            doCall1 = m1;
+        }
+
+        public Object chooseMethod(Class[] arguments, boolean coerce) {
+            if (arguments.length == 0) return doCall0;
+            if (arguments.length == 1) return doCall1;
+            return null;
+        }
+    }
+
+    private static class NormalMethodChooser implements MethodChooser {
+        private final FastArray methods;
+        final Class theClass;
+
+        NormalMethodChooser(Class theClass, FastArray methods) {
+            this.theClass = theClass;
+            this.methods = methods;
+        }
+
+        public Object chooseMethod(Class[] arguments, boolean coerce) {
+            if (arguments.length == 0) {
+                return MetaClassHelper.chooseEmptyMethodParams(methods);
+            } else if (arguments.length == 1 && arguments[0] == null) {
+                return MetaClassHelper.chooseMostGeneralMethodWith1NullParam(methods);
+            } else {
+                List matchingMethods = new ArrayList();
+                final Object[] data = methods.getArray();
+                for (int i = 0, len = methods.size(); i != len; ++i) {
+                    Object method = data[i];
+
+                    // making this false helps find matches
+                    if (((ParameterTypes) method).isValidMethod(arguments)) {
+                        matchingMethods.add(method);
+                    }
+                }
+
+                int size = matchingMethods.size();
+                if (0 == size) {
+                    return null;
+                } else if (1 == size) {
+                    return matchingMethods.get(0);
+                }
+
+                return chooseMostSpecificParams(CLOSURE_DO_CALL_METHOD, matchingMethods, arguments);
+            }
+        }
+
+        private Object chooseMostSpecificParams(String name, List matchingMethods, Class[] arguments) {
+            return doChooseMostSpecificParams(theClass.getName(), name, matchingMethods, arguments, true);
+        }
+    }
+
+    public ClosureMetaClass(MetaClassRegistry registry, Class theClass) {
+        super(registry, theClass);
+    }
+
+    public MetaProperty getMetaProperty(String name) {
+        return CLOSURE_METACLASS.getMetaProperty(name);
+    }
+
+    private static void unwrap(Object[] arguments) {
+        for (int i = 0; i != arguments.length; i++) {
+            if (arguments[i] instanceof Wrapper) {
+                arguments[i] = ((Wrapper) arguments[i]).unwrap();
+            }
+        }
+    }
+
+    private MetaMethod pickClosureMethod(Class[] argClasses) {
+        Object answer = chooser.chooseMethod(argClasses, false);
+        return (MetaMethod) answer;
+    }
+
+    private MetaMethod getDelegateMethod(Closure closure, Object delegate, String methodName, Class[] argClasses) {
+        if (delegate == closure || delegate == null) return null;
+        if (delegate instanceof Class) {
+            for (Class superClass = (Class) delegate;
+                 superClass != Object.class && superClass != null;
+                 superClass = superClass.getSuperclass())
+            {
+                MetaClass mc = registry.getMetaClass(superClass);
+                MetaMethod method = mc.getStaticMetaMethod(methodName, argClasses);
+                if (method != null) return method;
+            }
+            return null;
+        } else {
+            MetaClass delegateMetaClass = lookupObjectMetaClass(delegate);
+            MetaMethod method = delegateMetaClass.pickMethod(methodName, argClasses);
+            if (method != null) {
+                return method;
+            }
+
+            if (delegateMetaClass instanceof ExpandoMetaClass) {
+                method = ((ExpandoMetaClass) delegateMetaClass).findMixinMethod(methodName, argClasses);
+
+                if (method != null) {
+                    onMixinMethodFound(method);
+                    return method;
+                }
+            }
+
+            if (delegateMetaClass instanceof MetaClassImpl) {
+                method = MetaClassImpl.findMethodInClassHierarchy(getTheClass(), methodName, argClasses, this);
+                if (method != null) {
+                    onSuperMethodFoundInHierarchy(method);
+                    return method;
+                }
+            }
+
+            return method;
+        }
+    }
+
+    public Object invokeMethod(Class sender, Object object, String methodName, Object[] originalArguments, boolean isCallToSuper, boolean fromInsideClass) {
+        checkInitalised();
+        if (object == null) {
+            throw new NullPointerException("Cannot invoke method: " + methodName + " on null object");
+        }
+
+        final Object[] arguments = makeArguments(originalArguments, methodName);
+        final Class[] argClasses = MetaClassHelper.convertToTypeArray(arguments);
+        unwrap(arguments);
+
+        MetaMethod method = null;
+        final Closure closure = (Closure) object;
+
+        if (CLOSURE_DO_CALL_METHOD.equals(methodName) || CLOSURE_CALL_METHOD.equals(methodName)) {
+            method = pickClosureMethod(argClasses);
+            if (method == null && arguments.length == 1 && arguments[0] instanceof List) {
+                Object[] newArguments = ((List) arguments[0]).toArray();
+                Class[] newArgClasses = MetaClassHelper.convertToTypeArray(newArguments);
+                method = createTransformMetaMethod(pickClosureMethod(newArgClasses));
+            }
+            if (method == null) throw new MissingMethodException(methodName, theClass, arguments, false);
+        }
+
+        boolean shouldDefer = closure.getResolveStrategy() == Closure.DELEGATE_ONLY && isInternalMethod(methodName);
+        if (method == null && !shouldDefer) {
+            method = CLOSURE_METACLASS.pickMethod(methodName, argClasses);
+        }
+
+        if (method != null) return method.doMethodInvoke(object, arguments);
+
+        MissingMethodException last = null;
+        Object callObject = object;
+        final Object owner = closure.getOwner();
+        final Object delegate = closure.getDelegate();
+        final Object thisObject = closure.getThisObject();
+        final int resolveStrategy = closure.getResolveStrategy();
+        boolean invokeOnDelegate = false;
+        boolean invokeOnOwner = false;
+        boolean ownerFirst = true;
+
+        switch (resolveStrategy) {
+            case Closure.TO_SELF:
+                break;
+            case Closure.DELEGATE_ONLY:
+                method = getDelegateMethod(closure, delegate, methodName, argClasses);
+                callObject = delegate;
+                if (method == null) {
+                    invokeOnDelegate = delegate != closure && (delegate instanceof GroovyObject);
+                }
+                break;
+            case Closure.OWNER_ONLY:
+                method = getDelegateMethod(closure, owner, methodName, argClasses);
+                callObject = owner;
+                if (method == null) {
+                    invokeOnOwner = owner != closure && (owner instanceof GroovyObject);
+                }
+
+                break;
+            case Closure.DELEGATE_FIRST:
+                method = getDelegateMethod(closure, delegate, methodName, argClasses);
+                callObject = delegate;
+                if (method == null) {
+                    method = getDelegateMethod(closure, owner, methodName, argClasses);
+                    callObject = owner;
+                }
+                if (method == null) {
+                    invokeOnDelegate = delegate != closure && (delegate instanceof GroovyObject);
+                    invokeOnOwner = owner != closure && (owner instanceof GroovyObject);
+                    ownerFirst = false;
+                }
+                break;
... 10397 lines suppressed ...


Mime
View raw message