Moving files from the parser package to rules.

Summary:
Rehouse some classes that were in the "parser" package to a more
logical home in the "rules" pacakge. These are essentially the
*BuildRuleFactory and associated parameters classes.

Test Plan: buck test --all
diff --git a/src/com/facebook/buck/android/AndroidBinaryBuildRuleFactory.java b/src/com/facebook/buck/android/AndroidBinaryBuildRuleFactory.java
index 6001118..4fcfb52 100644
--- a/src/com/facebook/buck/android/AndroidBinaryBuildRuleFactory.java
+++ b/src/com/facebook/buck/android/AndroidBinaryBuildRuleFactory.java
@@ -18,8 +18,8 @@
 
 import com.facebook.buck.dalvik.ZipSplitter;
 import com.facebook.buck.model.BuildTarget;
-import com.facebook.buck.parser.AbstractBuildRuleFactory;
-import com.facebook.buck.parser.BuildRuleFactoryParams;
+import com.facebook.buck.rules.AbstractBuildRuleFactory;
+import com.facebook.buck.rules.BuildRuleFactoryParams;
 import com.facebook.buck.parser.NoSuchBuildTargetException;
 import com.facebook.buck.rules.AbstractBuildRuleBuilderParams;
 import com.facebook.buck.rules.SourcePath;
diff --git a/src/com/facebook/buck/android/AndroidInstrumentationApkRuleFactory.java b/src/com/facebook/buck/android/AndroidInstrumentationApkRuleFactory.java
index 6ed818e..04e4a43 100644
--- a/src/com/facebook/buck/android/AndroidInstrumentationApkRuleFactory.java
+++ b/src/com/facebook/buck/android/AndroidInstrumentationApkRuleFactory.java
@@ -17,8 +17,8 @@
 package com.facebook.buck.android;
 
 import com.facebook.buck.model.BuildTarget;
-import com.facebook.buck.parser.AbstractBuildRuleFactory;
-import com.facebook.buck.parser.BuildRuleFactoryParams;
+import com.facebook.buck.rules.AbstractBuildRuleFactory;
+import com.facebook.buck.rules.BuildRuleFactoryParams;
 import com.facebook.buck.parser.NoSuchBuildTargetException;
 import com.facebook.buck.rules.AbstractBuildRuleBuilderParams;
 
diff --git a/src/com/facebook/buck/android/AndroidLibraryBuildRuleFactory.java b/src/com/facebook/buck/android/AndroidLibraryBuildRuleFactory.java
index b99249e..344beb8 100644
--- a/src/com/facebook/buck/android/AndroidLibraryBuildRuleFactory.java
+++ b/src/com/facebook/buck/android/AndroidLibraryBuildRuleFactory.java
@@ -18,7 +18,7 @@
 
 import com.facebook.buck.java.DefaultJavaLibraryRule;
 import com.facebook.buck.java.JavaLibraryBuildRuleFactory;
-import com.facebook.buck.parser.BuildRuleFactoryParams;
+import com.facebook.buck.rules.BuildRuleFactoryParams;
 import com.facebook.buck.parser.NoSuchBuildTargetException;
 import com.facebook.buck.rules.AbstractBuildRuleBuilderParams;
 import com.google.common.base.Optional;
diff --git a/src/com/facebook/buck/android/AndroidManifestBuildRuleFactory.java b/src/com/facebook/buck/android/AndroidManifestBuildRuleFactory.java
index e12fdbe..071f30e 100644
--- a/src/com/facebook/buck/android/AndroidManifestBuildRuleFactory.java
+++ b/src/com/facebook/buck/android/AndroidManifestBuildRuleFactory.java
@@ -15,8 +15,8 @@
  */
 package com.facebook.buck.android;
 
