diff --git a/src/main/java/com/google/devtools/build/lib/analysis/actions/SpawnAction.java b/src/main/java/com/google/devtools/build/lib/analysis/actions/SpawnAction.java
index 6f7dbed..ce0d098 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/actions/SpawnAction.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/actions/SpawnAction.java
@@ -923,7 +923,7 @@
 
     public Builder setMnemonic(String mnemonic) {
       Preconditions.checkArgument(
-          !mnemonic.isEmpty() && CharMatcher.JAVA_LETTER_OR_DIGIT.matchesAllOf(mnemonic),
+          !mnemonic.isEmpty() && CharMatcher.javaLetterOrDigit().matchesAllOf(mnemonic),
           "mnemonic must only contain letters and/or digits, and have non-zero length, was: \"%s\"",
           mnemonic);
       this.mnemonic = mnemonic;
diff --git a/src/main/java/com/google/devtools/build/lib/cmdline/LabelValidator.java b/src/main/java/com/google/devtools/build/lib/cmdline/LabelValidator.java
index 5b0f8c4..52c7e0e 100644
--- a/src/main/java/com/google/devtools/build/lib/cmdline/LabelValidator.java
+++ b/src/main/java/com/google/devtools/build/lib/cmdline/LabelValidator.java
@@ -46,7 +46,7 @@
    * restrictions around surrounding characters; see {@link #validateTargetName(String)}.
    */
   private static final CharMatcher ALWAYS_ALLOWED_TARGET_CHARACTERS =
-      CharMatcher.JAVA_LETTER_OR_DIGIT
+      CharMatcher.javaLetterOrDigit()
           .or(PUNCTUATION_REQUIRING_QUOTING)
           .or(PUNCTUATION_NOT_REQUIRING_QUOTING);
 
@@ -174,7 +174,7 @@
         }
         continue;
       }
-      if (CharMatcher.JAVA_ISO_CONTROL.matches(c)) {
+      if (CharMatcher.javaIsoControl().matches(c)) {
         return "target names may not contain non-printable characters: '" +
                String.format("\\x%02X", (int) c) + "'";
       }
diff --git a/src/main/java/com/google/devtools/build/lib/runtime/InvocationPolicyEnforcer.java b/src/main/java/com/google/devtools/build/lib/runtime/InvocationPolicyEnforcer.java
index a87575d..38d48cc 100644
--- a/src/main/java/com/google/devtools/build/lib/runtime/InvocationPolicyEnforcer.java
+++ b/src/main/java/com/google/devtools/build/lib/runtime/InvocationPolicyEnforcer.java
@@ -92,7 +92,7 @@
       try {
         // First try decoding the policy as a base64 encoded binary proto.
         return InvocationPolicy.parseFrom(
-            BaseEncoding.base64().decode(CharMatcher.WHITESPACE.removeFrom(policy)));
+            BaseEncoding.base64().decode(CharMatcher.whitespace().removeFrom(policy)));
       } catch (IllegalArgumentException e) {
         // If the flag value can't be decoded from base64, try decoding the policy as a text
         // formatted proto.
diff --git a/src/main/java/com/google/devtools/build/lib/syntax/MethodLibrary.java b/src/main/java/com/google/devtools/build/lib/syntax/MethodLibrary.java
index fa36d39..47c8511 100644
--- a/src/main/java/com/google/devtools/build/lib/syntax/MethodLibrary.java
+++ b/src/main/java/com/google/devtools/build/lib/syntax/MethodLibrary.java
@@ -761,7 +761,7 @@
       // From the Python documentation: "uppercase characters may only follow uncased characters
       // and lowercase characters only cased ones".
       char[] data = self.toCharArray();
-      CharMatcher matcher = CharMatcher.ANY;
+      CharMatcher matcher = CharMatcher.any();
       char leftMostCased = ' ';
       for (int pos = data.length - 1; pos >= 0; --pos) {
         char current = data[pos];
@@ -775,7 +775,7 @@
         } else if (UPPER.matches(current)) {
           matcher = CASED.negate();
         } else {
-          matcher = CharMatcher.ANY;
+          matcher = CharMatcher.any();
         }
         // 3. Store character if it is cased.
         if (CASED.matches(current)) {
@@ -812,7 +812,7 @@
   private static final CharMatcher ALPHA = LOWER.or(UPPER);
   private static final CharMatcher ALNUM = ALPHA.or(DIGIT);
   private static final CharMatcher CASED = ALPHA;
-  private static final CharMatcher SPACE = CharMatcher.WHITESPACE;
+  private static final CharMatcher SPACE = CharMatcher.whitespace();
 
   @SkylarkSignature(name = "count", objectType = StringModule.class, returnType = Integer.class,
       doc = "Returns the number of (non-overlapping) occurrences of substring <code>sub</code> in "
diff --git a/src/main/java/com/google/devtools/build/lib/util/ResourceUsage.java b/src/main/java/com/google/devtools/build/lib/util/ResourceUsage.java
index 5ecb67d..0360f3b 100644
--- a/src/main/java/com/google/devtools/build/lib/util/ResourceUsage.java
+++ b/src/main/java/com/google/devtools/build/lib/util/ResourceUsage.java
@@ -45,7 +45,7 @@
       (OperatingSystemMXBean) ManagementFactory.getOperatingSystemMXBean();
 
   private static final MemoryMXBean MEM_BEAN = ManagementFactory.getMemoryMXBean();
-  private static final Splitter WHITESPACE_SPLITTER = Splitter.on(CharMatcher.WHITESPACE);
+  private static final Splitter WHITESPACE_SPLITTER = Splitter.on(CharMatcher.whitespace());
 
   /**
    * Calculates an estimate of the current total CPU usage and the CPU usage of
