diff --git a/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/AbstractPropertyEnforcerRule.java b/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/AbstractPropertyEnforcerRule.java
index caa4983..6fadae1 100755
--- a/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/AbstractPropertyEnforcerRule.java
+++ b/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/AbstractPropertyEnforcerRule.java
@@ -35,28 +35,67 @@
 
     /**
      * Match the property value to a given regular expression. Defaults to <code>null</code> (any value is ok).
+     * 
+     * @deprecated the visibility will be reduced to private with the next major version
+     * @see {@link #setRegex(String)}
+     * @see {@link #getRegex()}
      */
-    private String regex;
+    public String regex = null;
 
     /**
      * Specify a warning message if the regular expression is not matched.
+     * 
+     * @deprecated the visibility will be reduced to private with the next major version
+     * @see {@link #setRegexMessage(String)}
+     * @see {@link #getRegexMessage()}
      */
-    private String regexMessage;
+    public String regexMessage = null;
 
     public AbstractPropertyEnforcerRule()
     {
         super();
     }
     
-    public void setRegex( String regex )
+    /**
+     * Set the property value to a given regular expression. Defaults to <code>null</code> (any value is ok).
+     * 
+     * @param the regular expression
+     */
+    public final void setRegex( String regex )
     {
         this.regex = regex;
     }
+
+    /**
+     * Get the property value to a given regular expression. Defaults to <code>null</code> (any value is ok).
+     * 
+     * @return the regular expression
+     */
+    public final String getRegex()
+    {
+        return regex;
+    }
     
-    public void setRegexMessage( String regexMessage )
+    /**
+     * Set a warning message if the regular expression is not matched.
+     * 
+     * @param regexMessage the regex message
+     */
+    public final void setRegexMessage( String regexMessage )
     {
         this.regexMessage = regexMessage;
     }
