You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@groovy.apache.org by su...@apache.org on 2017/12/20 00:56:15 UTC

[18/49] groovy git commit: Move source files to proper packages

http://git-wip-us.apache.org/repos/asf/groovy/blob/10110145/src/main/groovy/lang/GroovyShell.java
----------------------------------------------------------------------
diff --git a/src/main/groovy/lang/GroovyShell.java b/src/main/groovy/lang/GroovyShell.java
deleted file mode 100644
index 4dc51c9..0000000
--- a/src/main/groovy/lang/GroovyShell.java
+++ /dev/null
@@ -1,611 +0,0 @@
-/*
- *  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 groovy.lang;
-
-import groovy.security.GroovyCodeSourcePermission;
-import groovy.ui.GroovyMain;
-import org.apache.groovy.plugin.GroovyRunner;
-import org.apache.groovy.plugin.GroovyRunnerRegistry;
-import org.codehaus.groovy.control.CompilationFailedException;
-import org.codehaus.groovy.control.CompilerConfiguration;
-import org.codehaus.groovy.runtime.InvokerHelper;
-import org.codehaus.groovy.runtime.InvokerInvocationException;
-
-import java.io.File;
-import java.io.IOException;
-import java.io.Reader;
-import java.lang.reflect.Constructor;
-import java.lang.reflect.InvocationTargetException;
-import java.net.URI;
-import java.security.AccessController;
-import java.security.PrivilegedAction;
-import java.security.PrivilegedActionException;
-import java.security.PrivilegedExceptionAction;
-import java.util.List;
-
-import static org.codehaus.groovy.runtime.InvokerHelper.MAIN_METHOD_NAME;
-
-/**
- * Represents a groovy shell capable of running arbitrary groovy scripts
- *
- * @author <a href="mailto:james@coredevelopers.net">James Strachan</a>
- * @author Guillaume Laforge
- * @author Paul King
- */
-public class GroovyShell extends GroovyObjectSupport {
-
-    public static final String DEFAULT_CODE_BASE = "/groovy/shell";
-
-    private final Binding context;
-    private int counter;
-    private final CompilerConfiguration config;
-    private GroovyClassLoader loader;
-
-    public static void main(String[] args) {
-        GroovyMain.main(args);
-    }
-
-    public GroovyShell() {
-        this(null, new Binding());
-    }
-
-    public GroovyShell(Binding binding) {
-        this(null, binding);
-    }
-
-    public GroovyShell(ClassLoader parent, CompilerConfiguration config) {
-        this(parent, new Binding(), config);
-    }
-
-    public GroovyShell(CompilerConfiguration config) {
-        this(new Binding(), config);
-    }
-
-    public GroovyShell(Binding binding, CompilerConfiguration config) {
-        this(null, binding, config);
-    }
-
-    public GroovyShell(ClassLoader parent, Binding binding) {
-        this(parent, binding, CompilerConfiguration.DEFAULT);
-    }
-
-    public GroovyShell(ClassLoader parent) {
-        this(parent, new Binding(), CompilerConfiguration.DEFAULT);
-    }
-    
-    public GroovyShell(ClassLoader parent, Binding binding, final CompilerConfiguration config) {
-        if (binding == null) {
-            throw new IllegalArgumentException("Binding must not be null.");
-        }
-        if (config == null) {
-            throw new IllegalArgumentException("Compiler configuration must not be null.");
-        }
-        final ClassLoader parentLoader = (parent!=null)?parent:GroovyShell.class.getClassLoader();
-        this.loader = AccessController.doPrivileged(new PrivilegedAction<GroovyClassLoader>() {
-            public GroovyClassLoader run() {
-                return new GroovyClassLoader(parentLoader,config);
-            }
-        });
-        this.context = binding;        
-        this.config = config;
-    }
-    
-    public void resetLoadedClasses() {
-        loader.clearCache();
-    }
-
-    /**
-     * Creates a child shell using a new ClassLoader which uses the parent shell's
-     * class loader as its parent
-     *
-     * @param shell is the parent shell used for the variable bindings and the parent class loader
-     */
-    public GroovyShell(GroovyShell shell) {
-        this(shell.loader, shell.context);
-    }
-
-    public Binding getContext() {
-        return context;
-    }
-
-    public GroovyClassLoader getClassLoader() {
-        return loader;
-    }
-
-    public Object getProperty(String property) {
-        Object answer = getVariable(property);
-        if (answer == null) {
-            answer = super.getProperty(property);
-        }
-        return answer;
-    }
-
-    public void setProperty(String property, Object newValue) {
-        setVariable(property, newValue);
-        try {
-            super.setProperty(property, newValue);
-        } catch (GroovyRuntimeException e) {
-            // ignore, was probably a dynamic property
-        }
-    }
-
-    //
-    // FIXME: Use List<String> here, current version is not safe
-    //
-
-    /**
-     * A helper method which runs the given script file with the given command line arguments
-     *
-     * @param scriptFile the file of the script to run
-     * @param list       the command line arguments to pass in
-     */
-    public Object run(File scriptFile, List list) throws CompilationFailedException, IOException {
-        String[] args = new String[list.size()];
-        return run(scriptFile, (String[]) list.toArray(args));
-    }
-
-    /**
-     * A helper method which runs the given cl script with the given command line arguments
-     *
-     * @param scriptText is the text content of the script
-     * @param fileName   is the logical file name of the script (which is used to create the class name of the script)
-     * @param list       the command line arguments to pass in
-     */
-    public Object run(String scriptText, String fileName, List list) throws CompilationFailedException {
-        String[] args = new String[list.size()];
-        list.toArray(args);
-        return run(scriptText, fileName, args);
-    }
-
-    /**
-     * Runs the given script file name with the given command line arguments
-     *
-     * @param scriptFile the file name of the script to run
-     * @param args       the command line arguments to pass in
-     */
-    public Object run(final File scriptFile, String[] args) throws CompilationFailedException, IOException {
-        String scriptName = scriptFile.getName();
-        int p = scriptName.lastIndexOf(".");
-        if (p++ >= 0) {
-            if (scriptName.substring(p).equals("java")) {
-                throw new CompilationFailedException(0, null);
-            }
-        }
-
-        // Get the current context classloader and save it on the stack
-        final Thread thread = Thread.currentThread();
-        //ClassLoader currentClassLoader = thread.getContextClassLoader();
-
-        class DoSetContext implements PrivilegedAction {
-            ClassLoader classLoader;
-
-            public DoSetContext(ClassLoader loader) {
-                classLoader = loader;
-            }
-
-            public Object run() {
-                thread.setContextClassLoader(classLoader);
-                return null;
-            }
-        }
-
-        AccessController.doPrivileged(new DoSetContext(loader));
-
-        // Parse the script, generate the class, and invoke the main method.  This is a little looser than
-        // if you are compiling the script because the JVM isn't executing the main method.
-        Class scriptClass;
-        try {
-            scriptClass = AccessController.doPrivileged(new PrivilegedExceptionAction<Class>() {
-                public Class run() throws CompilationFailedException, IOException {
-                    return loader.parseClass(scriptFile);
-                }
-            });
-        } catch (PrivilegedActionException pae) {
-            Exception e = pae.getException();
-            if (e instanceof CompilationFailedException) {
-                throw (CompilationFailedException) e;
-            } else if (e instanceof IOException) {
-                throw (IOException) e;
-            } else {
-                throw (RuntimeException) pae.getException();
-            }
-        }
-
-        return runScriptOrMainOrTestOrRunnable(scriptClass, args);
-
-        // Set the context classloader back to what it was.
-        //AccessController.doPrivileged(new DoSetContext(currentClassLoader));
-    }
-
-    /**
-     * if (theClass is a Script) {
-     * run it like a script
-     * } else if (theClass has a main method) {
-     * run the main method
-     * } else if (theClass instanceof GroovyTestCase) {
-     * use the test runner to run it
-     * } else if (theClass implements Runnable) {
-     * if (theClass has a constructor with String[] params)
-     * instantiate theClass with this constructor and run
-     * else if (theClass has a no-args constructor)
-     * instantiate theClass with the no-args constructor and run
-     * }
-     */
-    private Object runScriptOrMainOrTestOrRunnable(Class scriptClass, String[] args) {
-        // Always set the "args" property, regardless of what path we take in the code.
-        // Bad enough to have side effects but worse if their behavior is wonky.
-        context.setProperty("args", args);
-
-        if (scriptClass == null) {
-            return null;
-        }
-
-        //TODO: This logic mostly duplicates InvokerHelper.createScript.  They should probably be unified.
-
-        if (Script.class.isAssignableFrom(scriptClass)) {
-            // treat it just like a script if it is one
-            try {
-                Script script = InvokerHelper.newScript(scriptClass, context);
-                return script.run();
-            } catch (InstantiationException e) {
-                // ignore instantiation errors,, try to do main
-            } catch (IllegalAccessException e) {
-               // ignore instantiation errors, try to do main
-            } catch (InvocationTargetException e) {
-                // ignore instantiation errors, try to do main
-            }
-        }
-        try {
-            // let's find a main method
-            scriptClass.getMethod(MAIN_METHOD_NAME, String[].class);
-            // if that main method exist, invoke it
-            return InvokerHelper.invokeMethod(scriptClass, MAIN_METHOD_NAME, new Object[]{args});
-        } catch (NoSuchMethodException e) {
-            // if it implements Runnable, try to instantiate it
-            if (Runnable.class.isAssignableFrom(scriptClass)) {
-                return runRunnable(scriptClass, args);
-            }
-            GroovyRunnerRegistry runnerRegistry = GroovyRunnerRegistry.getInstance();
-            for (GroovyRunner runner : runnerRegistry) {
-                if (runner.canRun(scriptClass, this.loader)) {
-                    return runner.run(scriptClass, this.loader);
-                }
-            }
-            StringBuilder message = new StringBuilder("This script or class could not be run.\n" +
-                    "It should either:\n" +
-                    "- have a main method,\n" +
-                    "- be a JUnit test or extend GroovyTestCase,\n" +
-                    "- implement the Runnable interface,\n" +
-                    "- or be compatible with a registered script runner. Known runners:\n");
-            if (runnerRegistry.isEmpty()) {
-                message.append("  * <none>");
-            } else {
-                for (String key : runnerRegistry.keySet()) {
-                    message.append("  * ").append(key).append("\n");
-                }
-            }
-            throw new GroovyRuntimeException(message.toString());
-        }
-    }
-
-    private static Object runRunnable(Class scriptClass, String[] args) {
-        Constructor constructor = null;
-        Runnable runnable = null;
-        Throwable reason = null;
-        try {
-            // first, fetch the constructor taking String[] as parameter
-            constructor = scriptClass.getConstructor((new String[]{}).getClass());
-            try {
-                // instantiate a runnable and run it
-                runnable = (Runnable) constructor.newInstance(new Object[]{args});
-            } catch (Throwable t) {
-                reason = t;
-            }
-        } catch (NoSuchMethodException e1) {
-            try {
-                // otherwise, find the default constructor
-                constructor = scriptClass.getConstructor();
-                try {
-                    // instantiate a runnable and run it
-                    runnable = (Runnable) constructor.newInstance();
-                } catch (InvocationTargetException ite) {
-                    throw new InvokerInvocationException(ite.getTargetException());
-                } catch (Throwable t) {
-                    reason = t;
-                }
-            } catch (NoSuchMethodException nsme) {
-                reason = nsme;
-            }
-        }
-        if (constructor != null && runnable != null) {
-            runnable.run();
-        } else {
-            throw new GroovyRuntimeException("This script or class was runnable but could not be run. ", reason);
-        }
-        return null;
-    }
-
-    /**
-     * Runs the given script text with command line arguments
-     *
-     * @param scriptText is the text content of the script
-     * @param fileName   is the logical file name of the script (which is used to create the class name of the script)
-     * @param args       the command line arguments to pass in
-     */
-    public Object run(final String scriptText, final String fileName, String[] args) throws CompilationFailedException {
-        GroovyCodeSource gcs = AccessController.doPrivileged(new PrivilegedAction<GroovyCodeSource>() {
-            public GroovyCodeSource run() {
-                return new GroovyCodeSource(scriptText, fileName, DEFAULT_CODE_BASE);
-            }
-        });
-        return run(gcs, args);
-    }
-
-    /**
-     * Runs the given script source with command line arguments
-     *
-     * @param source    is the source content of the script
-     * @param args      the command line arguments to pass in
-     */
-    public Object run(GroovyCodeSource source, List args) throws CompilationFailedException {
-        return run(source, ((String[]) args.toArray(new String[args.size()])));
-    }
-
-    /**
-     * Runs the given script source with command line arguments
-     *
-     * @param source    is the source content of the script
-     * @param args      the command line arguments to pass in
-     */
-    public Object run(GroovyCodeSource source, String[] args) throws CompilationFailedException {
-        Class scriptClass = parseClass(source);
-        return runScriptOrMainOrTestOrRunnable(scriptClass, args);
-    }
-
-    /**
-     * Runs the given script source with command line arguments
-     *
-     * @param source    is the source content of the script
-     * @param args      the command line arguments to pass in
-     */
-    public Object run(URI source, List args) throws CompilationFailedException, IOException {
-        return run(new GroovyCodeSource(source), ((String[]) args.toArray(new String[args.size()])));
-    }
-
-    /**
-     * Runs the given script source with command line arguments
-     *
-     * @param source    is the source content of the script
-     * @param args      the command line arguments to pass in
-     */
-    public Object run(URI source, String[] args) throws CompilationFailedException, IOException {
-        return run(new GroovyCodeSource(source), args);
-    }
-
-    /**
-     * Runs the given script with command line arguments
-     *
-     * @param in       the stream reading the script
-     * @param fileName is the logical file name of the script (which is used to create the class name of the script)
-     * @param list     the command line arguments to pass in
-     */
-    public Object run(final Reader in, final String fileName, List list) throws CompilationFailedException {
-        return run(in, fileName, (String[]) list.toArray(new String[list.size()]));
-    }
-
-    /**
-     * Runs the given script with command line arguments
-     *
-     * @param in       the stream reading the script
-     * @param fileName is the logical file name of the script (which is used to create the class name of the script)
-     * @param args     the command line arguments to pass in
-     */
-    public Object run(final Reader in, final String fileName, String[] args) throws CompilationFailedException {
-        GroovyCodeSource gcs = AccessController.doPrivileged(new PrivilegedAction<GroovyCodeSource>() {
-                    public GroovyCodeSource run() {
-                        return new GroovyCodeSource(in, fileName, DEFAULT_CODE_BASE);
-                    }
-        });
-        Class scriptClass = parseClass(gcs);
-        return runScriptOrMainOrTestOrRunnable(scriptClass, args);
-    }
-
-    public Object getVariable(String name) {
-        return context.getVariables().get(name);
-    }
-
-    public void setVariable(String name, Object value) {
-        context.setVariable(name, value);
-    }
-
-    /**
-     * Evaluates some script against the current Binding and returns the result
-     *
-     * @param codeSource
-     * @throws CompilationFailedException
-     */
-    public Object evaluate(GroovyCodeSource codeSource) throws CompilationFailedException {
-        Script script = parse(codeSource);
-        return script.run();
-    }
-
-    /**
-     * Evaluates some script against the current Binding and returns the result
-     *
-     * @param scriptText the text of the script
-     */
-    public Object evaluate(final String scriptText) throws CompilationFailedException {
-        return evaluate(scriptText, generateScriptName(), DEFAULT_CODE_BASE);
-    }
-
-    /**
-     * Evaluates some script against the current Binding and returns the result
-     *
-     * @param scriptText the text of the script
-     * @param fileName   is the logical file name of the script (which is used to create the class name of the script)
-     */
-    public Object evaluate(String scriptText, String fileName) throws CompilationFailedException {
-        return evaluate(scriptText, fileName, DEFAULT_CODE_BASE);
-    }
-
-    /**
-     * Evaluates some script against the current Binding and returns the result.
-     * The .class file created from the script is given the supplied codeBase
-     */
-    public Object evaluate(final String scriptText, final String fileName, final String codeBase) throws CompilationFailedException {
-        SecurityManager sm = System.getSecurityManager();
-        if (sm != null) {
-            sm.checkPermission(new GroovyCodeSourcePermission(codeBase));
-        }
-
-        GroovyCodeSource gcs = AccessController.doPrivileged(new PrivilegedAction<GroovyCodeSource>() {
-            public GroovyCodeSource run() {
-                return new GroovyCodeSource(scriptText, fileName, codeBase);
-            }
-        });
-
-        return evaluate(gcs);
-    }
-
-    /**
-     * Evaluates some script against the current Binding and returns the result
-     *
-     * @param file is the file of the script (which is used to create the class name of the script)
-     */
-    public Object evaluate(File file) throws CompilationFailedException, IOException {
-        return evaluate(new GroovyCodeSource(file, config.getSourceEncoding()));
-    }
-
-    /**
-     * Evaluates some script against the current Binding and returns the result
-     *
-     * @param uri is the URI of the script (which is used to create the class name of the script)
-     */
-    public Object evaluate(URI uri) throws CompilationFailedException, IOException {
-        return evaluate(new GroovyCodeSource(uri));
-    }
-
-    /**
-     * Evaluates some script against the current Binding and returns the result
-     *
-     * @param in the stream reading the script
-     */
-    public Object evaluate(Reader in) throws CompilationFailedException {
-        return evaluate(in, generateScriptName());
-    }
-
-    /**
-     * Evaluates some script against the current Binding and returns the result
-     *
-     * @param in       the stream reading the script
-     * @param fileName is the logical file name of the script (which is used to create the class name of the script)
-     */
-    public Object evaluate(Reader in, String fileName) throws CompilationFailedException {
-        Script script = null;
-        try {
-            script = parse(in, fileName);
-            return script.run();
-        } finally {
-            if (script != null) {
-                InvokerHelper.removeClass(script.getClass());
-            }
-        }
-    }
-
-
-    /**
-     * Parses the given script and returns it ready to be run
-     *
-     * @param reader    the stream reading the script
-     * @param fileName  is the logical file name of the script (which is used to create the class name of the script)
-     * @return the parsed script which is ready to be run via {@link Script#run()}
-     */
-    public Script parse(final Reader reader, final String fileName) throws CompilationFailedException {
-        return parse(new GroovyCodeSource(reader, fileName, DEFAULT_CODE_BASE));
-    }
-
-    /**
-     * Parses the groovy code contained in codeSource and returns a java class.
-     */
-    private Class parseClass(final GroovyCodeSource codeSource) throws CompilationFailedException {
-        // Don't cache scripts
-        return loader.parseClass(codeSource, false);
-    }
-
-    /**
-     * Parses the given script and returns it ready to be run.  When running in a secure environment
-     * (-Djava.security.manager) codeSource.getCodeSource() determines what policy grants should be
-     * given to the script.
-     *
-     * @param codeSource
-     * @return ready to run script
-     */
-    public Script parse(final GroovyCodeSource codeSource) throws CompilationFailedException {
-        return InvokerHelper.createScript(parseClass(codeSource), context);
-    }
-
-    /**
-     * Parses the given script and returns it ready to be run
-     *
-     * @param file is the file of the script (which is used to create the class name of the script)
-     */
-    public Script parse(File file) throws CompilationFailedException, IOException {
-        return parse(new GroovyCodeSource(file, config.getSourceEncoding()));
-    }
-
-    /**
-     * Parses the given script and returns it ready to be run
-     *
-     * @param uri is the URI of the script (which is used to create the class name of the script)
-     */
-    public Script parse(URI uri) throws CompilationFailedException, IOException {
-        return parse(new GroovyCodeSource(uri));
-    }
-
-    /**
-     * Parses the given script and returns it ready to be run
-     *
-     * @param scriptText the text of the script
-     */
-    public Script parse(String scriptText) throws CompilationFailedException {
-        return parse(scriptText, generateScriptName());
-    }
-
-    public Script parse(final String scriptText, final String fileName) throws CompilationFailedException {
-        GroovyCodeSource gcs = AccessController.doPrivileged(new PrivilegedAction<GroovyCodeSource>() {
-            public GroovyCodeSource run() {
-                return new GroovyCodeSource(scriptText, fileName, DEFAULT_CODE_BASE);
-            }
-        });
-        return parse(gcs);
-    }
-
-    /**
-     * Parses the given script and returns it ready to be run
-     *
-     * @param in the stream reading the script
-     */
-    public Script parse(Reader in) throws CompilationFailedException {
-        return parse(in, generateScriptName());
-    }
-
-    protected synchronized String generateScriptName() {
-        return "Script" + (++counter) + ".groovy";
-    }
-}

