// Path: gshell-api/src/main/java/org/apache/geronimo/gshell/console/IO.java
// public class IO
// {
//     /**
//      * Raw input stream.
//      *
//      * @see #in
//      */
//     public final InputStream inputStream;
// 
//     /**
//      * Raw output stream.
//      *
//      * @see #out
//      */
//     public final OutputStream outputStream;
// 
//     /**
//      * Raw error output stream.
//      *
//      * @see #err
//      */
//     public final OutputStream errorStream;
// 
//     /**
//      * Prefered input reader.
//      */
//     public final Reader in;
// 
//     /**
//      * Prefered output writer.
//      */
//     public final PrintWriter out;
// 
//     /**
//      * Prefered error output writer.
//      */
//     public final PrintWriter err;
// 
//     /**
//      * Construct a new IO container.
//      *
//      * @param in    The input steam; must not be null
//      * @param out   The output stream; must not be null
//      * @param err   The error output stream; must not be null
//      */
//     public IO(final InputStream in, final OutputStream out, final OutputStream err) {
//         if (in == null) {
//             throw new NullArgumentException("in");
//         }
//         if (out == null) {
//             throw new NullArgumentException("out");
//         }
//         if (err == null) {
//             throw new NullArgumentException("err");
//         }
// 
//         this.inputStream = in;
//         this.outputStream = out;
//         this.errorStream = err;
// 
//         this.in = new InputStreamReader(in);
//         this.out = new PrintWriter(out, true);
//         this.err = new PrintWriter(err, true);
//     }
// 
//     /**
//      * Construct a new IO container.
//      *
//      * @param in    The input steam; must not be null
//      * @param out   The output stream and error stream; must not be null
//      */
//     public IO(final InputStream in, final OutputStream out) {
//         this(in, out, out);
//     }
// 
//     /**
//      * Helper which uses current values from {@link System}.
//      */
//     public IO() {
//         this(System.in, System.out, System.err);
//     }
// 
//     /**
//      * Flush both output streams.
//      */
//     public void flush() {
//         out.flush();
//         err.flush();
//     }
// 
//     public void close() throws IOException {
//         in.close();
//         out.close();
//         err.close();
//     }
// }
// 
// Path: gshell-api/src/main/java/org/apache/geronimo/gshell/util/Arguments.java
// public class Arguments
// {
//     public static Object[] shift(final Object[] args) {
//         return shift(args, 1);
//     }
// 
//     public static Object[] shift(final Object[] args, int pos) {
//         assert args != null;
//         assert args.length >= pos;
// 
//         String[] _args = new String[args.length - pos];
//         System.arraycopy(args, pos, _args, 0, _args.length);
//         return _args;
//     }
// 
//     public static String asString(final Object[] args) {
//         assert args != null;
// 
//         StringBuffer buff = new StringBuffer();
// 
//         for (int i=0; i<args.length; i++ ) {
//             buff.append(args[i]);
//             if (i + 1 < args.length) {
//                 buff.append(", ");
//             }
//         }
// 
//         return buff.toString();
//     }
// 
//     public static String[] toStringArray(final Object[] args) {
//         assert args != null;
// 
//         String[] strings = new String[args.length];
// 
//         for (int i=0; i<args.length; i++ ) {
//             strings[i] = String.valueOf(args[i]);
//         }
// 
//         return strings;
//     }
// }


