// Path: src/main/java/org/apache/commons/logging/impl/NoOpLog.java
// public class NoOpLog implements Log, Serializable {
// 
//     /** Serializable version identifier. */
//     private static final long serialVersionUID = 561423906191706148L;
// 
//     /** Convenience constructor */
//     public NoOpLog() { }
//     /** Base constructor */
//     public NoOpLog(final String name) { }
//     /** Do nothing */
//     @Override
//     public void trace(final Object message) { }
//     /** Do nothing */
//     @Override
//     public void trace(final Object message, final Throwable t) { }
//     /** Do nothing */
//     @Override
//     public void debug(final Object message) { }
//     /** Do nothing */
//     @Override
//     public void debug(final Object message, final Throwable t) { }
//     /** Do nothing */
//     @Override
//     public void info(final Object message) { }
//     /** Do nothing */
//     @Override
//     public void info(final Object message, final Throwable t) { }
//     /** Do nothing */
//     @Override
//     public void warn(final Object message) { }
//     /** Do nothing */
//     @Override
//     public void warn(final Object message, final Throwable t) { }
//     /** Do nothing */
//     @Override
//     public void error(final Object message) { }
//     /** Do nothing */
//     @Override
//     public void error(final Object message, final Throwable t) { }
//     /** Do nothing */
//     @Override
//     public void fatal(final Object message) { }
//     /** Do nothing */
//     @Override
//     public void fatal(final Object message, final Throwable t) { }
// 
//     /**
//      * Debug is never enabled.
//      *
//      * @return false
//      */
//     @Override
//     public final boolean isDebugEnabled() { return false; }
// 
//     /**
//      * Error is never enabled.
//      *
//      * @return false
//      */
//     @Override
//     public final boolean isErrorEnabled() { return false; }
// 
//     /**
//      * Fatal is never enabled.
//      *
//      * @return false
//      */
//     @Override
//     public final boolean isFatalEnabled() { return false; }
// 
//     /**
//      * Info is never enabled.
//      *
//      * @return false
//      */
//     @Override
//     public final boolean isInfoEnabled() { return false; }
// 
//     /**
//      * Trace is never enabled.
//      *
//      * @return false
//      */
//     @Override
//     public final boolean isTraceEnabled() { return false; }
// 
//     /**
//      * Warn is never enabled.
//      *
//      * @return false
//      */
//     @Override
//     public final boolean isWarnEnabled() { return false; }
// }


import java.lang.reflect.Constructor;
import java.util.Hashtable;
import org.apache.commons.logging.impl.NoOpLog;
    static public Log getInstance(final Class clazz) {
        return getInstance(clazz.getName());
    }

    /**
     * Create a new {@link Log} implementation, based on the given <i>name</i>.
     * <p>
     * The specific {@link Log} implementation returned is determined by the
     * value of the {@code org.apache.commons.logging.log} property. The value
     * of {@code org.apache.commons.logging.log} may be set to the fully specified
     * name of a class that implements the {@link Log} interface. This class must
     * also have a public constructor that takes a single {@link String} argument
     * (containing the <i>name</i> of the {@link Log} to be constructed.
     * <p>
     * When {@code org.apache.commons.logging.log} is not set, or when no corresponding
     * class can be found, this method will return a Log4JLogger if the log4j Logger
     * class is available in the {@link LogSource}'s classpath, or a Jdk14Logger if we
     * are on a JDK 1.4 or later system, or NoOpLog if neither of the above conditions is true.
     *
     * @param name the log name (or category)
     */
    static public Log makeNewLogInstance(final String name) {
        Log log;
        try {
            final Object[] args = { name };
            log = (Log) logImplctor.newInstance(args);
        } catch (final Throwable t) {
            log = null;
        }
        if (null == log) {
// Path: src/main/java/org/apache/commons/logging/impl/NoOpLog.java
// public class NoOpLog implements Log, Serializable {
// 
//     /** Serializable version identifier. */
//     private static final long serialVersionUID = 561423906191706148L;
// 
//     /** Convenience constructor */
//     public NoOpLog() { }
//     /** Base constructor */
//     public NoOpLog(final String name) { }
//     /** Do nothing */
//     @Override
//     public void trace(final Object message) { }
//     /** Do nothing */
//     @Override
//     public void trace(final Object message, final Throwable t) { }
//     /** Do nothing */
//     @Override
//     public void debug(final Object message) { }
//     /** Do nothing */
//     @Override
//     public void debug(final Object message, final Throwable t) { }
//     /** Do nothing */
//     @Override
//     public void info(final Object message) { }
//     /** Do nothing */
//     @Override
//     public void info(final Object message, final Throwable t) { }
//     /** Do nothing */
//     @Override
//     public void warn(final Object message) { }
//     /** Do nothing */
//     @Override
//     public void warn(final Object message, final Throwable t) { }
//     /** Do nothing */
//     @Override
//     public void error(final Object message) { }
//     /** Do nothing */
//     @Override
//     public void error(final Object message, final Throwable t) { }
//     /** Do nothing */
//     @Override
//     public void fatal(final Object message) { }
//     /** Do nothing */
//     @Override
//     public void fatal(final Object message, final Throwable t) { }
// 
//     /**
//      * Debug is never enabled.
//      *
//      * @return false
//      */
//     @Override
//     public final boolean isDebugEnabled() { return false; }
// 
//     /**
//      * Error is never enabled.
//      *
//      * @return false
//      */
//     @Override
//     public final boolean isErrorEnabled() { return false; }
// 
//     /**
//      * Fatal is never enabled.
//      *
//      * @return false
//      */
//     @Override
//     public final boolean isFatalEnabled() { return false; }
// 
//     /**
//      * Info is never enabled.
//      *
//      * @return false
//      */
//     @Override
//     public final boolean isInfoEnabled() { return false; }
// 
//     /**
//      * Trace is never enabled.
//      *
//      * @return false
//      */
//     @Override
//     public final boolean isTraceEnabled() { return false; }
// 
//     /**
//      * Warn is never enabled.
//      *
//      * @return false
//      */
//     @Override
//     public final boolean isWarnEnabled() { return false; }
// }


// Path: src/main/java/org/apache/commons/logging/LogSource.java
import java.lang.reflect.Constructor;
import java.util.Hashtable;
import org.apache.commons.logging.impl.NoOpLog;

    static public Log getInstance(final Class clazz) {
        return getInstance(clazz.getName());
    }

    /**
     * Create a new {@link Log} implementation, based on the given <i>name</i>.
     * <p>
     * The specific {@link Log} implementation returned is determined by the
     * value of the {@code org.apache.commons.logging.log} property. The value
     * of {@code org.apache.commons.logging.log} may be set to the fully specified
     * name of a class that implements the {@link Log} interface. This class must
     * also have a public constructor that takes a single {@link String} argument
     * (containing the <i>name</i> of the {@link Log} to be constructed.
     * <p>
     * When {@code org.apache.commons.logging.log} is not set, or when no corresponding
     * class can be found, this method will return a Log4JLogger if the log4j Logger
     * class is available in the {@link LogSource}'s classpath, or a Jdk14Logger if we
     * are on a JDK 1.4 or later system, or NoOpLog if neither of the above conditions is true.
     *
     * @param name the log name (or category)
     */
    static public Log makeNewLogInstance(final String name) {
        Log log;
        try {
            final Object[] args = { name };
            log = (Log) logImplctor.newInstance(args);
        } catch (final Throwable t) {
            log = null;
        }
        if (null == log) {
            log = new NoOpLog(name);