Lucene.Net.Tests.Support.TestApiConsistency: Added support for filtering public fields via regex
diff --git a/src/Lucene.Net.TestFramework/Support/ApiScanTestBase.cs b/src/Lucene.Net.TestFramework/Support/ApiScanTestBase.cs
index 1a48b30..2946de2 100644
--- a/src/Lucene.Net.TestFramework/Support/ApiScanTestBase.cs
+++ b/src/Lucene.Net.TestFramework/Support/ApiScanTestBase.cs
@@ -138,10 +138,15 @@
                 "Private field names should be camelCase.");
         }
 
-        //[Test, LuceneNetSpecific]
         public virtual void TestPublicFields(Type typeFromTargetAssembly)
         {
-            var names = GetInvalidPublicFields(typeFromTargetAssembly.Assembly);
+            TestPublicFields(typeFromTargetAssembly, null);
+        }
+
+        //[Test, LuceneNetSpecific]
+        public virtual void TestPublicFields(Type typeFromTargetAssembly, string exceptionRegex)
+        {
+            var names = GetInvalidPublicFields(typeFromTargetAssembly.Assembly, exceptionRegex);
 
             //if (VERBOSE)
             //{
@@ -433,11 +438,6 @@
                     if ((field.IsPrivate || field.IsAssembly) && !PrivateFieldName.IsMatch(field.Name) && field.DeclaringType.Equals(c.UnderlyingSystemType))
                     {
                         var name = string.Concat(c.FullName, ".", field.Name);
-                        //bool hasExceptions = !string.IsNullOrWhiteSpace(exceptionRegex);
-                        //if (!hasExceptions || (hasExceptions && !Regex.IsMatch(name, exceptionRegex)))
-                        //{
-                        //    result.Add(name);
-                        //}
                         if (!IsException(name, exceptionRegex))
                         {
                             result.Add(name);
@@ -495,7 +495,7 @@
         /// </summary>
         /// <param name="assembly"></param>
         /// <returns></returns>
-        private static IEnumerable<string> GetInvalidPublicFields(Assembly assembly)
+        private static IEnumerable<string> GetInvalidPublicFields(Assembly assembly, string exceptionRegex)
         {
             var result = new List<string>();
 
@@ -529,7 +529,11 @@
 
                     if (field.IsPublic && field.DeclaringType.Equals(c.UnderlyingSystemType))
                     {
-                        result.Add(string.Concat(c.FullName, ".", field.Name));
+                        var name = string.Concat(c.FullName, ".", field.Name);
+                        if (!IsException(name, exceptionRegex))
+                        {
+                            result.Add(name);
+                        }
                     }
                 }
             }
diff --git a/src/Lucene.Net.Tests/Support/TestApiConsistency.cs b/src/Lucene.Net.Tests/Support/TestApiConsistency.cs
index 2a96e22..00728a9 100644
--- a/src/Lucene.Net.Tests/Support/TestApiConsistency.cs
+++ b/src/Lucene.Net.Tests/Support/TestApiConsistency.cs
@@ -38,14 +38,14 @@
         [TestCase(typeof(Lucene.Net.Analysis.Analyzer))]
         public override void TestPrivateFieldNames(Type typeFromTargetAssembly)
         {
-            base.TestPrivateFieldNames(typeFromTargetAssembly, @"^Lucene\.Net\.Support\.(?:LurchTable|HashUtilities|ConcurrentHashSet|PlatformHelper)");
+            base.TestPrivateFieldNames(typeFromTargetAssembly, @"^Lucene\.Net\.Support\.(?:ConcurrentHashSet|PlatformHelper)");
         }
 
         [Test, LuceneNetSpecific]
         [TestCase(typeof(Lucene.Net.Analysis.Analyzer))]
         public override void TestPublicFields(Type typeFromTargetAssembly)
         {
-            base.TestPublicFields(typeFromTargetAssembly);
+            base.TestPublicFields(typeFromTargetAssembly, @"^Lucene\.Net\.Util\.(?:LightWeight|Disposable)ThreadLocal`1\+(?:LocalState|CurrentThreadState)");
         }
 
         [Test, LuceneNetSpecific]