// Path: enforcer-api/src/main/java/org/apache/maven/enforcer/rule/api/EnforcerRuleHelper.java
// public interface EnforcerRuleHelper
//     extends ExpressionEvaluator
// {
// 
//     /**
//      * Gets the log.
//      *
//      * @return the log
//      */
//     @Nonnull
//     Log getLog ();
// 
//     /**
//      * Gets the component.
//      *
//      * @param clazz the clazz
//      *
//      * @return the component
//      *
//      * @throws ComponentLookupException the component lookup exception
//      */
//     @Nonnull
//     <T> T getComponent ( Class<T> clazz )
//         throws ComponentLookupException;
// 
//     /**
//      * Gets the component.
//      *
//      * @param componentKey the component key
//      *
//      * @return the component
//      *
//      * @throws ComponentLookupException the component lookup exception
//      */
//     @Nonnull
//     Object getComponent ( String componentKey )
//         throws ComponentLookupException;
// 
//     /**
//      * Gets the component.
//      *
//      * @param role the role
//      * @param roleHint the role hint
//      *
//      * @return the component
//      *
//      * @throws ComponentLookupException the component lookup exception
//      */
//     Object getComponent ( String role, String roleHint )
//         throws ComponentLookupException;
// 
//     /**
//      * Gets the component.
//      *
//      * @param clazz the clazz
//      * @param roleHint the role hint
//      *
//      * @return the component
//      *
//      * @throws ComponentLookupException the component lookup exception
//      */
//     <T> T getComponent ( Class<T> clazz, String roleHint )
//         throws ComponentLookupException;
//     
//     /**
//      * Gets the component map.
//      *
//      * @param role the role
//      *
//      * @return the component map
//      *
//      * @throws ComponentLookupException the component lookup exception
//      */
//     Map<String, ?> getComponentMap ( String role )
//         throws ComponentLookupException;
// 
//     /**
//      * Gets the component list.
//      *
//      * @param role the role
//      *
//      * @return the component list
//      *
//      * @throws ComponentLookupException the component lookup exception
//      */
//     List<?> getComponentList ( String role )
//         throws ComponentLookupException;
// 
//     /**
//      * Gets the container.
//      *
//      * @return the container
//      */
//     PlexusContainer getContainer();
// }
// 
// Path: enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/utils/MockEnforcerExpressionEvaluator.java
// public class MockEnforcerExpressionEvaluator
//     extends EnforcerExpressionEvaluator
// {
//     /**
//      * Instantiates a new mock enforcer expression evaluator.
//      *
//      * @param theContext the context
//      */
//     public MockEnforcerExpressionEvaluator( MavenSession theContext )
//     {
//         super( theContext, new MojoExecution( new MojoDescriptor() ) );
//     }
// 
//     @Override
//     public Object evaluate( String expr )
//         throws ExpressionEvaluationException
//     {
//         if ( expr != null )
//         {
//             // just remove the ${ } and return the name as the value
//             return expr.replaceAll( "\\$\\{|}", "" );
//         }
//         else
//         {
//             return expr;
//         }
//     }
// 
// }


