Use AccessController.doPrivileged
diff --git a/lucene/core/src/java/org/apache/lucene/search/IndexSearcher.java b/lucene/core/src/java/org/apache/lucene/search/IndexSearcher.java
index 5157b4d..b4e9108 100644
--- a/lucene/core/src/java/org/apache/lucene/search/IndexSearcher.java
+++ b/lucene/core/src/java/org/apache/lucene/search/IndexSearcher.java
@@ -733,7 +733,9 @@
         rewrittenQuery = query.rewrite(this)) {
       query = rewrittenQuery;
     }
-    query.visit(getNumClausesCheckVisitor());
+    if (maxClauseCount > -1) {
+      query.visit(getNumClausesCheckVisitor());
+    }
     return query;
   }
 
diff --git a/lucene/core/src/java/org/apache/lucene/search/QueryVisitor.java b/lucene/core/src/java/org/apache/lucene/search/QueryVisitor.java
index 644e21a..4b362ed 100644
--- a/lucene/core/src/java/org/apache/lucene/search/QueryVisitor.java
+++ b/lucene/core/src/java/org/apache/lucene/search/QueryVisitor.java
@@ -99,5 +99,11 @@
   }
 
   /** A QueryVisitor implementation that does nothing */
-  public static final QueryVisitor EMPTY_VISITOR = new QueryVisitor() {};
+  public static final QueryVisitor EMPTY_VISITOR =
+      new QueryVisitor() {
+        @Override
+        public boolean acceptField(String field) {
+          return false;
+        }
+      };
 }