http://git-wip-us.apache.org/repos/asf/groovy/blob/10110145/src/main/groovy/lang/GroovySystem.java
----------------------------------------------------------------------
diff --git a/src/main/groovy/lang/GroovySystem.java b/src/main/groovy/lang/GroovySystem.java
deleted file mode 100644
index cb5ea98..0000000
--- a/src/main/groovy/lang/GroovySystem.java
+++ /dev/null
@@ -1,103 +0,0 @@
-/*
- *  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 groovy.lang;
-
-import org.apache.groovy.plugin.GroovyRunner;
-import org.apache.groovy.plugin.GroovyRunnerRegistry;
-import org.codehaus.groovy.runtime.metaclass.MetaClassRegistryImpl;
-import org.codehaus.groovy.util.ReferenceBundle;
-import org.codehaus.groovy.util.ReleaseInfo;
-
-import java.util.Map;
-
-public final class GroovySystem {
-    //
-    //  TODO: make this initialization able to set useReflection true
-    //  TODO: have some way of specifying another MetaClass Registry implementation
-    //
-    static {
-        USE_REFLECTION = true;
-        META_CLASS_REGISTRY = new MetaClassRegistryImpl();
-    }
-    
-    /**
-     * If true then the MetaClass will only use reflection for method dispatch, property access, etc.
-     */
-    @Deprecated
-    private static final boolean USE_REFLECTION;
-
-    /**
-     * Reference to the MetaClass Registry to be used by the Groovy run-time system to map classes to MetaClasses
-     */
-    private static final MetaClassRegistry META_CLASS_REGISTRY;
-
-    /**
-     * Reference to the Runtime Registry to be used by the Groovy run-time system to find classes capable of running scripts
-     *
-     * @deprecated use {@link GroovyRunnerRegistry}
-     */
-    @Deprecated
-    public static final Map<String, GroovyRunner> RUNNER_REGISTRY = GroovyRunnerRegistry.getInstance();
-
-    private static boolean keepJavaMetaClasses=false;
-    
-    private GroovySystem() {
-        // Do not allow this class to be instantiated
-    }
-
-    @Deprecated
-    public static boolean isUseReflection() {
-        return USE_REFLECTION;
-    }
-
-    public static MetaClassRegistry getMetaClassRegistry() {
-        return META_CLASS_REGISTRY;
-    }
-    
-    public static void setKeepJavaMetaClasses(boolean keepJavaMetaClasses) {
-        GroovySystem.keepJavaMetaClasses = keepJavaMetaClasses;
-    }
-    
-    public static boolean isKeepJavaMetaClasses() {
-        return keepJavaMetaClasses;
-    }
-    
-    /**
-     * This method can be used to ensure that no threaded created
-     * by a reference manager will be active. This is useful if the Groovy
-     * runtime itself is loaded through a class loader which should be disposed
-     * off. Without calling this method and if a threaded reference manager is
-     * active the class loader cannot be unloaded!
-     * 
-     * Per default no threaded manager will be used.
-     * 
-     * @since 1.6
-     */
-    public static void stopThreadedReferenceManager() {
-        ReferenceBundle.getSoftBundle().getManager().stopThread();
-        ReferenceBundle.getWeakBundle().getManager().stopThread();
-    }
-
-    /**
-     * Returns the groovy version
-     */
-    public static String getVersion() {
-        return ReleaseInfo.getVersion();
-    }
-}