import static org.mockito.Mockito.any;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
import java.util.Arrays;
import java.util.Collections;
import java.util.Properties;
import org.apache.maven.artifact.Artifact;
import org.apache.maven.artifact.DefaultArtifact;
import org.apache.maven.enforcer.rule.api.EnforcerRuleHelper;
import org.apache.maven.execution.MavenExecutionRequest;
import org.apache.maven.execution.MavenExecutionResult;
import org.apache.maven.execution.MavenSession;
import org.apache.maven.model.InputLocation;
import org.apache.maven.model.InputSource;
import org.apache.maven.model.Plugin;
import org.apache.maven.plugin.MojoExecution;
import org.apache.maven.plugin.PluginParameterExpressionEvaluator;
import org.apache.maven.plugin.logging.SystemStreamLog;
import org.apache.maven.plugins.enforcer.utils.MockEnforcerExpressionEvaluator;
import org.apache.maven.project.MavenProject;
import org.apache.maven.project.ProjectBuildingRequest;
import org.apache.maven.shared.dependency.graph.DependencyCollectorBuilder;
import org.apache.maven.shared.dependency.graph.internal.DefaultDependencyNode;
import org.codehaus.plexus.PlexusContainer;
import org.codehaus.plexus.component.configurator.expression.ExpressionEvaluator;
import org.codehaus.plexus.component.repository.exception.ComponentLookupException;
import org.mockito.Mockito;
     */
    public static EnforcerRuleHelper getHelper( boolean mockExpression )
    {
        return getHelper( new MockProject(), mockExpression );
    }

    /**
     * Gets the helper.
     *
     * @param project the project
     * @return the helper
     */
    public static EnforcerRuleHelper getHelper( MavenProject project )
    {
        return getHelper( project, false );
    }

    /**
     * Gets the helper.
     *
     * @param project the project
     * @param mockExpression the mock expression
     * @return the helper
     */
    public static EnforcerRuleHelper getHelper( MavenProject project, boolean mockExpression )
    {
        MavenSession session = getMavenSession();
        ExpressionEvaluator eval;
        if ( mockExpression )
        {
// Path: enforcer-api/src/main/java/org/apache/maven/enforcer/rule/api/EnforcerRuleHelper.java
// public interface EnforcerRuleHelper
//     extends ExpressionEvaluator
// {
// 
//     /**
//      * Gets the log.
//      *
//      * @return the log
//      */
//     @Nonnull
//     Log getLog ();
// 
//     /**
//      * Gets the component.
//      *
//      * @param clazz the clazz
//      *
//      * @return the component
//      *
//      * @throws ComponentLookupException the component lookup exception
//      */
//     @Nonnull
//     <T> T getComponent ( Class<T> clazz )
//         throws ComponentLookupException;
// 
//     /**
//      * Gets the component.
//      *
//      * @param componentKey the component key
//      *
//      * @return the component
//      *
//      * @throws ComponentLookupException the component lookup exception
//      */
//     @Nonnull
//     Object getComponent ( String componentKey )
//         throws ComponentLookupException;
// 
//     /**
//      * Gets the component.
//      *
//      * @param role the role
//      * @param roleHint the role hint
//      *
//      * @return the component
//      *
//      * @throws ComponentLookupException the component lookup exception
//      */
//     Object getComponent ( String role, String roleHint )
//         throws ComponentLookupException;
// 
//     /**
//      * Gets the component.
//      *
//      * @param clazz the clazz
//      * @param roleHint the role hint
//      *
//      * @return the component
//      *
//      * @throws ComponentLookupException the component lookup exception
//      */
//     <T> T getComponent ( Class<T> clazz, String roleHint )
//         throws ComponentLookupException;
//     
//     /**
//      * Gets the component map.
//      *
//      * @param role the role
//      *
//      * @return the component map
//      *
//      * @throws ComponentLookupException the component lookup exception
//      */
//     Map<String, ?> getComponentMap ( String role )
//         throws ComponentLookupException;
// 
//     /**
//      * Gets the component list.
//      *
//      * @param role the role
//      *
//      * @return the component list
//      *
//      * @throws ComponentLookupException the component lookup exception
//      */
//     List<?> getComponentList ( String role )
//         throws ComponentLookupException;
// 
//     /**
//      * Gets the container.
//      *
//      * @return the container
//      */
//     PlexusContainer getContainer();
// }
// 
// Path: enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/utils/MockEnforcerExpressionEvaluator.java
// public class MockEnforcerExpressionEvaluator
//     extends EnforcerExpressionEvaluator
// {
//     /**
//      * Instantiates a new mock enforcer expression evaluator.
//      *
//      * @param theContext the context
//      */
//     public MockEnforcerExpressionEvaluator( MavenSession theContext )
//     {
//         super( theContext, new MojoExecution( new MojoDescriptor() ) );
//     }
// 
//     @Override
//     public Object evaluate( String expr )
//         throws ExpressionEvaluationException
//     {
//         if ( expr != null )
//         {
//             // just remove the ${ } and return the name as the value
//             return expr.replaceAll( "\\$\\{|}", "" );
//         }
//         else
//         {
//             return expr;
//         }
//     }
// 
// }


// Path: enforcer-rules/src/test/java/org/apache/maven/plugins/enforcer/EnforcerTestUtils.java
import static org.mockito.Mockito.any;
import static org.mockito.Mockito.mock;
import static org.mockito.Mockito.when;
import java.util.Arrays;
import java.util.Collections;
import java.util.Properties;
import org.apache.maven.artifact.Artifact;
import org.apache.maven.artifact.DefaultArtifact;
import org.apache.maven.enforcer.rule.api.EnforcerRuleHelper;
import org.apache.maven.execution.MavenExecutionRequest;
import org.apache.maven.execution.MavenExecutionResult;
import org.apache.maven.execution.MavenSession;
import org.apache.maven.model.InputLocation;
import org.apache.maven.model.InputSource;
import org.apache.maven.model.Plugin;
import org.apache.maven.plugin.MojoExecution;
import org.apache.maven.plugin.PluginParameterExpressionEvaluator;
import org.apache.maven.plugin.logging.SystemStreamLog;
import org.apache.maven.plugins.enforcer.utils.MockEnforcerExpressionEvaluator;
import org.apache.maven.project.MavenProject;
import org.apache.maven.project.ProjectBuildingRequest;
import org.apache.maven.shared.dependency.graph.DependencyCollectorBuilder;
import org.apache.maven.shared.dependency.graph.internal.DefaultDependencyNode;
import org.codehaus.plexus.PlexusContainer;
import org.codehaus.plexus.component.configurator.expression.ExpressionEvaluator;
import org.codehaus.plexus.component.repository.exception.ComponentLookupException;
import org.mockito.Mockito;

     */
    public static EnforcerRuleHelper getHelper( boolean mockExpression )
    {
        return getHelper( new MockProject(), mockExpression );
    }

    /**
     * Gets the helper.
     *
     * @param project the project
     * @return the helper
     */
    public static EnforcerRuleHelper getHelper( MavenProject project )
    {
        return getHelper( project, false );
    }

    /**
     * Gets the helper.
     *
     * @param project the project
     * @param mockExpression the mock expression
     * @return the helper
     */
    public static EnforcerRuleHelper getHelper( MavenProject project, boolean mockExpression )
    {
        MavenSession session = getMavenSession();
        ExpressionEvaluator eval;
        if ( mockExpression )
        {
            eval = new MockEnforcerExpressionEvaluator( session );