+    
+    /**
+     * Get a warning message if the regular expression is not matched.
+     * 
+     * @return the regex message
+     */
+    public final String getRegexMessage()
+    {
+        return regexMessage;
+    }
+    
 
     /**
      * Execute the rule.
diff --git a/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/AbstractStandardEnforcerRule.java b/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/AbstractStandardEnforcerRule.java
index 0a5a6c0..d79c985 100644
--- a/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/AbstractStandardEnforcerRule.java
+++ b/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/AbstractStandardEnforcerRule.java
@@ -28,9 +28,15 @@
     implements EnforcerRule
 {
 
-    /** Specify a friendly message if the rule fails. */
-    private String message;
-    
+    /** Specify a friendly message if the rule fails.
+     *  
+     * @deprecated the visibility will be reduced to private with the next major version
+     * @see {@link #setMessage(String)}
+     * @see {@link #getMessage()}
+ 
+     */
+    public String message = null;
+
     public final void setMessage( String message )
     {
         this.message = message;
diff --git a/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/AbstractVersionEnforcer.java b/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/AbstractVersionEnforcer.java
index 812a983..ecd5095 100644
--- a/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/AbstractVersionEnforcer.java
+++ b/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/AbstractVersionEnforcer.java
@@ -49,8 +49,13 @@
      * <li><code>[2.0.5,)</code> Versions 2.0.5 and higher</li>
      * <li><code>(,2.0.5],[2.1.1,)</code> Versions up to 2.0.5 (included) and 2.1.1 or higher</li>
      * </ul>
+     * 
+     * @deprecated the visibility will be reduced to private with the next major version
+     * @see {@link #setVersion(String)}
+     * @see {@link #getVersion()}
+
      */
-    private String version;
+    public String version = null;
 
     /**
      * Compares the specified version to see if it is allowed by the defined version range.
diff --git a/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/BannedDependencies.java b/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/BannedDependencies.java
index 676f1a9..f80daf8 100644
--- a/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/BannedDependencies.java
+++ b/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/BannedDependencies.java
@@ -45,8 +45,12 @@
      * Specify the banned dependencies. This can be a list of artifacts in the format <code>groupId[:artifactId][:version]</code>.
      * Any of the sections can be a wildcard by using '*' (ie group:*:1.0) <br>
      * The rule will fail if any dependency matches any exclude, unless it also matches an include rule.
+     * 
+     * @deprecated the visibility will be reduced to private with the next major version
+     * @see {@link #setExcludes(List)}
+     * @see {@link #getExcludes()}
      */
-    private List<String> excludes = null;
+    public List<String> excludes = null;
 
     /**
      * Specify the allowed dependencies. This can be a list of artifacts in the format <code>groupId[:artifactId][:version]</code>.
@@ -54,8 +58,12 @@
      * Includes override the exclude rules. It is meant to allow wide exclusion rules with wildcards and still allow a
      * smaller set of includes. <br>
      * For example, to ban all xerces except xerces-api -> exclude "xerces", include "xerces:xerces-api"
+     * 
+     * @deprecated the visibility will be reduced to private with the next major version
+     * @see {@link #setIncludes(List)}
+     * @see {@link #getIncludes()}
      */
-    private List<String> includes = null;
+    public List<String> includes = null;
 
 
     /**
diff --git a/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/EvaluateBeanshell.java b/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/EvaluateBeanshell.java
index 5691477..a440733 100644
--- a/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/EvaluateBeanshell.java
+++ b/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/EvaluateBeanshell.java
@@ -19,6 +19,8 @@
  * under the License.
  */
 
+import java.util.List;
+
 import org.apache.maven.enforcer.rule.api.EnforcerRuleException;
 import org.apache.maven.enforcer.rule.api.EnforcerRuleHelper;
 import org.apache.maven.plugin.logging.Log;
@@ -40,9 +42,14 @@
     /** Beanshell interpreter. */
     private static final Interpreter bsh = new Interpreter();
 
-    /** The condition to be evaluated. */
-    private String condition;
-    
+    /** The condition to be evaluated.
+     *  
+     * @deprecated the visibility will be reduced to private with the next major version
+     * @see {@link #setCondition(String)}
+     * @see {@link #getCondition()}
+     * */
+    public String condition;
+
     public final void setCondition( String condition )
     {
         this.condition = condition;
diff --git a/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/RequireActiveProfile.java b/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/RequireActiveProfile.java
index 10a94e6..77709f9 100644
--- a/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/RequireActiveProfile.java
+++ b/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/RequireActiveProfile.java
@@ -38,11 +38,41 @@
     extends AbstractNonCacheableEnforcerRule
 {
 
-    /** Comma separated list of profiles to check. */
-    private String profiles = null;
+    /** Comma separated list of profiles to check.
+     *  
+     * @deprecated the visibility will be reduced to private with the next major version
+     * @see {@link #setProfiles(String)}
+     * @see {@link #getProfiles()}
+     */
+    public String profiles = null;
 
-    /** If all profiles must be active. If false, only one must be active */
-    private boolean all = true;
+    /** If all profiles must be active. If false, only one must be active
+     *
+     * @deprecated the visibility will be reduced to private with the next major version
+     * @see {@link #setAll(boolean)}
+     * @see {@link #isAll()}
+     */
+    public boolean all = true;
+    
+    public final String getProfiles()
+    {
+        return profiles;
+    }
+    
+    public final void setProfiles( String profiles )
+    {
+        this.profiles = profiles;
+    }
+    
+    public final boolean isAll()
+    {
+        return all;
+    }
+    
+    public final void setAll( boolean all )
+    {
+        this.all = all;
+    }
 
     /*
      * (non-Javadoc)
diff --git a/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/RequireEnvironmentVariable.java b/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/RequireEnvironmentVariable.java
index e844ee0..8a41143 100755
--- a/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/RequireEnvironmentVariable.java
+++ b/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/RequireEnvironmentVariable.java
@@ -34,12 +34,24 @@
     /**
      * Specify the required variable.
      */
-    private String variableName;
-    
+    public String variableName = null;
+
+    /**
+     * @param variableName the variable name
+     * 
+     * @deprecated the visibility will be reduced to private with the next major version
+     * @see {@link #setVariableName(String)}
+     * @see {@link #getVariableName()}
+     */
     public final void setVariableName( String variableName )
     {
         this.variableName = variableName;
     }
+    
+    public final String getVariableName()
+    {
+        return variableName;
+    }
 
     @Override
     public String resolveValue( EnforcerRuleHelper helper )
diff --git a/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/RequireNoRepositories.java b/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/RequireNoRepositories.java
index e96ccf1..e3dd800 100644
--- a/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/RequireNoRepositories.java
+++ b/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/RequireNoRepositories.java
@@ -47,33 +47,51 @@
 {
     /**
      * Whether to ban non-plugin repositories. By default they are banned.
+     * 
+     * @deprecated the visibility will be reduced to private with the next major version
+     * @see {@link #setBanRepositories(boolean)}
      */
-    private boolean banRepositories = true;
+    public boolean banRepositories = true;
 
     /**
      * Whether to ban plugin repositories. By default they are banned.
+     * 
+     * @deprecated the visibility will be reduced to private with the next major version
+     * @see {@link #setBanPluginRepositories(boolean)}
      */
-    private boolean banPluginRepositories = true;
+    public boolean banPluginRepositories = true;
 
     /**
      * Specify explicitly allowed non-plugin repositories. This is a list of ids.
+     * 
+     * @deprecated the visibility will be reduced to private with the next major version
+     * @see {@link #setAllowedRepositories(List)}
      */
-    private List<String> allowedRepositories = Collections.emptyList();
+    public List<String> allowedRepositories = Collections.emptyList();
 
     /**
      * Specify explicitly allowed plugin repositories. This is a list of ids.
+     * 
+     * @deprecated the visibility will be reduced to private with the next major version
+     * @see {@link #setAllowedPluginRepositories(List)}
      */
-    private List<String> allowedPluginRepositories = Collections.emptyList();
+    public List<String> allowedPluginRepositories = Collections.emptyList();
 
     /**
      * Whether to allow repositories which only resolve snapshots. By default they are banned.
+     * 
+     * @deprecated the visibility will be reduced to private with the next major version
+     * @see {@link #setAllowSnapshotRepositories(boolean)}
      */
-    private boolean allowSnapshotRepositories = false;
+    public boolean allowSnapshotRepositories = false;
 
     /**
      * Whether to allow plugin repositories which only resolve snapshots. By default they are banned.
+     * 
+     * @deprecated the visibility will be reduced to private with the next major version
+     * @see {@link #setAllowSnapshotPluginRepositories(boolean)}
      */
-    private boolean allowSnapshotPluginRepositories = false;
+    public boolean allowSnapshotPluginRepositories = false;
 
     public final void setBanRepositories( boolean banRepositories )
     {
diff --git a/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/RequireOS.java b/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/RequireOS.java
index f996c4f..eb29649 100644
--- a/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/RequireOS.java
+++ b/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/RequireOS.java
@@ -58,23 +58,44 @@
      * <li>z/os</li>
      * <li>os/400</li>
      * </ul>
+     * 
+     * @deprecated the visibility will be reduced to private with the next major version
+     * @see {@link #setFamily(String)}
+     * @see {@link #getFamily()}
      */
-    private String family = null;
+    public String family = null;
 
-    /** The OS name desired. */
-    private String name = null;
+    /** The OS name desired.
+     *
+     * @deprecated the visibility will be reduced to private with the next major version
+     * @see {@link #setName(String)}
+     * @see {@link #getName()}
+     */
+    public String name = null;
 
-    /** The OS version desired. */
-    private String version = null;
+    /** The OS version desired.
+     * 
+     * @deprecated the visibility will be reduced to private with the next major version
+     * @see {@link #setVersion(String)}
+     * @see {@link #getVersion()}
+     */
+    public String version = null;
 
-    /** The OS architecture desired. */
-    private String arch = null;
+    /** The OS architecture desired.
+     *  
+     * @deprecated the visibility will be reduced to private with the next major version
+     * @see {@link #setArch(String)}
+     * @see {@link #getArch()} 
+     */
+    public String arch = null;
 
-    /** Specify an optional message to the user if the rule fails. */
-    private String message = "";
-
-    /** Display detected OS information. */
-    private boolean display = false;
+    /** Display detected OS information.
+     *  
+     * @deprecated the visibility will be reduced to private with the next major version
+     * @see {@link #setDisplay(boolean)}
+     * @see {@link #isDisplay()}
+     * */
+    public boolean display = false;
 
     /**
      * Instantiates a new RequireOS.
@@ -104,6 +125,7 @@
         {
             if ( !isAllowed() )
             {
+                String message = getMessage();
                 if ( StringUtils.isEmpty( message ) )
                 {
                     message =
@@ -325,6 +347,16 @@
     {
         this.version = theVersion;
     }
+    
+    public final void setDisplay( boolean display )
+    {
+        this.display = display;
+    }
+    
+    public final boolean isDisplay()
+    {
+        return display;
+    }
 
     /*
      * (non-Javadoc)
diff --git a/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/RequirePluginVersions.java b/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/RequirePluginVersions.java
index 208537a..5bc123c 100644
--- a/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/RequirePluginVersions.java
+++ b/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/RequirePluginVersions.java
@@ -84,44 +84,79 @@
     extends AbstractNonCacheableEnforcerRule
 {
 
-    /** Don't allow the LATEST identifier. */
-    private boolean banLatest = true;
+    /** Don't allow the LATEST identifier. 
+     * 
+     * @deprecated the visibility will be reduced to private with the next major version
+     * @see {@link #setBanLatest(boolean)}
+     * @see {@link #isBanLatest()}
+     */
+    public boolean banLatest = true;
 
-    /** Don't allow the RELEASE identifier. */
-    private boolean banRelease = true;
+    /** Don't allow the RELEASE identifier.
+     *  
+     * @deprecated the visibility will be reduced to private with the next major version
+     * @see {@link #setBanRelease(boolean)}
+     * @see {@link #isBanRelease()}
+     */
+    public boolean banRelease = true;
 
-    /** Don't allow snapshot plugins. */
-    private boolean banSnapshots = true;
+    /** Don't allow snapshot plugins. 
+     * 
+     * @deprecated the visibility will be reduced to private with the next major version
+     * @see {@link #setBanSnapshots(boolean)}
+     * @see {@link #isBanSnapshots()}
+     */
+    public boolean banSnapshots = true;
 
-    /** Don't allow timestamp snapshot plugins. */
-    private boolean banTimestamps = true;
+    /** Don't allow timestamp snapshot plugins. 
+     * 
+     * @deprecated the visibility will be reduced to private with the next major version
+     * @see {@link #setBanTimestamps(boolean)}
+     * @see {@link #isBanTimestamps()}
+     */
+    public boolean banTimestamps = true;
 
     /**
      * The comma separated list of phases that should be used to find lifecycle plugin bindings. The default value is
      * "clean,deploy,site".
+     * 
+     * @deprecated the visibility will be reduced to private with the next major version
+     * @see {@link #setPhases(String)}
+     * @see {@link #getPhases()}
      */
-    private String phases = "clean,deploy,site";
+    public String phases = "clean,deploy,site";
 
     /**
      * Additional plugins to enforce have versions. These are plugins that may not be in the poms but are used anyway,
      * like help, eclipse etc. <br>
      * The plugins should be specified in the form: <code>group:artifactId</code>.
+     * 
+     * @deprecated the visibility will be reduced to private with the next major version
+     * @see {@link #setAdditionalPlugins(List)}
+     * @see {@link #getAdditionalPlugins()}
      */
-    private List<String> additionalPlugins;
+    public List<String> additionalPlugins;
 
     /**
      * Plugins to skip for version enforcement. The plugins should be specified in the form:
      * <code>group:artifactId</code>. NOTE: This is deprecated, use unCheckedPluginList instead.
-     * @deprecated
+     * 
+     * @deprecated the visibility will be reduced to private with the next major version
+     * @see {@link #setUnCheckedPlugins(List)}
+     * @see {@link #getUnCheckedPlugins()}
      */
-    private List unCheckedPlugins;
+    public List unCheckedPlugins;
 
     /**
      * Same as unCheckedPlugins but as a comma list to better support properties. Sample form:
      * <code>group:artifactId,group2:artifactId2</code>
      * @since 1.0-beta-1
+     * 
+     * @deprecated the visibility will be reduced to private with the next major version
+     * @see {@link #setUnCheckedPlugins(List)}
+     * @see {@link #getUnCheckedPlugins()}
      */
-    private String unCheckedPluginList;
+    public String unCheckedPluginList;
 
     /** The plugin manager. */
     private PluginManager pluginManager;
@@ -133,25 +168,25 @@
     private Collection<Lifecycle> lifecycles;
 
     /** The factory. */
-    private ArtifactFactory factory;
+    ArtifactFactory factory;
 
     /** The resolver. */
-    private ArtifactResolver resolver;
+    ArtifactResolver resolver;
 
     /** The local. */
-    private ArtifactRepository local;
+    ArtifactRepository local;
 
     /** The remote repositories. */
-    private List<ArtifactRepository> remoteRepositories;
+    List<ArtifactRepository> remoteRepositories;
 
     /** The log. */
-    private Log log;
+    Log log;
 
     /** The session. */
-    private MavenSession session;
+    MavenSession session;
 
     /** The utils. */
-    private EnforcerRuleUtils utils;
+    EnforcerRuleUtils utils;
 
     /*
      * (non-Javadoc)
@@ -1225,4 +1260,24 @@
     {
         this.unCheckedPlugins = unCheckedPlugins;
     }
+    
+    public final void setPhases( String phases )
+    {
+        this.phases = phases;
+    }
+    
+    public final String getPhases()
+    {
+        return phases;
+    }
+    
+    public final void setAdditionalPlugins( List<String> additionalPlugins )
+    {
+        this.additionalPlugins = additionalPlugins;
+    }
+    
+    public final List<String> getAdditionalPlugins()
+    {
+        return additionalPlugins;
+    }
 }
\ No newline at end of file
diff --git a/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/RequireProperty.java b/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/RequireProperty.java
index 844f5fb..418a040 100644
--- a/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/RequireProperty.java
+++ b/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/RequireProperty.java
@@ -19,6 +19,8 @@
  * under the License.
  */
 
+import java.util.List;
+
 import org.apache.maven.enforcer.rule.api.EnforcerRuleException;
 import org.apache.maven.enforcer.rule.api.EnforcerRuleHelper;
 import org.codehaus.plexus.component.configurator.expression.ExpressionEvaluationException;
@@ -32,8 +34,14 @@
     extends AbstractPropertyEnforcerRule
 {
 
-    /** Specify the required property. */
-    private String property;
+    /** Specify the required property. 
+     * 
+     * @deprecated the visibility will be reduced to private with the next major version
+     * @see {@link #setProperty(String)}
+     * @see {@link #getPropertyName()}
+     */
+    public String property = null;
+    
     
     public final void setProperty( String property )
     {
diff --git a/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/RequireReleaseDeps.java b/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/RequireReleaseDeps.java
index fae050e..228f349 100644
--- a/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/RequireReleaseDeps.java
+++ b/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/RequireReleaseDeps.java
@@ -47,30 +47,45 @@
      * Allows this rule to execute only when this project is a release.
      *
      * @parameter
+     * 
+     * @deprecated the visibility will be reduced to private with the next major version
+     * @see {@link #setOnlyWhenRelease(boolean)}
+     * @see {@link #isOnlyWhenRelease()}
+
      */
-    private boolean onlyWhenRelease = false;
+    public boolean onlyWhenRelease = false;
 
     /**
      * Allows this rule to fail when the parent is defined as a snapshot.
      *
      * @parameter
+     * 
+     * @deprecated the visibility will be reduced to private with the next major version
+     * @see {@link #setFailWhenParentIsSnapshot(boolean)}
+     * @see {@link #isFailWhenParentIsSnapshot()}
      */
-    private boolean failWhenParentIsSnapshot = true;
+    public boolean failWhenParentIsSnapshot = true;
 
     /**
      * Dependencies to ignore when checking for release versions.  For example, inter-module dependencies 
      * can be excluded from the check and therefore allowed to contain snapshot versions.
+     * 
+     * @deprecated the visibility will be reduced to private with the next major version
+     * @see {@link #setExcludes(List)}
+     * @see {@link #getExcludes()}
      */
-    private List<String> excludes = null;
+    public List<String> excludes = null;
 
     /**
      * Dependencies to include when checking for release versions.  If any of the included dependencies
      * have snapshot versions, the rule will fail.
+     * 
+     * @deprecated the visibility will be reduced to private with the next major version
+     * @see {@link #setIncludes(List)}
+     * @see {@link #getIncludes()}
      */
-    private List<String> includes = null;
+    public List<String> includes = null;
 
-    
-    
     /**
      * Override parent to allow optional ignore of this rule.
      * 
@@ -206,4 +221,24 @@
     {
         this.failWhenParentIsSnapshot = failWhenParentIsSnapshot;
     }
+    
+    public final void setExcludes( List<String> excludes )
+    {
+        this.excludes = excludes;
+    }
+    
+    public final List<String> getExcludes()
+    {
+        return excludes;
+    }
+    
+    public void setIncludes( List<String> includes )
+    {
+        this.includes = includes;
+    }
+    
+    public List<String> getIncludes()
+    {
+        return includes;
+    }
 }
diff --git a/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/RequireReleaseVersion.java b/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/RequireReleaseVersion.java
index 75c3226..82020fa 100644
--- a/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/RequireReleaseVersion.java
+++ b/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/RequireReleaseVersion.java
@@ -38,8 +38,12 @@
      * Allows this rule to fail when the parent is defined as a snapshot.
      *
      * @parameter
+     * 
+     * @deprecated the visibility will be reduced to private with the next major version
+     * @see {@link #setFailWhenParentIsSnapshot(boolean)}
+     * @see {@link #isFailWhenParentIsSnapshot()}
      */
-    private boolean failWhenParentIsSnapshot = true;
+    public boolean failWhenParentIsSnapshot = true;
 
     /*
      * (non-Javadoc)