http://git-wip-us.apache.org/repos/asf/groovy/blob/10110145/src/main/groovy/lang/Groovydoc.java
----------------------------------------------------------------------
diff --git a/src/main/groovy/lang/Groovydoc.java b/src/main/groovy/lang/Groovydoc.java
deleted file mode 100644
index 7327913..0000000
--- a/src/main/groovy/lang/Groovydoc.java
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
- *  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 groovy.lang;
-
-import java.lang.annotation.Documented;
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.lang.annotation.Target;
-
-/**
- * An annotation to hold the groovydoc for the annotated element at runtime, we call it "Runtime Groovydoc".
- * Runtime Groovydoc is a bit like Python's Documentation Strings and will be useful for IDE and developers who set a high value on documentations.
- *
- * The usage is very simple, just place @Groovydoc at the beginning of the content of groovydoc, then the new parser Parrot will attach the annotation Groovydoc automatically
- *
- * @since 3.0.0
- */
-@Documented
-@Target({ElementType.TYPE, ElementType.ANNOTATION_TYPE, ElementType.FIELD, ElementType.METHOD, ElementType.CONSTRUCTOR})
-@Retention(RetentionPolicy.RUNTIME)
-public @interface Groovydoc {
-    String value();
-}

http://git-wip-us.apache.org/repos/asf/groovy/blob/10110145/src/main/groovy/lang/IllegalPropertyAccessException.java
----------------------------------------------------------------------
diff --git a/src/main/groovy/lang/IllegalPropertyAccessException.java b/src/main/groovy/lang/IllegalPropertyAccessException.java
deleted file mode 100644
index 8227e3f..0000000
--- a/src/main/groovy/lang/IllegalPropertyAccessException.java
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
- *  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 groovy.lang;
-
-import java.lang.reflect.Field;
-import java.lang.reflect.Modifier;
-
-/**
- * An exception occurred if a dynamic property dispatch fails with a 
- * field not accessible.
- * 
- * @author <a href="mailto:blackdrag@uni.de">Jochen Theodorou</a>
- */
-public class IllegalPropertyAccessException extends MissingPropertyException {
-    
-    private static String makeMessage(String propertyName, Class clazz, int modifiers, boolean isField) {
-        String access = "private";
-        if (Modifier.isProtected(modifiers)) access = "protected";
-        if (Modifier.isPublic(modifiers)) access = "public";
-        String propertyType = "property";
-        if (isField) propertyType = "field";
-        return  "Can not access the "+access+" "+propertyType+" "+propertyName+" in class "+clazz.getName();
-    }
-    
-    public IllegalPropertyAccessException(String propertyName, Class clazz, int modifiers) {
-        super(makeMessage(propertyName,clazz,modifiers,false),propertyName,clazz);
-    }
-    
-    public IllegalPropertyAccessException(Field field, Class clazz) {
-        super(makeMessage(field.getName(),clazz,field.getModifiers(),true),field.getName(),clazz);
-    }
-    
-}