-import com.facebook.buck.parser.AbstractBuildRuleFactory;
-import com.facebook.buck.parser.BuildRuleFactoryParams;
+import com.facebook.buck.rules.AbstractBuildRuleFactory;
+import com.facebook.buck.rules.BuildRuleFactoryParams;
 import com.facebook.buck.rules.AbstractBuildRuleBuilderParams;
 
 public final class AndroidManifestBuildRuleFactory extends AbstractBuildRuleFactory<AndroidManifest.Builder> {
diff --git a/src/com/facebook/buck/android/AndroidResourceBuildRuleFactory.java b/src/com/facebook/buck/android/AndroidResourceBuildRuleFactory.java
index b9ee689..cf1b322 100644
--- a/src/com/facebook/buck/android/AndroidResourceBuildRuleFactory.java
+++ b/src/com/facebook/buck/android/AndroidResourceBuildRuleFactory.java
@@ -16,8 +16,8 @@
 
 package com.facebook.buck.android;
 
-import com.facebook.buck.parser.AbstractBuildRuleFactory;
-import com.facebook.buck.parser.BuildRuleFactoryParams;
+import com.facebook.buck.rules.AbstractBuildRuleFactory;
+import com.facebook.buck.rules.BuildRuleFactoryParams;
 import com.facebook.buck.parser.NoSuchBuildTargetException;
 import com.facebook.buck.rules.AbstractBuildRuleBuilderParams;
 import com.google.common.base.Optional;
diff --git a/src/com/facebook/buck/android/ApkGenruleBuildRuleFactory.java b/src/com/facebook/buck/android/ApkGenruleBuildRuleFactory.java
index 8b8ca71..7adf658 100644
--- a/src/com/facebook/buck/android/ApkGenruleBuildRuleFactory.java
+++ b/src/com/facebook/buck/android/ApkGenruleBuildRuleFactory.java
@@ -17,8 +17,8 @@
 package com.facebook.buck.android;
 
 import com.facebook.buck.model.BuildTarget;
-import com.facebook.buck.parser.AbstractBuildRuleFactory;
-import com.facebook.buck.parser.BuildRuleFactoryParams;
+import com.facebook.buck.rules.AbstractBuildRuleFactory;
+import com.facebook.buck.rules.BuildRuleFactoryParams;
 import com.facebook.buck.rules.AbstractBuildRuleBuilderParams;
 import com.google.common.base.Optional;
 
diff --git a/src/com/facebook/buck/android/BUCK b/src/com/facebook/buck/android/BUCK
index 2338d5c..ef50c93 100644
--- a/src/com/facebook/buck/android/BUCK
+++ b/src/com/facebook/buck/android/BUCK
@@ -82,7 +82,7 @@
     '//src/com/facebook/buck/java:rules',
     '//src/com/facebook/buck/java:support',
     '//src/com/facebook/buck/model:model',
-    '//src/com/facebook/buck/parser:support',
+    '//src/com/facebook/buck/parser:rule_pattern',
     '//src/com/facebook/buck/rules:build_rule',
     '//src/com/facebook/buck/rules:rules',
     '//src/com/facebook/buck/shell:steps',
diff --git a/src/com/facebook/buck/android/GenAidlBuildRuleFactory.java b/src/com/facebook/buck/android/GenAidlBuildRuleFactory.java
index f3b628e..c914606 100644
--- a/src/com/facebook/buck/android/GenAidlBuildRuleFactory.java
+++ b/src/com/facebook/buck/android/GenAidlBuildRuleFactory.java
@@ -16,8 +16,8 @@
 
 package com.facebook.buck.android;
 
-import com.facebook.buck.parser.AbstractBuildRuleFactory;
-import com.facebook.buck.parser.BuildRuleFactoryParams;
+import com.facebook.buck.rules.AbstractBuildRuleFactory;
+import com.facebook.buck.rules.BuildRuleFactoryParams;
 import com.facebook.buck.rules.AbstractBuildRuleBuilderParams;
 
 import java.io.File;
diff --git a/src/com/facebook/buck/android/NdkLibraryBuildRuleFactory.java b/src/com/facebook/buck/android/NdkLibraryBuildRuleFactory.java
index 7035903..eb7181f 100644
--- a/src/com/facebook/buck/android/NdkLibraryBuildRuleFactory.java
+++ b/src/com/facebook/buck/android/NdkLibraryBuildRuleFactory.java
@@ -16,8 +16,8 @@
 
 package com.facebook.buck.android;
 
-import com.facebook.buck.parser.AbstractBuildRuleFactory;
-import com.facebook.buck.parser.BuildRuleFactoryParams;
+import com.facebook.buck.rules.AbstractBuildRuleFactory;
+import com.facebook.buck.rules.BuildRuleFactoryParams;
 import com.facebook.buck.rules.AbstractBuildRuleBuilderParams;
 
 import java.util.List;
diff --git a/src/com/facebook/buck/android/PrebuiltNativeLibraryBuildRuleFactory.java b/src/com/facebook/buck/android/PrebuiltNativeLibraryBuildRuleFactory.java
index a242541..33ead14 100644
--- a/src/com/facebook/buck/android/PrebuiltNativeLibraryBuildRuleFactory.java
+++ b/src/com/facebook/buck/android/PrebuiltNativeLibraryBuildRuleFactory.java
@@ -16,8 +16,8 @@
 
 package com.facebook.buck.android;
 
-import com.facebook.buck.parser.AbstractBuildRuleFactory;
-import com.facebook.buck.parser.BuildRuleFactoryParams;
+import com.facebook.buck.rules.AbstractBuildRuleFactory;
+import com.facebook.buck.rules.BuildRuleFactoryParams;
 import com.facebook.buck.parser.NoSuchBuildTargetException;
 import com.facebook.buck.rules.AbstractBuildRuleBuilderParams;
 
diff --git a/src/com/facebook/buck/android/RobolectricTestBuildRuleFactory.java b/src/com/facebook/buck/android/RobolectricTestBuildRuleFactory.java
index 7777d0b..7fac511 100644
--- a/src/com/facebook/buck/android/RobolectricTestBuildRuleFactory.java
+++ b/src/com/facebook/buck/android/RobolectricTestBuildRuleFactory.java
@@ -17,7 +17,7 @@
 
 import com.facebook.buck.java.JavaTestBuildRuleFactory;
 import com.facebook.buck.java.JavaTestRule;
-import com.facebook.buck.parser.BuildRuleFactoryParams;
+import com.facebook.buck.rules.BuildRuleFactoryParams;
 import com.facebook.buck.parser.NoSuchBuildTargetException;
 import com.facebook.buck.rules.AbstractBuildRuleBuilderParams;
 
diff --git a/src/com/facebook/buck/cli/BUCK b/src/com/facebook/buck/cli/BUCK
index b7e56aa..acbbd5b 100644
--- a/src/com/facebook/buck/cli/BUCK
+++ b/src/com/facebook/buck/cli/BUCK
@@ -43,7 +43,7 @@
     '//src/com/facebook/buck/model:model',
     '//src/com/facebook/buck/parser:parser',
     '//src/com/facebook/buck/parser:project',
-    '//src/com/facebook/buck/parser:support',
+    '//src/com/facebook/buck/parser:rule_pattern',
     '//src/com/facebook/buck/rules:build_rule',
     '//src/com/facebook/buck/rules:rules',
     '//src/com/facebook/buck/test:test',
diff --git a/src/com/facebook/buck/command/BUCK b/src/com/facebook/buck/command/BUCK
index 8f2011c..ba310b52 100644
--- a/src/com/facebook/buck/command/BUCK
+++ b/src/com/facebook/buck/command/BUCK
@@ -15,7 +15,6 @@
     '//src/com/facebook/buck/java:support',
     '//src/com/facebook/buck/model:model',
     '//src/com/facebook/buck/parser:parser',
-    '//src/com/facebook/buck/parser:support',
     '//src/com/facebook/buck/rules:build_rule',
     '//src/com/facebook/buck/rules:rules',
     '//src/com/facebook/buck/shell:steps',
diff --git a/src/com/facebook/buck/java/BUCK b/src/com/facebook/buck/java/BUCK
index b1a99a6..909d9eb 100644
--- a/src/com/facebook/buck/java/BUCK
+++ b/src/com/facebook/buck/java/BUCK
@@ -50,7 +50,7 @@
     '//src/com/facebook/buck/graph:graph',
     '//src/com/facebook/buck/java/abi:protocol',
     '//src/com/facebook/buck/model:model',
-    '//src/com/facebook/buck/parser:support',
+    '//src/com/facebook/buck/parser:rule_pattern',
     '//src/com/facebook/buck/rules:build_rule',
     '//src/com/facebook/buck/rules:rules',
     '//src/com/facebook/buck/test:test',
diff --git a/src/com/facebook/buck/java/JavaBinaryBuildRuleFactory.java b/src/com/facebook/buck/java/JavaBinaryBuildRuleFactory.java
index c2e2acb..268b53f 100644
--- a/src/com/facebook/buck/java/JavaBinaryBuildRuleFactory.java
+++ b/src/com/facebook/buck/java/JavaBinaryBuildRuleFactory.java
@@ -16,8 +16,8 @@
 
 package com.facebook.buck.java;
 
-import com.facebook.buck.parser.AbstractBuildRuleFactory;
-import com.facebook.buck.parser.BuildRuleFactoryParams;
+import com.facebook.buck.rules.AbstractBuildRuleFactory;
+import com.facebook.buck.rules.BuildRuleFactoryParams;
 import com.facebook.buck.parser.NoSuchBuildTargetException;
 import com.facebook.buck.rules.AbstractBuildRuleBuilderParams;
 import com.google.common.base.Optional;
diff --git a/src/com/facebook/buck/java/JavaLibraryBuildRuleFactory.java b/src/com/facebook/buck/java/JavaLibraryBuildRuleFactory.java
index 42ff25e..a87440f 100644
--- a/src/com/facebook/buck/java/JavaLibraryBuildRuleFactory.java
+++ b/src/com/facebook/buck/java/JavaLibraryBuildRuleFactory.java
@@ -17,8 +17,8 @@
 package com.facebook.buck.java;
 
 import com.facebook.buck.model.BuildTarget;
-import com.facebook.buck.parser.AbstractBuildRuleFactory;
-import com.facebook.buck.parser.BuildRuleFactoryParams;
+import com.facebook.buck.rules.AbstractBuildRuleFactory;
+import com.facebook.buck.rules.BuildRuleFactoryParams;
 import com.facebook.buck.parser.NoSuchBuildTargetException;
 import com.facebook.buck.rules.AbstractBuildRuleBuilderParams;
 import com.google.common.base.Optional;
diff --git a/src/com/facebook/buck/java/JavaTestBuildRuleFactory.java b/src/com/facebook/buck/java/JavaTestBuildRuleFactory.java
index 2203a53..7e7bea0 100644
--- a/src/com/facebook/buck/java/JavaTestBuildRuleFactory.java
+++ b/src/com/facebook/buck/java/JavaTestBuildRuleFactory.java
@@ -17,8 +17,8 @@
 package com.facebook.buck.java;
 
 import com.facebook.buck.model.BuildTarget;
-import com.facebook.buck.parser.AbstractTestRuleFactory;
-import com.facebook.buck.parser.BuildRuleFactoryParams;
+import com.facebook.buck.rules.AbstractTestRuleFactory;
+import com.facebook.buck.rules.BuildRuleFactoryParams;
 import com.facebook.buck.parser.NoSuchBuildTargetException;
 import com.facebook.buck.rules.AbstractBuildRuleBuilderParams;
 import com.google.common.base.Function;
diff --git a/src/com/facebook/buck/java/KeystoreBuildRuleFactory.java b/src/com/facebook/buck/java/KeystoreBuildRuleFactory.java
index ae46a96..24fa424 100644
--- a/src/com/facebook/buck/java/KeystoreBuildRuleFactory.java
+++ b/src/com/facebook/buck/java/KeystoreBuildRuleFactory.java
@@ -17,8 +17,8 @@
 package com.facebook.buck.java;
 
 import com.facebook.buck.java.Keystore.Builder;
-import com.facebook.buck.parser.AbstractTestRuleFactory;
-import com.facebook.buck.parser.BuildRuleFactoryParams;
+import com.facebook.buck.rules.AbstractTestRuleFactory;
+import com.facebook.buck.rules.BuildRuleFactoryParams;
 import com.facebook.buck.parser.NoSuchBuildTargetException;
 import com.facebook.buck.rules.AbstractBuildRuleBuilderParams;
 
diff --git a/src/com/facebook/buck/java/PrebuiltJarBuildRuleFactory.java b/src/com/facebook/buck/java/PrebuiltJarBuildRuleFactory.java
index 31bac53..8e213f1 100644
--- a/src/com/facebook/buck/java/PrebuiltJarBuildRuleFactory.java
+++ b/src/com/facebook/buck/java/PrebuiltJarBuildRuleFactory.java
@@ -16,8 +16,8 @@
 
 package com.facebook.buck.java;
 
-import com.facebook.buck.parser.AbstractBuildRuleFactory;
-import com.facebook.buck.parser.BuildRuleFactoryParams;
+import com.facebook.buck.rules.AbstractBuildRuleFactory;
+import com.facebook.buck.rules.BuildRuleFactoryParams;
 import com.facebook.buck.rules.AbstractBuildRuleBuilderParams;
 import com.google.common.base.Optional;
 
diff --git a/src/com/facebook/buck/parcelable/BUCK b/src/com/facebook/buck/parcelable/BUCK
index bef9425..12c9589 100644
--- a/src/com/facebook/buck/parcelable/BUCK
+++ b/src/com/facebook/buck/parcelable/BUCK
@@ -10,7 +10,7 @@
     '//lib:guava',
     '//lib:jsr305',
     '//src/com/facebook/buck/model:model',
-    '//src/com/facebook/buck/parser:support',
+    '//src/com/facebook/buck/parser:rule_pattern',
     '//src/com/facebook/buck/rules:build_rule',
     '//src/com/facebook/buck/rules:rules',
     '//src/com/facebook/buck/step:step',
diff --git a/src/com/facebook/buck/parcelable/GenParcelableBuildRuleFactory.java b/src/com/facebook/buck/parcelable/GenParcelableBuildRuleFactory.java
index ee740f4..5f108c4 100644
--- a/src/com/facebook/buck/parcelable/GenParcelableBuildRuleFactory.java
+++ b/src/com/facebook/buck/parcelable/GenParcelableBuildRuleFactory.java
@@ -16,8 +16,8 @@
 
 package com.facebook.buck.parcelable;
 
-import com.facebook.buck.parser.AbstractBuildRuleFactory;
-import com.facebook.buck.parser.BuildRuleFactoryParams;
+import com.facebook.buck.rules.AbstractBuildRuleFactory;
+import com.facebook.buck.rules.BuildRuleFactoryParams;
 import com.facebook.buck.parser.NoSuchBuildTargetException;
 import com.facebook.buck.rules.AbstractBuildRuleBuilderParams;
 
diff --git a/src/com/facebook/buck/parser/BUCK b/src/com/facebook/buck/parser/BUCK
index 483f657..ad541d0 100644
--- a/src/com/facebook/buck/parser/BUCK
+++ b/src/com/facebook/buck/parser/BUCK
@@ -7,7 +7,7 @@
   ],
   deps = [
     ':project',
-    ':support',
+    ':rule_pattern',
     '//lib:guava',
     '//lib:jackson-annotations',
     '//lib:jackson-core',
@@ -37,7 +37,7 @@
     'RawRulePredicates.java',
   ],
   deps = [
-    ':support',
+    ':rule_pattern',
     '//lib:guava',
     '//src/com/facebook/buck/model:model',
     '//src/com/facebook/buck/rules:build_rule',
@@ -47,14 +47,10 @@
 )
 
 java_library(
-  name = 'support',
+  name = 'rule_pattern',
   srcs = [
-    'AbstractBuildRuleFactory.java',
-    'AbstractTestRuleFactory.java',
-    'BuildRuleFactory.java',
-    'BuildRuleFactoryParams.java',
-    'BuildTargetParseException.java',
     'BuildTargetParser.java',
+    'BuildTargetParseException.java',
     'BuildTargetPatternParser.java',
     'NoSuchBuildTargetException.java',
     'ParseContext.java',
@@ -63,12 +59,9 @@
     '//lib:guava',
     '//lib:jsr305',
     '//src/com/facebook/buck/model:model',
-    '//src/com/facebook/buck/rules:build_rule',
-    '//src/com/facebook/buck/rules:rules',
     '//src/com/facebook/buck/util:constants',
     '//src/com/facebook/buck/util:exceptions',
     '//src/com/facebook/buck/util:io',
-    '//src/com/facebook/buck/util:util',
   ],
   visibility = ['PUBLIC'],
 )