import java.util.Iterator;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.commons.lang.NullArgumentException;
import org.apache.commons.cli.Options;
import org.apache.commons.cli.OptionBuilder;
import org.apache.commons.cli.HelpFormatter;
import org.apache.commons.cli.CommandLineParser;
import org.apache.commons.cli.PosixParser;
import org.apache.commons.cli.CommandLine;
import org.apache.geronimo.gshell.console.IO;
import org.apache.geronimo.gshell.util.Arguments;
        }

        return context;
    }

    protected Variables getVariables() {
        return getCommandContext().getVariables();
    }

    protected IO getIO() {
        return getCommandContext().getIO();
    }

    protected MessageSource getMessageSource() {
        return getCommandContext().getMessageSource();
    }

    //
    // Execute Helpers
    //

    public Object execute(final Object... args) throws Exception {
        assert args != null;

        // Make sure that we have been initialized before we go any further
        ensureInitialized();

        boolean info = log.isInfoEnabled();

        if (info) {
// Path: gshell-api/src/main/java/org/apache/geronimo/gshell/console/IO.java
// public class IO
// {
//     /**
//      * Raw input stream.
//      *
//      * @see #in
//      */
//     public final InputStream inputStream;
// 
//     /**
//      * Raw output stream.
//      *
//      * @see #out
//      */
//     public final OutputStream outputStream;
// 
//     /**
//      * Raw error output stream.
//      *
//      * @see #err
//      */
//     public final OutputStream errorStream;
// 
//     /**
//      * Prefered input reader.
//      */
//     public final Reader in;
// 
//     /**
//      * Prefered output writer.
//      */
//     public final PrintWriter out;
// 
//     /**
//      * Prefered error output writer.
//      */
//     public final PrintWriter err;
// 
//     /**
//      * Construct a new IO container.
//      *
//      * @param in    The input steam; must not be null
//      * @param out   The output stream; must not be null
//      * @param err   The error output stream; must not be null
//      */
//     public IO(final InputStream in, final OutputStream out, final OutputStream err) {
//         if (in == null) {
//             throw new NullArgumentException("in");
//         }
//         if (out == null) {
//             throw new NullArgumentException("out");
//         }
//         if (err == null) {
//             throw new NullArgumentException("err");
//         }
// 
//         this.inputStream = in;
//         this.outputStream = out;
//         this.errorStream = err;
// 
//         this.in = new InputStreamReader(in);
//         this.out = new PrintWriter(out, true);
//         this.err = new PrintWriter(err, true);
//     }
// 
//     /**
//      * Construct a new IO container.
//      *
//      * @param in    The input steam; must not be null
//      * @param out   The output stream and error stream; must not be null
//      */
//     public IO(final InputStream in, final OutputStream out) {
//         this(in, out, out);
//     }
// 
//     /**
//      * Helper which uses current values from {@link System}.
//      */
//     public IO() {
//         this(System.in, System.out, System.err);
//     }
// 
//     /**
//      * Flush both output streams.
//      */
//     public void flush() {
//         out.flush();
//         err.flush();
//     }
// 
//     public void close() throws IOException {
//         in.close();
//         out.close();
//         err.close();
//     }
// }
// 
// Path: gshell-api/src/main/java/org/apache/geronimo/gshell/util/Arguments.java
// public class Arguments
// {
//     public static Object[] shift(final Object[] args) {
//         return shift(args, 1);
//     }
// 
//     public static Object[] shift(final Object[] args, int pos) {
//         assert args != null;
//         assert args.length >= pos;
// 
//         String[] _args = new String[args.length - pos];
//         System.arraycopy(args, pos, _args, 0, _args.length);
//         return _args;
//     }
// 
//     public static String asString(final Object[] args) {
//         assert args != null;
// 
//         StringBuffer buff = new StringBuffer();
// 
//         for (int i=0; i<args.length; i++ ) {
//             buff.append(args[i]);
//             if (i + 1 < args.length) {
//                 buff.append(", ");
//             }
//         }
// 
//         return buff.toString();
//     }
// 
//     public static String[] toStringArray(final Object[] args) {
//         assert args != null;
// 
//         String[] strings = new String[args.length];
// 
//         for (int i=0; i<args.length; i++ ) {
//             strings[i] = String.valueOf(args[i]);
//         }
// 
//         return strings;
//     }
// }


// Path: gshell-api/src/main/java/org/apache/geronimo/gshell/command/CommandSupport.java
import java.util.Iterator;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.commons.lang.NullArgumentException;
import org.apache.commons.cli.Options;
import org.apache.commons.cli.OptionBuilder;
import org.apache.commons.cli.HelpFormatter;
import org.apache.commons.cli.CommandLineParser;
import org.apache.commons.cli.PosixParser;
import org.apache.commons.cli.CommandLine;
import org.apache.geronimo.gshell.console.IO;
import org.apache.geronimo.gshell.util.Arguments;

        }

        return context;
    }

    protected Variables getVariables() {
        return getCommandContext().getVariables();
    }

    protected IO getIO() {
        return getCommandContext().getIO();
    }

    protected MessageSource getMessageSource() {
        return getCommandContext().getMessageSource();
    }

    //
    // Execute Helpers
    //

    public Object execute(final Object... args) throws Exception {
        assert args != null;

        // Make sure that we have been initialized before we go any further
        ensureInitialized();

        boolean info = log.isInfoEnabled();

        if (info) {
            log.info("Executing w/arguments: " + Arguments.asString(args));