http://git-wip-us.apache.org/repos/asf/groovy/blob/10110145/src/main/groovy/lang/IncorrectClosureArgumentsException.java
----------------------------------------------------------------------
diff --git a/src/main/groovy/lang/IncorrectClosureArgumentsException.java b/src/main/groovy/lang/IncorrectClosureArgumentsException.java
deleted file mode 100644
index f5b23f5..0000000
--- a/src/main/groovy/lang/IncorrectClosureArgumentsException.java
+++ /dev/null
@@ -1,60 +0,0 @@
-/*
- *  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 groovy.lang;
-
-import org.codehaus.groovy.runtime.InvokerHelper;
-
-/**
- * An exception occurred when invoking a Closure with the wrong number and/or
- * types of arguments
- * 
- * @author <a href="mailto:james@coredevelopers.net">James Strachan</a>
- */
-public class IncorrectClosureArgumentsException extends GroovyRuntimeException {
-
-    private final Closure closure;
-    private final Object arguments;
-    private final Class[] expected;
-
-    public IncorrectClosureArgumentsException(Closure closure, Object arguments, Class[] expected) {
-        super(
-            "Incorrect arguments to closure: "
-                + closure
-                + ". Expected: "
-                + InvokerHelper.toString(expected)
-                + ", actual: "
-                + InvokerHelper.toString(arguments));
-        this.closure = closure;
-        this.arguments = arguments;
-        this.expected = expected;
-    }
-
-    public Object getArguments() {
-        return arguments;
-    }
-
-    public Closure getClosure() {
-        return closure;
-    }
-
-    public Class[] getExpected() {
-        return expected;
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/groovy/blob/10110145/src/main/groovy/lang/IntRange.java
----------------------------------------------------------------------
diff --git a/src/main/groovy/lang/IntRange.java b/src/main/groovy/lang/IntRange.java
deleted file mode 100644
index 9377098..0000000
--- a/src/main/groovy/lang/IntRange.java
+++ /dev/null
@@ -1,440 +0,0 @@
-/*
- *  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 groovy.lang;
-
-import org.codehaus.groovy.runtime.IteratorClosureAdapter;
-import org.codehaus.groovy.runtime.RangeInfo;
-
-import java.math.BigInteger;
-import java.util.AbstractList;
-import java.util.Collection;
-import java.util.Iterator;
-import java.util.List;
-import java.util.NoSuchElementException;
-
-/**
- * Represents a list of Integer objects starting at a specified {@code from} value up (or down)
- * to and potentially including a given {@code to} value.
- * <p>
- * Instances of this class may be either inclusive aware or non-inclusive aware. See the
- * relevant constructors for creating each type. Inclusive aware IntRange instances are
- * suitable for use with Groovy's range indexing - in particular if the from or to values
- * might be negative. This normally happens underneath the covers but is worth keeping
- * in mind if creating these ranges yourself explicitly.
- * <p>
- * Note: the design of this class might seem a little strange at first. It contains a Boolean
- * field, {@code inclusive}, which can be {@code true}, {@code false} or {@code null}. This
- * design is for backwards compatibility reasons. Groovy uses this class under the covers
- * to represent range indexing, e.g. {@code someList[x..y]} and {@code someString[x..<y]}.
- * In early versions of Groovy the ranges in these expressions were represented under the
- * covers by the {@code new IntRange(x, y)} and {@code new IntRange(x, y-1)}. This turns
- * out to be a lossy abstraction when x and/or y are negative values. Now the latter case
- * is represented by {@code new IntRange(false, x, y)}.
- * <p>
- * Note: This class is a copy of {@link ObjectRange} optimized for <code>int</code>. If you make any
- * changes to this class, you might consider making parallel changes to {@link ObjectRange}.
- */
-public class IntRange extends AbstractList<Integer> implements Range<Integer> {
-
-    /**
-     * Iterates through each number in an <code>IntRange</code>.
-     */
-    private class IntRangeIterator implements Iterator<Integer> {
-        /**
-         * Counts from 0 up to size - 1.
-         */
-        private int index;
-
-        /**
-         * The number of values in the range.
-         */
-        private int size = size();
-
-        /**
-         * The next value to return.
-         */
-        private int value = isReverse() ? getTo() : getFrom();
-
-        @Override
-        public boolean hasNext() {
-            return index < size;
-        }
-
-        @Override
-        public Integer next() {
-            if (!hasNext()) {
-                throw new NoSuchElementException();
-            }
-            if (index++ > 0) {
-                if (isReverse()) {
-                    --value;
-                } else {
-                    ++value;
-                }
-            }
-            return value;
-        }
-
-        /**
-         * Not supported.
-         *
-         * @throws java.lang.UnsupportedOperationException always
-         */
-        @Override
-        public void remove() {
-            IntRange.this.remove(index);
-        }
-    }
-
-    /**
-     * For non-inclusive aware ranges, the first number in the range; <code>from</code> is always less than or equal to <code>to</code>.
-     * For inclusive aware ranges, the <code>from</code> argument supplied to the constructor.
-     */
-    private final int from;
-
-    /**
-     * For non-inclusive aware ranges, the last number in the range; <code>to</code> is always greater than or equal to <code>from</code>.
-     * For inclusive aware ranges, the <code>from</code> argument supplied to the constructor.
-     */
-    private final int to;
-
-    /**
-     * If <code>false</code>, counts up from <code>from</code> to <code>to</code>.  Otherwise, counts down
-     * from <code>to</code> to <code>from</code>. Not used for inclusive-aware ranges (inclusive = true|false).
-     */
-    private final boolean reverse;
-
-    /**
-     * If <code>true</code> or null, <code>to</code> is included in the range.
-     * If <code>false</code>, the range stops before the <code>to</code> value.
-     * <p>
-     * Null for non-inclusive-aware ranges (which are inclusive).
-     * <p>
-     * If true or false, the reverse flag is discarded.
-     */
-    private final Boolean inclusive;
-
-    /**
-     * Creates a new non-inclusive aware <code>IntRange</code>. If <code>from</code> is greater than
-     * <code>to</code>, a reverse range is created with <code>from</code> and <code>to</code> swapped.
-     *
-     * @param from the first number in the range.
-     * @param to   the last number in the range.
-     * @throws IllegalArgumentException if the range would contain more than {@link Integer#MAX_VALUE} values.
-     */
-    public IntRange(int from, int to) {
-        this.inclusive = null;
-        if (from > to) {
-            this.from = to;
-            this.to = from;
-            this.reverse = true;
-        } else {
-            this.from = from;
-            this.to = to;
-            this.reverse = false;
-        }
-        checkSize();
-    }
-
-    /**
-     * Creates a new non-inclusive aware <code>IntRange</code>.
-     *
-     * @param from    the first value in the range.
-     * @param to      the last value in the range.
-     * @param reverse <code>true</code> if the range should count from
-     *                <code>to</code> to <code>from</code>.
-     * @throws IllegalArgumentException if <code>from</code> is greater than <code>to</code>.
-     */
-    protected IntRange(int from, int to, boolean reverse) {
-        this.inclusive = null;
-        if (from > to) {
-            throw new IllegalArgumentException("'from' must be less than or equal to 'to'");
-        }
-
-        this.from = from;
-        this.to = to;
-        this.reverse = reverse;
-        checkSize();
-    }
-
-    /**
-     * Creates a new inclusive aware <code>IntRange</code>.
-     *
-     * @param from      the first value in the range.
-     * @param to        the last value in the range.
-     * @param inclusive <code>true</code> if the to value is included in the range.
-     */
-    public IntRange(boolean inclusive, int from, int to) {
-        this.from = from;
-        this.to = to;
-        this.inclusive = inclusive;
-        this.reverse = false; // range may still be reversed, this value is ignored for inclusive-aware ranges
-        checkSize();
-    }
-
-    /**
-     * Creates a new NumberRange with the same <code>from</code> and <code>to</code> as this
-     * IntRange but with a step size of <code>stepSize</code>.
-     *
-     * @param stepSize the desired step size
-     * @return a new NumberRange
-     * @since 2.5.0
-     */
-    public <T extends Number & Comparable> NumberRange by(T stepSize) {
-        return new NumberRange(NumberRange.comparableNumber((Number)from), NumberRange.comparableNumber((Number)to), stepSize, inclusive);
-    }
-
-    private void checkSize() {
-        // size() in the Collection interface returns an integer, so ranges can have no more than Integer.MAX_VALUE elements
-        final Long size = (long) to - from + 1;
-        if (size > Integer.MAX_VALUE) {
-            throw new IllegalArgumentException("A range must have no more than " + Integer.MAX_VALUE + " elements but attempted " + size + " elements");
-        }
-    }
-
-    /**
-     * A method for determining from and to information when using this IntRange to index an aggregate object of the specified size.
-     * Normally only used internally within Groovy but useful if adding range indexing support for your own aggregates.
-     *
-     * @param size the size of the aggregate being indexed
-     * @return the calculated range information (with 1 added to the to value, ready for providing to subList
-     */
-    public RangeInfo subListBorders(int size) {
-        if (inclusive == null) {
-            throw new IllegalStateException("Should not call subListBorders on a non-inclusive aware IntRange");
-        }
-        int tempFrom = from;
-        if (tempFrom < 0) {
-            tempFrom += size;
-        }
-        int tempTo = to;
-        if (tempTo < 0) {
-            tempTo += size;
-        }
-        if (tempFrom > tempTo) {
-            return new RangeInfo(inclusive ? tempTo : tempTo + 1, tempFrom + 1, true);
-        }
-        return new RangeInfo(tempFrom, inclusive ? tempTo + 1 : tempTo, false);
-    }
-
-    /**
-     * Determines if this object is equal to another object. Delegates to
-     * {@link AbstractList#equals(Object)} if <code>that</code> is anything
-     * other than an {@link IntRange}.
-     * <p>
-     * It is not necessary to override <code>hashCode</code>, as
-     * {@link AbstractList#hashCode()} provides a suitable hash code.<p>
-     * <p>
-     * Note that equals is generally handled by {@link org.codehaus.groovy.runtime.DefaultGroovyMethods#equals(List, List)}
-     * instead of this method.
-     *
-     * @param that the object to compare
-     * @return <code>true</code> if the objects are equal
-     */
-    public boolean equals(Object that) {
-        return that instanceof IntRange ? equals((IntRange) that) : super.equals(that);
-    }
-
-    /**
-     * Compares an {@link IntRange} to another {@link IntRange}.
-     *
-     * @param that the object to compare for equality
-     * @return <code>true</code> if the ranges are equal
-     */
-    public boolean equals(IntRange that) {
-        return that != null && ((inclusive == null && reverse == that.reverse && from == that.from && to == that.to)
-                || (inclusive != null && inclusive == that.inclusive && from == that.from && to == that.to));
-    }
-
-    @Override
-    public Integer getFrom() {
-        if (inclusive == null || from <= to) {
-            return from;
-        }
-        return inclusive ? to : to + 1;
-    }
-
-    @Override
-    public Integer getTo() {
-        if (inclusive == null) {
-            return to;
-        }
-        if (from <= to) {
-            return inclusive ? to : to - 1;
-        }
-        return from;
-    }
-
-    /**
-     * Returns the inclusive flag. Null for non-inclusive aware ranges or non-null for inclusive aware ranges.
-     */
-    public Boolean getInclusive() {
-        return inclusive;
-    }
-
-    /**
-     * Gets the 'from' value as a primitive integer.
-     *
-     * @return the 'from' value as a primitive integer.
-     */
-    public int getFromInt() {
-        return getFrom();
-    }
-
-    /**
-     * Gets the 'to' value as a primitive integer.
-     *
-     * @return the 'to' value as a primitive integer.
-     */
-    public int getToInt() {
-        return getTo();
-    }
-
-    @Override
-    public boolean isReverse() {
-        return inclusive == null ? reverse : (from > to);
-    }
-
-    @Override
-    public boolean containsWithinBounds(Object o) {
-        return contains(o);
-    }
-
-    @Override
-    public Integer get(int index) {
-        if (index < 0) {
-            throw new IndexOutOfBoundsException("Index: " + index + " should not be negative");
-        }
-        if (index >= size()) {
-            throw new IndexOutOfBoundsException("Index: " + index + " too big for range: " + this);
-        }
-        return isReverse() ? getTo() - index : index + getFrom();
-    }
-
-    @Override
-    public int size() {
-        return getTo() - getFrom() + 1;
-    }
-
-    @Override
-    public Iterator<Integer> iterator() {
-        return new IntRangeIterator();
-    }
-
-    @Override
-    public List<Integer> subList(int fromIndex, int toIndex) {
-        if (fromIndex < 0) {
-            throw new IndexOutOfBoundsException("fromIndex = " + fromIndex);
-        }
-        if (toIndex > size()) {
-            throw new IndexOutOfBoundsException("toIndex = " + toIndex);
-        }
-        if (fromIndex > toIndex) {
-            throw new IllegalArgumentException("fromIndex(" + fromIndex + ") > toIndex(" + toIndex + ")");
-        }
-
-        if (fromIndex == toIndex) {
-            return new EmptyRange<Integer>(getFrom());
-        }
-
-        return new IntRange(fromIndex + getFrom(), toIndex + getFrom() - 1, isReverse());
-    }
-
-    public String toString() {
-        return inclusive != null ? ("" + from + ".." + (inclusive ? "" : "<") + to)
-                : (reverse ? "" + to + ".." + from : "" + from + ".." + to);
-    }
-
-    @Override
-    public String inspect() {
-        return toString();
-    }
-
-    @Override
-    public boolean contains(Object value) {
-        if (value instanceof Integer) {
-            return (Integer) value >= getFrom() && (Integer) value <= getTo();
-        }
-        if (value instanceof BigInteger) {
-            final BigInteger bigint = (BigInteger) value;
-            return bigint.compareTo(BigInteger.valueOf(getFrom())) >= 0 &&
-                    bigint.compareTo(BigInteger.valueOf(getTo())) <= 0;
-        }
-        return false;
-    }
-
-    @Override
-    public boolean containsAll(Collection other) {
-        if (other instanceof IntRange) {
-            final IntRange range = (IntRange) other;
-            return getFrom() <= range.getFrom() && range.getTo() <= getTo();
-        }
-        return super.containsAll(other);
-    }
-
-    @Override
-    public void step(int step, Closure closure) {
-        if (step == 0) {
-            if (!getFrom().equals(getTo())) {
-                throw new GroovyRuntimeException("Infinite loop detected due to step size of 0");
-            }
-            return; // from == to and step == 0, nothing to do, so return
-        }
-
-        if (isReverse()) {
-            step = -step;
-        }
-        if (step > 0) {
-            int value = getFrom();
-            while (value <= getTo()) {
-                closure.call(value);
-                if (((long) value + step) >= Integer.MAX_VALUE) {
-                    break;
-                }
-                value = value + step;
-            }
-        } else {
-            int value = getTo();
-            while (value >= getFrom()) {
-                closure.call(value);
-                if (((long) value + step) <= Integer.MIN_VALUE) {
-                    break;
-                }
-                value = value + step;
-            }
-        }
-    }
-
-    @Override
-    public List<Integer> step(int step) {
-        final IteratorClosureAdapter<Integer> adapter = new IteratorClosureAdapter<Integer>(this);
-        step(step, adapter);
-        return adapter.asList();
-    }
-
-    @Override
-    public int hashCode(){
-        int hashCode;
-        final int from = this.getFrom();
-        final int to = this.getTo();
-
-        hashCode = ((from+to+1)*(from+to))/2+to;
-        return hashCode;
-    }
-}

http://git-wip-us.apache.org/repos/asf/groovy/blob/10110145/src/main/groovy/lang/Interceptor.java
----------------------------------------------------------------------
diff --git a/src/main/groovy/lang/Interceptor.java b/src/main/groovy/lang/Interceptor.java
deleted file mode 100644
index e496f1d..0000000
--- a/src/main/groovy/lang/Interceptor.java
+++ /dev/null
@@ -1,52 +0,0 @@
-/*
- *  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 groovy.lang;
-
-/**
- * Implementers of this interface can be registered in the ProxyMetaClass for
- * notifications about method calls for objects managed by the ProxyMetaClass.
- * See groovy/lang/InterceptorTest.groovy for details.
- * @author Dierk Koenig
- */
-public interface Interceptor {
-    /**
-     * This code is executed before the method is optionally called.
-     * @param object        receiver object for the method call
-     * @param methodName    name of the method to call
-     * @param arguments     arguments to the method call
-     * @return any arbitrary result that replaces the result of the
-     * original method call only if doInvoke() returns false and afterInvoke()
-     * relays this result.
-     */
-    Object beforeInvoke(Object object, String methodName, Object[] arguments);
-    /**
-     * This code is executed after the method is optionally called.
-     * @param object        receiver object for the called method
-     * @param methodName    name of the called method
-     * @param arguments     arguments to the called method
-     * @param result        result of the executed method call or result of beforeInvoke if method was not called
-     * @return any arbitrary result that can replace the result of the
-     * original method call. Typically, the result parameter is returned.
-     */
-    Object afterInvoke(Object object, String methodName, Object[] arguments, Object result);
-    /**
-     * @return whether the target method should be invoked at all.
-     */
-    boolean doInvoke();
-}

http://git-wip-us.apache.org/repos/asf/groovy/blob/10110145/src/main/groovy/lang/Lazy.java
----------------------------------------------------------------------
diff --git a/src/main/groovy/lang/Lazy.java b/src/main/groovy/lang/Lazy.java
deleted file mode 100644
index c715bc0..0000000
--- a/src/main/groovy/lang/Lazy.java
+++ /dev/null
@@ -1,156 +0,0 @@
-/*
- *  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 groovy.lang;
-
-import org.codehaus.groovy.transform.GroovyASTTransformationClass;
-
-import java.lang.annotation.ElementType;
-import java.lang.annotation.Retention;
-import java.lang.annotation.RetentionPolicy;
-import java.lang.annotation.Target;
-
-/**
- * Field annotation to simplify lazy initialization.
- * <p>
- * Example usage without any special modifiers just defers initialization until the first call but is not thread-safe:
- * <pre>
- * {@code @Lazy} T x
- * </pre>
- * becomes
- * <pre>
- * private T $x
- *
- * T getX() {
- *    if ($x != null)
- *       return $x
- *    else {
- *       $x = new T()
- *       return $x
- *    }
- * }
- * </pre>
- *
- * If the field is declared volatile then initialization will be synchronized using
- * the <a href="http://en.wikipedia.org/wiki/Double-checked_locking">double-checked locking</a> pattern as shown here:
- *
- * <pre>
- * {@code @Lazy} volatile T x
- * </pre>
- * becomes
- * <pre>
- * private volatile T $x
- *
- * T getX() {
- *    T $x_local = $x
- *    if ($x_local != null)
- *       return $x_local
- *    else {
- *       synchronized(this) {
- *          if ($x == null) {
- *             $x = new T()
- *          }
- *          return $x
- *       }
- *    }
- * }
- * </pre>
- *
- * By default a field will be initialized by calling its default constructor.
- *
- * If the field has an initial value expression then this expression will be used instead of calling the default constructor.
- * In particular, it is possible to use closure <code>{ ... } ()</code> syntax as follows:
- *
- * <pre>
- * {@code @Lazy} T x = { [1, 2, 3] } ()
- * </pre>
- * becomes
- * <pre>
- * private T $x
- *
- * T getX() {
- *    T $x_local = $x
- *    if ($x_local != null)
- *       return $x_local
- *    else {
- *       synchronized(this) {
- *          if ($x == null) {
- *             $x = { [1, 2, 3] } ()
- *          }
- *          return $x
- *       }
- *    }
- * }
- * </pre>
- * <p>
- * <code>@Lazy(soft=true)</code> will use a soft reference instead of the field and use the above rules each time re-initialization is required.
- * <p>
- * If the <code>soft</code> flag for the annotation is not set but the field is static, then
- * the <a href="http://en.wikipedia.org/wiki/Initialization_on_demand_holder_idiom">initialization on demand holder idiom</a> is
- * used as follows:
- * <pre>
- * {@code @Lazy} static FieldType field
- * {@code @Lazy} static Date date1
- * {@code @Lazy} static Date date2 = { new Date().copyWith(year: 2000) }()
- * {@code @Lazy} static Date date3 = new GregorianCalendar(2009, Calendar.JANUARY, 1).time
- * </pre>
- * becomes these methods and inners classes within the class containing the above definitions:
- * <pre>
- * private static class FieldTypeHolder_field {
- *     private static final FieldType INSTANCE = new FieldType()
- * }
- *
- * private static class DateHolder_date1 {
- *     private static final Date INSTANCE = new Date()
- * }
- *
- * private static class DateHolder_date2 {
- *     private static final Date INSTANCE = { new Date().copyWith(year: 2000) }()
- * }
- *
- * private static class DateHolder_date3 {
- *     private static final Date INSTANCE = new GregorianCalendar(2009, Calendar.JANUARY, 1).time
- * }
- *
- * static FieldType getField() {
- *     return FieldTypeHolder_field.INSTANCE
- * }
- *
- * static Date getDate1() {
- *     return DateHolder_date1.INSTANCE
- * }
- *
- * static Date getDate2() {
- *     return DateHolder_date2.INSTANCE
- * }
- *
- * static Date getDate3() {
- *     return DateHolder_date3.INSTANCE
- * }
- * </pre>
- */
-@java.lang.annotation.Documented
-@Retention(RetentionPolicy.SOURCE)
-@Target({ElementType.FIELD})
-@GroovyASTTransformationClass("org.codehaus.groovy.transform.LazyASTTransformation")
-public @interface Lazy {
-    /**
-     * @return if field should be soft referenced instead of hard referenced
-     */
-    boolean soft () default false;
-}

http://git-wip-us.apache.org/repos/asf/groovy/blob/10110145/src/main/groovy/lang/ListWithDefault.java
----------------------------------------------------------------------
diff --git a/src/main/groovy/lang/ListWithDefault.java b/src/main/groovy/lang/ListWithDefault.java
deleted file mode 100644
index 6b87548..0000000
--- a/src/main/groovy/lang/ListWithDefault.java
+++ /dev/null
@@ -1,257 +0,0 @@
-/*
- *  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 groovy.lang;
-
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Iterator;
-import java.util.List;
-import java.util.ListIterator;
-
-/**
- * A wrapper for {@link List} which automatically grows the list when either {@link #get(int)} or
- * {@link #getAt(int)} is called with an index greater than or equal to {@code size()}.
- *
- * @author Andre Steingress
- * @since 1.8.7
- */
-public final class ListWithDefault<T> implements List<T> {
-
-    private final List<T> delegate;
-    private final boolean lazyDefaultValues;
-
-    private final Closure initClosure;
-
-    private ListWithDefault(List<T> items, boolean lazyDefaultValues, Closure initClosure) {
-        this.delegate = items;
-        this.lazyDefaultValues = lazyDefaultValues;
-        this.initClosure = initClosure;
-    }
-
-    public List<T> getDelegate() {
-        return delegate != null ? new ArrayList<T>(delegate) : null;
-    }
-
-    public boolean isLazyDefaultValues() {
-        return lazyDefaultValues;
-    }
-
-    public Closure getInitClosure() {
-        return initClosure != null ? (Closure) initClosure.clone() : null;
-    }
-
-    public static <T> ListWithDefault<T> newInstance(List<T> items, boolean lazyDefaultValues, Closure initClosure) {
-        if (items == null)
-            throw new IllegalArgumentException("Parameter \"items\" must not be null");
-        if (initClosure == null)
-            throw new IllegalArgumentException("Parameter \"initClosure\" must not be null");
-
-        return new ListWithDefault<T>(new ArrayList<T>(items), lazyDefaultValues, (Closure) initClosure.clone());
-    }
-
-    public int size() {
-        return delegate.size();
-    }
-
-    public boolean isEmpty() {
-        return delegate.isEmpty();
-    }
-
-    public boolean contains(Object o) {
-        return delegate.contains(o);
-    }
-
-    public Iterator<T> iterator() {
-        return delegate.iterator();
-    }
-
-    public Object[] toArray() {
-        return delegate.toArray();
-    }
-
-    public <T> T[] toArray(T[] ts) {
-        return delegate.toArray(ts);
-    }
-
-    public boolean add(T t) {
-        return delegate.add(t);
-    }
-
-    public boolean remove(Object o) {
-        return delegate.remove(o);
-    }
-
-    public boolean containsAll(Collection<?> objects) {
-        return delegate.containsAll(objects);
-    }
-
-    public boolean addAll(Collection<? extends T> ts) {
-        return delegate.addAll(ts);
-    }
-
-    public boolean addAll(int i, Collection<? extends T> ts) {
-        return delegate.addAll(i, ts);
-    }
-
-    public boolean removeAll(Collection<?> objects) {
-        return delegate.removeAll(objects);
-    }
-
-    public boolean retainAll(Collection<?> objects) {
-        return delegate.retainAll(objects);
-    }
-
-    public void clear() {
-        delegate.clear();
-    }
-
-    /**
-     * Overwrites subscript operator handling by redirecting to {@link #get(int)}.
-     *
-     * @param index an index (might be greater or equal to {@code size()}, or smaller than 0)
-     * @return the value at the given {@code index} or the default value
-     */
-    public T getAt(int index) {
-        return get(index);
-    }
-
-    /**
-     * Returns the element at the given index but grows the list if needed. If the requested {@code index} is
-     * greater than or equal to {@code size()}, the list will grow to the new size and a default value calculated
-     * using the <code>initClosure</code> will be used to populate the missing value and returned.
-     * <p>
-     * If <code>lazyDefaultValues</code> is <code>true</code> any gaps when growing the list are filled
-     * with nulls. Subsequent attempts to retrieve items from the list from those gap index values
-     * will, upon finding null, call the <code>initClosure</code> to populate the list for the
-     * given list value. Hence, when in this mode, nulls cannot be stored in this list.
-     * If <code>lazyDefaultValues</code> is <code>false</code> any gaps when growing the list are filled
-     * eagerly by calling the <code>initClosure</code> for all gap indexes during list growth.
-     * No calls to <code>initClosure</code> are made except during list growth and it is ok to
-     * store null values in the list when in this mode.
-     * <p>
-     * This implementation breaks
-     * the contract of {@link java.util.List#get(int)} as it a) possibly modifies the underlying list and b) does
-     * NOT throw an {@link IndexOutOfBoundsException} when {@code index < 0 || index >= size()}.
-     *
-     * @param index an index (might be greater or equal to {@code size()}, or smaller than 0)
-     * @return the value at the given {@code index} or the default value
-     */
-    public T get(int index) {
-
-        final int size = size();
-        int normalisedIndex = normaliseIndex(index, size);
-        if (normalisedIndex < 0) {
-            throw new IndexOutOfBoundsException("Negative index [" + normalisedIndex + "] too large for list size " + size);
-        }
-
-        // either index >= size or the normalised index is negative
-        if (normalisedIndex >= size) {
-            // find out the number of gaps to fill with null/the default value
-            final int gapCount = normalisedIndex - size;
-
-            // fill all gaps
-            for (int i = 0; i < gapCount; i++) {
-                final int idx = size();
-
-                // if we lazily create default values, use 'null' as placeholder
-                if (lazyDefaultValues)
-                    delegate.add(idx, null);
-                else
-                    delegate.add(idx, getDefaultValue(idx));
-            }
-
-            // add the first/last element being always the default value
-            final int idx = normalisedIndex;
-            delegate.add(idx, getDefaultValue(idx));
-
-            // normalise index again to get positive index
-            normalisedIndex = normaliseIndex(index, size());
-        }
-
-        T item = delegate.get(normalisedIndex);
-        if (item == null && lazyDefaultValues) {
-            item = getDefaultValue(normalisedIndex);
-            delegate.set(normalisedIndex, item);
-        }
-
-        return item;
-    }
-
-    @SuppressWarnings("unchecked")
-    private T getDefaultValue(int idx) {
-        return (T) initClosure.call(new Object[]{idx});
-    }
-
-    private static int normaliseIndex(int index, int size) {
-        if (index < 0) {
-            index += size;
-        }
-        return index;
-    }
-
-    public T set(int i, T t) {
-        return delegate.set(i, t);
-    }
-
-    public void add(int i, T t) {
-        delegate.add(i, t);
-    }
-
-    public T remove(int i) {
-        return delegate.remove(i);
-    }
-
-    public int indexOf(Object o) {
-        return delegate.indexOf(o);
-    }
-
-    public int lastIndexOf(Object o) {
-        return delegate.lastIndexOf(o);
-    }
-
-    public ListIterator<T> listIterator() {
-        return delegate.listIterator();
-    }
-
-    public ListIterator<T> listIterator(int i) {
-        return delegate.listIterator(i);
-    }
-
-    @Override
-    public boolean equals(Object obj) {
-        return delegate.equals(obj);
-    }
-
-    @Override
-    public int hashCode() {
-        return delegate.hashCode();
-    }
-
-    /**
-     * Returns a view of a portion of this list. This method returns a list with the same
-     * lazy list settings as the original list.
-     *
-     * @param fromIndex low endpoint of the subList (inclusive)
-     * @param toIndex   upper endpoint of the subList (exclusive)
-     * @return a view of a specified range within this list, keeping all lazy list settings
-     */
-    public ListWithDefault<T> subList(int fromIndex, int toIndex) {
-        return new ListWithDefault<T>(delegate.subList(fromIndex, toIndex), lazyDefaultValues, (Closure) initClosure.clone());
-    }
-}

http://git-wip-us.apache.org/repos/asf/groovy/blob/10110145/src/main/groovy/lang/MapWithDefault.java
----------------------------------------------------------------------
diff --git a/src/main/groovy/lang/MapWithDefault.java b/src/main/groovy/lang/MapWithDefault.java
deleted file mode 100644
index 166e06b..0000000
--- a/src/main/groovy/lang/MapWithDefault.java
+++ /dev/null
@@ -1,105 +0,0 @@
-/*
- *  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 groovy.lang;
-
-import java.util.Collection;
-import java.util.Map;
-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> {
-
-    private final Map<K, V> delegate;
-    private final Closure initClosure;
-
-    private MapWithDefault(Map<K, V> m, Closure initClosure) {
-        delegate = m;
-        this.initClosure = initClosure;
-    }
-
-    public static <K, V> Map<K, V> newInstance(Map<K, V> m, Closure initClosure) {
-        return new MapWithDefault<K, V>(m, initClosure);
-    }
-
-    public int size() {
-        return delegate.size();
-    }
-
-    public boolean isEmpty() {
-        return delegate.isEmpty();
-    }
-
-    public boolean containsKey(Object key) {
-        return delegate.containsKey(key);
-    }
-
-    public boolean containsValue(Object value) {
-        return delegate.containsValue(value);
-    }
-
-    public V get(Object key) {
-        if (!delegate.containsKey(key)) {
-            delegate.put((K)key, (V)initClosure.call(new Object[]{key}));
-        }
-        return delegate.get(key);
-    }
-
-    public V put(K key, V value) {
-        return delegate.put(key, value);
-    }
-
-    public V remove(Object key) {
-        return delegate.remove(key);
-    }
-
-    public void putAll(Map<? extends K, ? extends V> m) {
-        delegate.putAll(m);
-    }
-
-    public void clear() {
-        delegate.clear();
-    }
-
-    public Set<K> keySet() {
-        return delegate.keySet();
-    }
-
-    public Collection<V> values() {
-        return delegate.values();
-    }
-
-    public Set<Map.Entry<K, V>> entrySet() {
-        return delegate.entrySet();
-    }
-
-    @Override
-    public boolean equals(Object obj) {
-        return delegate.equals(obj);
-    }
-
-    @Override
-    public int hashCode() {
-        return delegate.hashCode();
-    }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/groovy/blob/10110145/src/main/groovy/lang/MetaArrayLengthProperty.java
----------------------------------------------------------------------
diff --git a/src/main/groovy/lang/MetaArrayLengthProperty.java b/src/main/groovy/lang/MetaArrayLengthProperty.java
deleted file mode 100644
index 8310386..0000000
--- a/src/main/groovy/lang/MetaArrayLengthProperty.java
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
- *  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 groovy.lang;
-
-
-/**
- * Represents the length property of an array
- *
- * @author <a href="mailto:james@coredevelopers.net">James Strachan</a>
- */
-public class MetaArrayLengthProperty extends MetaProperty {
-
-    /**
-     * Sole constructor setting name to "length" and type to int
-     */
-    public MetaArrayLengthProperty() {
-        super("length", int.class);
-    }
-
-    /**
-     * Get this property from the given object.
-     * @param object an array
-     * @return the length of the array object
-     * @throws IllegalArgumentException if object is not an array
-     */
-    public Object getProperty(Object object) {
-        return java.lang.reflect.Array.getLength(object);
-    }
-
-    /**
-     * Sets the property on the given object to the new value
-     *
-     * @param object   on which to set the property
-     * @param newValue the new value of the property
-     * @throws RuntimeException if the property could not be set
-     */
-    public void setProperty(Object object, Object newValue) {
-        throw new ReadOnlyPropertyException("length", object.getClass());
-    }
-}

http://git-wip-us.apache.org/repos/asf/groovy/blob/10110145/src/main/groovy/lang/MetaBeanProperty.java
----------------------------------------------------------------------
diff --git a/src/main/groovy/lang/MetaBeanProperty.java b/src/main/groovy/lang/MetaBeanProperty.java
deleted file mode 100644
index 89328af..0000000
--- a/src/main/groovy/lang/MetaBeanProperty.java
+++ /dev/null
@@ -1,156 +0,0 @@
-/*
- *  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 groovy.lang;
-
-import org.codehaus.groovy.reflection.CachedField;
-import org.codehaus.groovy.runtime.MetaClassHelper;
-import org.codehaus.groovy.runtime.typehandling.DefaultTypeTransformation;
-
-import java.lang.reflect.Modifier;
-
-/**
- * Represents a property on a bean which may have a getter and/or a setter
- */
-public class MetaBeanProperty extends MetaProperty {
-
-    private MetaMethod getter;
-    private MetaMethod setter;
-    private CachedField field;
-
-    /**
-     * Sole constructor setting name, type (class), getter and setter.
-     */
-    public MetaBeanProperty(String name, Class type, MetaMethod getter, MetaMethod setter) {
-        super(name, type);
-        this.getter = getter;
-        this.setter = setter;
-    }
-
-    /**
-     * Get the property of the given object.
-     *
-     * @param object which to be got
-     * @return the property of the given object
-     * @throws RuntimeException if the property could not be evaluated
-     */
-    public Object getProperty(Object object) {
-        MetaMethod getter = getGetter();
-        if (getter == null) {
-            if (field != null) return field.getProperty(object);
-            //TODO: create a WriteOnlyException class?
-            throw new GroovyRuntimeException("Cannot read write-only property: " + name);
-        }
-        return getter.invoke(object, MetaClassHelper.EMPTY_ARRAY);
-    }
-
-    /**
-     * Set the property on the given object to the new value.
-     *
-     * @param object   on which to set the property
-     * @param newValue the new value of the property
-     * @throws RuntimeException if the property could not be set
-     */
-    public void setProperty(Object object, Object newValue) {
-        MetaMethod setter = getSetter();
-        if (setter == null) {
-            if (field != null && !Modifier.isFinal(field.getModifiers())) {
-                field.setProperty(object, newValue);
-                return;
-            }
-            throw new GroovyRuntimeException("Cannot set read-only property: " + name);
-        }
-        newValue = DefaultTypeTransformation.castToType(newValue, getType());
-        setter.invoke(object, new Object[]{newValue});
-    }
-
-    /**
-     * Get the getter method.
-     *
-     * @return the getter method for this property.
-     */
-    public MetaMethod getGetter() {
-        return getter;
-    }
-
-    /**
-     * Get the setter method.
-     *
-     * @return the setter method for this property.
-     */
-    public MetaMethod getSetter() {
-        return setter;
-    }
-
-    /**
-     * This is for MetaClass to patch up the object later when looking for get*() methods.
-     *
-     * @param getter The getter for this property
-     */
-    void setGetter(MetaMethod getter) {
-        this.getter = getter;
-    }
-
-    /**
-     * This is for MetaClass to patch up the object later when looking for set*() methods.
-     *
-     * @param setter The setter for this property 
-     */
-    void setSetter(MetaMethod setter) {
-        this.setter = setter;
-    }
-
-    /**
-     * Gets the visibility modifiers for the property as defined by the getter and setter methods.
-     *
-     * @return the visibility modifier of the getter, the setter, or both depending on which exist
-     */
-    public int getModifiers() {
-        MetaMethod getter = getGetter();
-        MetaMethod setter = getSetter();
-        if (setter != null && getter == null) return setter.getModifiers();
-        if (getter != null && setter == null) return getter.getModifiers();
-        int modifiers = getter.getModifiers() | setter.getModifiers();
-        int visibility = 0;
-        if (Modifier.isPublic(modifiers)) visibility = Modifier.PUBLIC;
-        if (Modifier.isProtected(modifiers)) visibility = Modifier.PROTECTED;
-        if (Modifier.isPrivate(modifiers)) visibility = Modifier.PRIVATE;
-        int states = getter.getModifiers() & setter.getModifiers();
-        states &= ~(Modifier.PUBLIC | Modifier.PROTECTED | Modifier.PRIVATE);
-        states |= visibility;
-        return states;
-    }
-
-    /**
-     * Sets the field of this property
-     *
-     * @param field
-     */
-    public void setField(CachedField field) {
-        this.field = field;
-    }
-
-    /**
-     * Gets the field of this property
-     *
-     * @return The field of this property
-     */
-    public CachedField getField() {
-        return field;
-    }
-}