diff --git a/src/com/facebook/buck/parser/BuildTargetPatternParser.java b/src/com/facebook/buck/parser/BuildTargetPatternParser.java
index 713e145..6e16aa0 100644
--- a/src/com/facebook/buck/parser/BuildTargetPatternParser.java
+++ b/src/com/facebook/buck/parser/BuildTargetPatternParser.java
@@ -20,12 +20,12 @@
 import com.facebook.buck.model.ImmediateDirectoryBuildTargetPattern;
 import com.facebook.buck.model.SingletonBuildTargetPattern;
 import com.facebook.buck.model.SubdirectoryBuildTargetPattern;
-import com.facebook.buck.rules.BuildRule;
 import com.facebook.buck.util.ProjectFilesystem;
 import com.google.common.base.Preconditions;
 
 public class BuildTargetPatternParser {
 
+  public static final String VISIBILITY_PUBLIC = "PUBLIC";
   private static final String BUILD_RULE_PREFIX = "//";
   private static final String WILDCARD_BUILD_RULE_SUFFIX = "...";
   private static final String BUILD_RULE_SEPARATOR = ":";
@@ -48,10 +48,10 @@
 
     Preconditions.checkNotNull(buildTargetPattern);
 
-    if (buildTargetPattern.equals(BuildRule.VISIBILITY_PUBLIC)) {
+    if (buildTargetPattern.equals(VISIBILITY_PUBLIC)) {
       if (parseContext.getType() != ParseContext.Type.VISIBILITY) {
         throw new BuildTargetParseException(
-            String.format("%s not supported in the parse context", BuildRule.VISIBILITY_PUBLIC));
+            String.format("%s not supported in the parse context", VISIBILITY_PUBLIC));
       } else {
         return BuildTargetPattern.MATCH_ALL;
       }
diff --git a/src/com/facebook/buck/parser/Parser.java b/src/com/facebook/buck/parser/Parser.java
index 4593454..c68c2b9 100644
--- a/src/com/facebook/buck/parser/Parser.java
+++ b/src/com/facebook/buck/parser/Parser.java
@@ -28,6 +28,8 @@
 import com.facebook.buck.model.BuildTargetException;
 import com.facebook.buck.rules.BuildRule;
 import com.facebook.buck.rules.BuildRuleBuilder;
+import com.facebook.buck.rules.BuildRuleFactory;
+import com.facebook.buck.rules.BuildRuleFactoryParams;
 import com.facebook.buck.rules.BuildRuleResolver;
 import com.facebook.buck.rules.BuildRuleType;
 import com.facebook.buck.rules.DependencyGraph;
diff --git a/src/com/facebook/buck/parser/ProjectConfigRuleFactory.java b/src/com/facebook/buck/parser/ProjectConfigRuleFactory.java
index 785b896..71df0f0 100644
--- a/src/com/facebook/buck/parser/ProjectConfigRuleFactory.java
+++ b/src/com/facebook/buck/parser/ProjectConfigRuleFactory.java
@@ -18,6 +18,8 @@
 
 import com.facebook.buck.model.BuildTarget;
 import com.facebook.buck.rules.AbstractBuildRuleBuilderParams;
+import com.facebook.buck.rules.AbstractBuildRuleFactory;
+import com.facebook.buck.rules.BuildRuleFactoryParams;
 import com.facebook.buck.rules.ProjectConfigRule;
 import com.google.common.base.Function;
 import com.google.common.base.Optional;
diff --git a/src/com/facebook/buck/python/BUCK b/src/com/facebook/buck/python/BUCK
index ce2abba..7c8a9d1 100644
--- a/src/com/facebook/buck/python/BUCK
+++ b/src/com/facebook/buck/python/BUCK
@@ -5,7 +5,7 @@
     '//lib:guava',
     '//lib:jsr305',
     '//src/com/facebook/buck/model:model',
-    '//src/com/facebook/buck/parser:support',
+    '//src/com/facebook/buck/parser:rule_pattern',
     '//src/com/facebook/buck/rules:build_rule',
     '//src/com/facebook/buck/rules:rules',
     '//src/com/facebook/buck/shell:steps',
diff --git a/src/com/facebook/buck/python/PythonBinaryBuildRuleFactory.java b/src/com/facebook/buck/python/PythonBinaryBuildRuleFactory.java
index f742f6e..4ee7aeb 100644
--- a/src/com/facebook/buck/python/PythonBinaryBuildRuleFactory.java
+++ b/src/com/facebook/buck/python/PythonBinaryBuildRuleFactory.java
@@ -16,8 +16,8 @@
 
 package com.facebook.buck.python;
 
-import com.facebook.buck.parser.AbstractBuildRuleFactory;
-import com.facebook.buck.parser.BuildRuleFactoryParams;
+import com.facebook.buck.rules.AbstractBuildRuleFactory;
+import com.facebook.buck.rules.BuildRuleFactoryParams;
 import com.facebook.buck.parser.NoSuchBuildTargetException;
 import com.facebook.buck.rules.AbstractBuildRuleBuilderParams;
 
diff --git a/src/com/facebook/buck/python/PythonLibraryBuildRuleFactory.java b/src/com/facebook/buck/python/PythonLibraryBuildRuleFactory.java
index 750150b..38f8296 100644
--- a/src/com/facebook/buck/python/PythonLibraryBuildRuleFactory.java
+++ b/src/com/facebook/buck/python/PythonLibraryBuildRuleFactory.java
@@ -16,8 +16,8 @@
 
 package com.facebook.buck.python;
 
-import com.facebook.buck.parser.AbstractBuildRuleFactory;
-import com.facebook.buck.parser.BuildRuleFactoryParams;
+import com.facebook.buck.rules.AbstractBuildRuleFactory;
+import com.facebook.buck.rules.BuildRuleFactoryParams;
 import com.facebook.buck.parser.NoSuchBuildTargetException;
 import com.facebook.buck.rules.AbstractBuildRuleBuilderParams;
 
diff --git a/src/com/facebook/buck/parser/AbstractBuildRuleFactory.java b/src/com/facebook/buck/rules/AbstractBuildRuleFactory.java
similarity index 93%
rename from src/com/facebook/buck/parser/AbstractBuildRuleFactory.java
rename to src/com/facebook/buck/rules/AbstractBuildRuleFactory.java
index 444debb..8fd35cd 100644
--- a/src/com/facebook/buck/parser/AbstractBuildRuleFactory.java
+++ b/src/com/facebook/buck/rules/AbstractBuildRuleFactory.java
@@ -14,16 +14,13 @@
  * under the License.
  */
 
-package com.facebook.buck.parser;
+package com.facebook.buck.rules;
 
 import com.facebook.buck.model.BuildTarget;
 import com.facebook.buck.model.BuildTargetException;
 import com.facebook.buck.model.BuildTargetPattern;
-import com.facebook.buck.rules.AbstractBuildRuleBuilder;
-import com.facebook.buck.rules.AbstractBuildRuleBuilderParams;
-import com.facebook.buck.rules.ResourcesAttributeBuilder;
-import com.facebook.buck.rules.SourcePath;
-import com.facebook.buck.rules.SrcsAttributeBuilder;
+import com.facebook.buck.parser.NoSuchBuildTargetException;
+import com.facebook.buck.parser.ParseContext;
 import com.facebook.buck.util.HumanReadableException;
 import com.google.common.annotations.Beta;
 import com.google.common.annotations.VisibleForTesting;
diff --git a/src/com/facebook/buck/parser/AbstractTestRuleFactory.java b/src/com/facebook/buck/rules/AbstractTestRuleFactory.java
similarity index 89%
rename from src/com/facebook/buck/parser/AbstractTestRuleFactory.java
rename to src/com/facebook/buck/rules/AbstractTestRuleFactory.java
index 5daa95a..46fc078 100644
--- a/src/com/facebook/buck/parser/AbstractTestRuleFactory.java
+++ b/src/com/facebook/buck/rules/AbstractTestRuleFactory.java
@@ -13,10 +13,9 @@
  * License for the specific language governing permissions and limitations
  * under the License.
  */
-package com.facebook.buck.parser;
+package com.facebook.buck.rules;
 
-import com.facebook.buck.rules.AbstractBuildRuleBuilder;
-import com.facebook.buck.rules.LabelsAttributeBuilder;
+import com.facebook.buck.parser.NoSuchBuildTargetException;
 import com.google.common.collect.ImmutableSet;
 
 import java.util.List;
diff --git a/src/com/facebook/buck/rules/BUCK b/src/com/facebook/buck/rules/BUCK
index d9ee695..a68b728 100644
--- a/src/com/facebook/buck/rules/BUCK
+++ b/src/com/facebook/buck/rules/BUCK
@@ -7,11 +7,11 @@
     ':build_rule',
     ':rules',
     '//lib:guava',
+    '//lib:jsr305',
     '//src/com/facebook/buck/android:rules',
     '//src/com/facebook/buck/java:rules',
     '//src/com/facebook/buck/parcelable:rules',
     '//src/com/facebook/buck/parser:project',
-    '//src/com/facebook/buck/parser:support',
     '//src/com/facebook/buck/python:rules',
     '//src/com/facebook/buck/shell:rules',
     '//src/com/facebook/buck/util:exceptions',
@@ -28,6 +28,9 @@
 java_library(
   name = 'build_rule',
   srcs = [
+    'AbstractBuildRuleBuilder.java',
+    'AbstractBuildRuleBuilderParams.java',
+    'AbstractSourcePath.java',
     'AnnotationProcessingData.java',
     'ArtifactCache.java',
     'BinaryBuildRule.java',
@@ -39,15 +42,24 @@
     'BuildDependencies.java',
     'BuildInfo.java',
     'BuildInfoRecorder.java',
+    'BuildRuleBuilder.java',
+    'BuildRuleFactory.java',
+    'BuildRuleFactoryParams.java',
+    'BuildRuleResolver.java',
+    'BuildRuleParams.java',
     'BuildRule.java',
     'BuildRuleSuccess.java',
     'BuildRuleType.java',
+    'BuildTargetSourcePath.java',
     'CacheResult.java',
+    'DefaultBuildRuleBuilderParams.java',
     'DependencyGraph.java',
+    'FileSourcePath.java',
     'InputRule.java',
     'JavaPackageFinder.java',
     'OnDiskBuildInfo.java',
     'RuleKey.java',
+    'RuleKeyBuilderFactory.java',
     'Sha1HashCode.java',
     'SourcePath.java',
     'SourceRoot.java',
@@ -61,6 +73,7 @@
     '//src/com/facebook/buck/event:event',
     '//src/com/facebook/buck/graph:graph',
     '//src/com/facebook/buck/model:model',
+    '//src/com/facebook/buck/parser:rule_pattern',
     '//src/com/facebook/buck/step:step',
     '//src/com/facebook/buck/util:constants',
     '//src/com/facebook/buck/util:exceptions',
@@ -78,28 +91,24 @@
   srcs = [
     'AbiRule.java',
     'AbstractBuildable.java',
-    'AbstractBuildRuleBuilder.java',
-    'AbstractBuildRuleBuilderParams.java',
     'AbstractBuildRule.java',
+    'AbstractBuildRuleFactory.java',
+    'AbstractTestRuleFactory.java',
     'AbstractCachingBuildRule.java',
     'AbstractDependencyVisitor.java',
-    'AbstractSourcePath.java',
     'ArtifactCacheConnectEvent.java',
     'ArtifactCacheEvent.java',
     'Builder.java',
     'BuildEvent.java',
-    'BuildRuleBuilder.java',
     'BuildRuleEvent.java',
     'BuildRuleParams.java',
     'BuildRuleResolver.java',
     'BuildRuleStatus.java',
-    'BuildTargetSourcePath.java',
     'CassandraArtifactCache.java',
     'DefaultBuildableContext.java',
     'DefaultBuildRuleBuilderParams.java',
     'DirArtifactCache.java',
     'DoNotUseAbstractBuildable.java',
-    'FileSourcePath.java',
     'IndividualTestEvent.java',
     'InstallableBuildRule.java',
     'LabelsAttributeBuilder.java',
@@ -109,7 +118,6 @@
     'ProjectConfigRule.java',
     'RecordArtifactsInDirectoryStep.java',
     'ResourcesAttributeBuilder.java',
-    'RuleKeyBuilderFactory.java',
     'SourcePaths.java',
     'SrcsAttributeBuilder.java',
     'TestRule.java',
@@ -128,6 +136,7 @@
     '//src/com/facebook/buck/event:event',
     '//src/com/facebook/buck/graph:graph',
     '//src/com/facebook/buck/model:model',
+    '//src/com/facebook/buck/parser:rule_pattern',
     '//src/com/facebook/buck/shell:steps',
     '//src/com/facebook/buck/step:step',
     '//src/com/facebook/buck/step/fs:fs',
diff --git a/src/com/facebook/buck/rules/BuildRule.java b/src/com/facebook/buck/rules/BuildRule.java
index 6cb0883..57e0c69 100644
--- a/src/com/facebook/buck/rules/BuildRule.java
+++ b/src/com/facebook/buck/rules/BuildRule.java
@@ -33,8 +33,6 @@
     setterVisibility = JsonAutoDetect.Visibility.NONE)
 public interface BuildRule extends Comparable<BuildRule> {
 
-  public static final String VISIBILITY_PUBLIC = "PUBLIC";
-
   public BuildTarget getBuildTarget();
 
   @JsonProperty("name")
diff --git a/src/com/facebook/buck/parser/BuildRuleFactory.java b/src/com/facebook/buck/rules/BuildRuleFactory.java
similarity index 90%
rename from src/com/facebook/buck/parser/BuildRuleFactory.java
rename to src/com/facebook/buck/rules/BuildRuleFactory.java
index d1cb874..98e9fc8 100644
--- a/src/com/facebook/buck/parser/BuildRuleFactory.java
+++ b/src/com/facebook/buck/rules/BuildRuleFactory.java
@@ -14,9 +14,9 @@
  * under the License.
  */
 
-package com.facebook.buck.parser;
+package com.facebook.buck.rules;
 
-import com.facebook.buck.rules.BuildRuleBuilder;
+import com.facebook.buck.parser.NoSuchBuildTargetException;
 import com.google.common.annotations.Beta;
 
 /** Implementations should be stateless. */
diff --git a/src/com/facebook/buck/parser/BuildRuleFactoryParams.java b/src/com/facebook/buck/rules/BuildRuleFactoryParams.java
similarity index 96%
rename from src/com/facebook/buck/parser/BuildRuleFactoryParams.java
rename to src/com/facebook/buck/rules/BuildRuleFactoryParams.java
index 74dfd18..3deceb7 100644
--- a/src/com/facebook/buck/parser/BuildRuleFactoryParams.java
+++ b/src/com/facebook/buck/rules/BuildRuleFactoryParams.java
@@ -14,17 +14,14 @@
  * under the License.
  */
 
-package com.facebook.buck.parser;
+package com.facebook.buck.rules;
 
 import com.facebook.buck.model.BuildFileTree;
 import com.facebook.buck.model.BuildTarget;
-import com.facebook.buck.rules.AbstractBuildRuleBuilder;
-import com.facebook.buck.rules.AbstractBuildRuleBuilderParams;
-import com.facebook.buck.rules.BuildTargetSourcePath;
-import com.facebook.buck.rules.DefaultBuildRuleBuilderParams;
-import com.facebook.buck.rules.FileSourcePath;
-import com.facebook.buck.rules.RuleKeyBuilderFactory;
-import com.facebook.buck.rules.SourcePath;
+import com.facebook.buck.parser.BuildTargetParser;
+import com.facebook.buck.parser.BuildTargetPatternParser;
+import com.facebook.buck.parser.NoSuchBuildTargetException;
+import com.facebook.buck.parser.ParseContext;
 import com.facebook.buck.util.BuckConstant;
 import com.facebook.buck.util.HumanReadableException;
 import com.facebook.buck.util.ProjectFilesystem;
diff --git a/src/com/facebook/buck/rules/KnownBuildRuleTypes.java b/src/com/facebook/buck/rules/KnownBuildRuleTypes.java
index 045a382..053cdc0 100644
--- a/src/com/facebook/buck/rules/KnownBuildRuleTypes.java
+++ b/src/com/facebook/buck/rules/KnownBuildRuleTypes.java
@@ -32,7 +32,6 @@
 import com.facebook.buck.java.KeystoreBuildRuleFactory;
 import com.facebook.buck.java.PrebuiltJarBuildRuleFactory;
 import com.facebook.buck.parcelable.GenParcelableBuildRuleFactory;
-import com.facebook.buck.parser.BuildRuleFactory;
 import com.facebook.buck.parser.ProjectConfigRuleFactory;
 import com.facebook.buck.python.PythonBinaryBuildRuleFactory;
 import com.facebook.buck.python.PythonLibraryBuildRuleFactory;
diff --git a/src/com/facebook/buck/shell/BUCK b/src/com/facebook/buck/shell/BUCK
index 8cfef52..b273d45 100644
--- a/src/com/facebook/buck/shell/BUCK
+++ b/src/com/facebook/buck/shell/BUCK
@@ -17,7 +17,7 @@
     '//lib:jackson-databind',
     '//lib:jsr305',
     '//src/com/facebook/buck/model:model',
-    '//src/com/facebook/buck/parser:support',
+    '//src/com/facebook/buck/parser:rule_pattern',
     '//src/com/facebook/buck/rules:build_rule',
     '//src/com/facebook/buck/rules:rules',
     '//src/com/facebook/buck/test:test',
diff --git a/src/com/facebook/buck/shell/ExportFileBuildRuleFactory.java b/src/com/facebook/buck/shell/ExportFileBuildRuleFactory.java
index 5d0a32b..9b36a5e 100644
--- a/src/com/facebook/buck/shell/ExportFileBuildRuleFactory.java
+++ b/src/com/facebook/buck/shell/ExportFileBuildRuleFactory.java
@@ -16,8 +16,8 @@
 
 package com.facebook.buck.shell;
 
-import com.facebook.buck.parser.AbstractBuildRuleFactory;
-import com.facebook.buck.parser.BuildRuleFactoryParams;
+import com.facebook.buck.rules.AbstractBuildRuleFactory;
+import com.facebook.buck.rules.BuildRuleFactoryParams;
 import com.facebook.buck.parser.NoSuchBuildTargetException;
 import com.facebook.buck.rules.AbstractBuildRuleBuilderParams;
 import com.google.common.base.Optional;
diff --git a/src/com/facebook/buck/shell/GenruleBuildRuleFactory.java b/src/com/facebook/buck/shell/GenruleBuildRuleFactory.java
index 59601be..65e76c7 100644
--- a/src/com/facebook/buck/shell/GenruleBuildRuleFactory.java
+++ b/src/com/facebook/buck/shell/GenruleBuildRuleFactory.java
@@ -16,8 +16,8 @@
 
 package com.facebook.buck.shell;
 
-import com.facebook.buck.parser.AbstractBuildRuleFactory;
-import com.facebook.buck.parser.BuildRuleFactoryParams;
+import com.facebook.buck.rules.AbstractBuildRuleFactory;
+import com.facebook.buck.rules.BuildRuleFactoryParams;
 import com.facebook.buck.rules.AbstractBuildRuleBuilderParams;
 import com.google.common.base.Optional;
 
diff --git a/src/com/facebook/buck/shell/ShBinaryBuildRuleFactory.java b/src/com/facebook/buck/shell/ShBinaryBuildRuleFactory.java
index 38bd513..c1fe0ec 100644
--- a/src/com/facebook/buck/shell/ShBinaryBuildRuleFactory.java
+++ b/src/com/facebook/buck/shell/ShBinaryBuildRuleFactory.java
@@ -16,8 +16,8 @@
 
 package com.facebook.buck.shell;
 
-import com.facebook.buck.parser.AbstractBuildRuleFactory;
-import com.facebook.buck.parser.BuildRuleFactoryParams;
+import com.facebook.buck.rules.AbstractBuildRuleFactory;
+import com.facebook.buck.rules.BuildRuleFactoryParams;
 import com.facebook.buck.parser.NoSuchBuildTargetException;
 import com.facebook.buck.rules.AbstractBuildRuleBuilderParams;
 import com.facebook.buck.shell.ShBinaryRule.Builder;
diff --git a/src/com/facebook/buck/shell/ShTestBuildRuleFactory.java b/src/com/facebook/buck/shell/ShTestBuildRuleFactory.java
index 11f0e7c..fb480e4 100644
--- a/src/com/facebook/buck/shell/ShTestBuildRuleFactory.java
+++ b/src/com/facebook/buck/shell/ShTestBuildRuleFactory.java
@@ -16,8 +16,8 @@
 
 package com.facebook.buck.shell;
 
-import com.facebook.buck.parser.AbstractBuildRuleFactory;
-import com.facebook.buck.parser.BuildRuleFactoryParams;
+import com.facebook.buck.rules.AbstractBuildRuleFactory;
+import com.facebook.buck.rules.BuildRuleFactoryParams;
 import com.facebook.buck.parser.NoSuchBuildTargetException;
 import com.facebook.buck.rules.AbstractBuildRuleBuilderParams;
 
diff --git a/test/com/facebook/buck/android/ApkGenruleTest.java b/test/com/facebook/buck/android/ApkGenruleTest.java
index 1544d44..fb3276a 100644
--- a/test/com/facebook/buck/android/ApkGenruleTest.java
+++ b/test/com/facebook/buck/android/ApkGenruleTest.java
@@ -26,10 +26,10 @@
 import com.facebook.buck.model.BuildTarget;
 import com.facebook.buck.model.BuildTargetFactory;
 import com.facebook.buck.model.BuildTargetPattern;
-import com.facebook.buck.parser.BuildRuleFactoryParams;
+import com.facebook.buck.rules.BuildRuleFactoryParams;
 import com.facebook.buck.parser.BuildTargetParser;
 import com.facebook.buck.parser.NoSuchBuildTargetException;
-import com.facebook.buck.parser.NonCheckingBuildRuleFactoryParams;
+import com.facebook.buck.rules.NonCheckingBuildRuleFactoryParams;
 import com.facebook.buck.parser.ParseContext;
 import com.facebook.buck.rules.ArtifactCache;
 import com.facebook.buck.rules.BuildContext;
diff --git a/test/com/facebook/buck/android/BUCK b/test/com/facebook/buck/android/BUCK
index 8d86667..83bdcd4 100644
--- a/test/com/facebook/buck/android/BUCK
+++ b/test/com/facebook/buck/android/BUCK
@@ -18,7 +18,7 @@
     '//src/com/facebook/buck/java:rules',
     '//src/com/facebook/buck/java:support',
     '//src/com/facebook/buck/model:model',
-    '//src/com/facebook/buck/parser:support',
+    '//src/com/facebook/buck/parser:rule_pattern',
     '//src/com/facebook/buck/rules:build_rule',
     '//src/com/facebook/buck/rules:rules',
     '//src/com/facebook/buck/shell:steps',
@@ -33,7 +33,6 @@
     '//test/com/facebook/buck/java:fakes',
     '//test/com/facebook/buck/event:testutil',
     '//test/com/facebook/buck/model:BuildTargetFactory',
-    '//test/com/facebook/buck/parser:NonCheckingBuildRuleFactoryParams',
     '//test/com/facebook/buck/rules:testutil',
     '//test/com/facebook/buck/step:testutil',
     '//test/com/facebook/buck/testutil:testutil',
diff --git a/test/com/facebook/buck/android/RobolectricTestBuildRuleFactoryTest.java b/test/com/facebook/buck/android/RobolectricTestBuildRuleFactoryTest.java
index 5f41a08..c0dc348 100644
--- a/test/com/facebook/buck/android/RobolectricTestBuildRuleFactoryTest.java
+++ b/test/com/facebook/buck/android/RobolectricTestBuildRuleFactoryTest.java
@@ -22,7 +22,7 @@
 import com.facebook.buck.model.BuildTarget;
 import com.facebook.buck.model.BuildTargetFactory;
 import com.facebook.buck.model.BuildTargetPattern;
-import com.facebook.buck.parser.BuildRuleFactoryParams;
+import com.facebook.buck.rules.BuildRuleFactoryParams;
 import com.facebook.buck.parser.BuildTargetParser;
 import com.facebook.buck.parser.NoSuchBuildTargetException;
 import com.facebook.buck.parser.ParseContext;
diff --git a/test/com/facebook/buck/cli/BUCK b/test/com/facebook/buck/cli/BUCK
index be5721d..4c4622c 100644
--- a/test/com/facebook/buck/cli/BUCK
+++ b/test/com/facebook/buck/cli/BUCK
@@ -15,7 +15,7 @@
     '//src/com/facebook/buck/cli:cli',
     '//src/com/facebook/buck/event:event',
     '//src/com/facebook/buck/model:model',
-    '//src/com/facebook/buck/parser:support',
+    '//src/com/facebook/buck/parser:rule_pattern',
     '//src/com/facebook/buck/rules:build_rule',
     '//src/com/facebook/buck/rules:rules',
     '//src/com/facebook/buck/util:io',
@@ -81,7 +81,7 @@
     '//src/com/facebook/buck/model:model',
     '//src/com/facebook/buck/parser:parser',
     '//src/com/facebook/buck/parser:project',
-    '//src/com/facebook/buck/parser:support',
+    '//src/com/facebook/buck/parser:rule_pattern',
     '//src/com/facebook/buck/rules:build_rule',
     '//src/com/facebook/buck/rules:rules',
     '//src/com/facebook/buck/rules:types',
diff --git a/test/com/facebook/buck/model/BUCK b/test/com/facebook/buck/model/BUCK
index 10306a1..6215e89 100644
--- a/test/com/facebook/buck/model/BUCK
+++ b/test/com/facebook/buck/model/BUCK
@@ -5,7 +5,6 @@
     ':BuildTargetFactory',
     '//src/com/facebook/buck/java:rules',
     '//src/com/facebook/buck/model:model',
-    '//src/com/facebook/buck/parser:support',
     '//src/com/facebook/buck/parser:parser',
     '//src/com/facebook/buck/rules:build_rule',
     '//src/com/facebook/buck/rules:rules',
diff --git a/test/com/facebook/buck/parser/BUCK b/test/com/facebook/buck/parser/BUCK
index e73b2fd..62eabba 100644
--- a/test/com/facebook/buck/parser/BUCK
+++ b/test/com/facebook/buck/parser/BUCK
@@ -3,10 +3,9 @@
   srcs = glob(['*Test.java']),
   source_under_test = [
     '//src/com/facebook/buck/parser:parser',
-    '//src/com/facebook/buck/parser:support',
+    '//src/com/facebook/buck/parser:rule_pattern',
   ],
   deps = [
-    ':NonCheckingBuildRuleFactoryParams',
     '//lib:easymock',
     '//lib:guava',
     '//lib:junit',
@@ -15,8 +14,8 @@
     '//src/com/facebook/buck/java:rules',
     '//src/com/facebook/buck/json:json',
     '//src/com/facebook/buck/model:model',
-    '//src/com/facebook/buck/parser:support',
     '//src/com/facebook/buck/parser:parser',
+    '//src/com/facebook/buck/parser:rule_pattern',
     '//src/com/facebook/buck/parser:project',
     '//src/com/facebook/buck/rules:build_rule',
     '//src/com/facebook/buck/rules:rules',
@@ -53,22 +52,3 @@
   ],
 )
 
-java_library(
-  name = 'NonCheckingBuildRuleFactoryParams',
-  srcs = [
-    'NonCheckingBuildRuleFactoryParams.java',
-  ],
-  deps = [
-    '//lib:guava',
-    '//src/com/facebook/buck/model:model',
-    '//src/com/facebook/buck/parser:support',
-    '//src/com/facebook/buck/rules:rules',
-    '//src/com/facebook/buck/util:io',
-    '//src/com/facebook/buck/util:util',
-    '//test/com/facebook/buck/rules:testutil',
-    '//test/com/facebook/buck/testutil:testutil',
-  ],
-  visibility = [
-    '//test/...',
-  ],
-)
diff --git a/test/com/facebook/buck/parser/BuildRuleFactoryParamsTest.java b/test/com/facebook/buck/parser/BuildRuleFactoryParamsTest.java
index 1245df4..0252909 100644
--- a/test/com/facebook/buck/parser/BuildRuleFactoryParamsTest.java
+++ b/test/com/facebook/buck/parser/BuildRuleFactoryParamsTest.java
@@ -29,6 +29,7 @@
 import com.facebook.buck.model.BuildTarget;
 import com.facebook.buck.model.BuildTargetFactory;
 import com.facebook.buck.rules.AbstractBuildRuleBuilder;
+import com.facebook.buck.rules.BuildRuleFactoryParams;
 import com.facebook.buck.rules.BuildTargetSourcePath;
 import com.facebook.buck.rules.FakeRuleKeyBuilderFactory;
 import com.facebook.buck.rules.FileSourcePath;
diff --git a/test/com/facebook/buck/parser/AbstractBuildRuleFactoryTest.java b/test/com/facebook/buck/rules/AbstractBuildRuleFactoryTest.java
similarity index 86%
rename from test/com/facebook/buck/parser/AbstractBuildRuleFactoryTest.java
rename to test/com/facebook/buck/rules/AbstractBuildRuleFactoryTest.java
index 103568e..a11146b 100644
--- a/test/com/facebook/buck/parser/AbstractBuildRuleFactoryTest.java
+++ b/test/com/facebook/buck/rules/AbstractBuildRuleFactoryTest.java
@@ -13,14 +13,15 @@
  * License for the specific language governing permissions and limitations
  * under the License.
  */
-package com.facebook.buck.parser;
+package com.facebook.buck.rules;
 
+import static com.facebook.buck.parser.BuildTargetPatternParser.VISIBILITY_PUBLIC;
 import static org.junit.Assert.assertEquals;
 
 import com.facebook.buck.model.BuildTargetFactory;
 import com.facebook.buck.model.BuildTargetPattern;
 import com.facebook.buck.model.SubdirectoryBuildTargetPattern;
-import com.facebook.buck.rules.BuildRule;
+import com.facebook.buck.parser.NoSuchBuildTargetException;
 import com.google.common.collect.ImmutableList;
 import com.google.common.collect.ImmutableMap;
 import com.google.common.collect.ImmutableSet;
@@ -34,7 +35,7 @@
   @Test
   public void testGetVisibilityTargets() throws NoSuchBuildTargetException {
     Map<String, ?> config = ImmutableMap.of(
-        "visibility" , ImmutableList.of(BuildRule.VISIBILITY_PUBLIC, "//...", "//com/facebook/...")
+        "visibility" , ImmutableList.of(VISIBILITY_PUBLIC, "//...", "//com/facebook/...")
     );
     BuildRuleFactoryParams params = NonCheckingBuildRuleFactoryParams.
         createNonCheckingBuildRuleFactoryParams(
diff --git a/test/com/facebook/buck/rules/BUCK b/test/com/facebook/buck/rules/BUCK
index 87af8dc..527b418 100644
--- a/test/com/facebook/buck/rules/BUCK
+++ b/test/com/facebook/buck/rules/BUCK
@@ -9,12 +9,14 @@
     'FakeInputRule.java',
     'FakeRuleKeyBuilderFactory.java',
     'FakeTestRule.java',
+    'NonCheckingBuildRuleFactoryParams.java',
     'RetainOrderComparator.java',
   ],
   deps = [
     '//lib:guava',
     '//lib:jsr305',
     '//src/com/facebook/buck/model:model',
+    '//src/com/facebook/buck/parser:rule_pattern',
     '//src/com/facebook/buck/rules:build_rule',
     '//src/com/facebook/buck/rules:rules',
     '//src/com/facebook/buck/test:test',
@@ -50,6 +52,7 @@
     '//src/com/facebook/buck/java:rules',
     '//src/com/facebook/buck/model:model',
     '//src/com/facebook/buck/parser:parser',
+    '//src/com/facebook/buck/parser:rule_pattern',
     '//src/com/facebook/buck/rules:build_rule',
     '//src/com/facebook/buck/rules:rules',
     '//src/com/facebook/buck/test:test',
diff --git a/test/com/facebook/buck/parser/NonCheckingBuildRuleFactoryParams.java b/test/com/facebook/buck/rules/NonCheckingBuildRuleFactoryParams.java
similarity index 95%
rename from test/com/facebook/buck/parser/NonCheckingBuildRuleFactoryParams.java
rename to test/com/facebook/buck/rules/NonCheckingBuildRuleFactoryParams.java
index 623af34..ae22f29 100644
--- a/test/com/facebook/buck/parser/NonCheckingBuildRuleFactoryParams.java
+++ b/test/com/facebook/buck/rules/NonCheckingBuildRuleFactoryParams.java
@@ -14,11 +14,11 @@
  * under the License.
  */
 
-package com.facebook.buck.parser;
+package com.facebook.buck.rules;
 
 import com.facebook.buck.model.BuildFileTree;
 import com.facebook.buck.model.BuildTarget;
-import com.facebook.buck.rules.FakeRuleKeyBuilderFactory;
+import com.facebook.buck.parser.BuildTargetParser;
 import com.facebook.buck.util.Paths;
 import com.facebook.buck.util.ProjectFilesystem;
 import com.google.common.collect.ImmutableSet;
diff --git a/test/com/facebook/buck/shell/BUCK b/test/com/facebook/buck/shell/BUCK
index b04ed4f..89a65d9 100644
--- a/test/com/facebook/buck/shell/BUCK
+++ b/test/com/facebook/buck/shell/BUCK
@@ -19,7 +19,7 @@
     '//src/com/facebook/buck/java:rules',
     '//src/com/facebook/buck/java:support',
     '//src/com/facebook/buck/model:model',
-    '//src/com/facebook/buck/parser:support',
+    '//src/com/facebook/buck/parser:rule_pattern',
     '//src/com/facebook/buck/rules:build_rule',
     '//src/com/facebook/buck/rules:rules',
     '//src/com/facebook/buck/shell:rules',
@@ -37,6 +37,5 @@
     '//test/com/facebook/buck/testutil:testutil',
     '//test/com/facebook/buck/testutil/integration:integration',
     '//test/com/facebook/buck/model:BuildTargetFactory',
-    '//test/com/facebook/buck/parser:NonCheckingBuildRuleFactoryParams',
   ],
 )
diff --git a/test/com/facebook/buck/shell/GenruleTest.java b/test/com/facebook/buck/shell/GenruleTest.java
index ff5b34e..9228d55 100644
--- a/test/com/facebook/buck/shell/GenruleTest.java
+++ b/test/com/facebook/buck/shell/GenruleTest.java
@@ -28,10 +28,10 @@
 import com.facebook.buck.model.BuildTarget;
 import com.facebook.buck.model.BuildTargetFactory;
 import com.facebook.buck.model.BuildTargetPattern;
-import com.facebook.buck.parser.BuildRuleFactoryParams;
+import com.facebook.buck.rules.BuildRuleFactoryParams;
 import com.facebook.buck.parser.BuildTargetParser;
 import com.facebook.buck.parser.NoSuchBuildTargetException;
-import com.facebook.buck.parser.NonCheckingBuildRuleFactoryParams;
+import com.facebook.buck.rules.NonCheckingBuildRuleFactoryParams;
 import com.facebook.buck.parser.ParseContext;
 import com.facebook.buck.rules.AbstractBuildRuleBuilderParams;
 import com.facebook.buck.rules.BuildContext;