diff --git a/Android.bp b/Android.bp
index 27378d4..bc19a6f 100644
--- a/Android.bp
+++ b/Android.bp
@@ -25,6 +25,9 @@
             "-Xep:AndroidFrameworkBinderIdentity:ERROR",
             "-Xep:AndroidFrameworkCompatChange:ERROR",
             "-Xep:AndroidFrameworkUid:ERROR",
+            // NOTE: only enable to generate local patchfiles
+            // "-XepPatchChecks:refaster:frameworks/base/errorprone/refaster/EfficientXml.java.refaster",
+            // "-XepPatchLocation:/tmp/refaster/",
         ],
     },
 }
@@ -913,8 +916,9 @@
         include_dirs: ["external/protobuf/src"],
         type: "full",
     },
+    // Protos have lots of MissingOverride and similar.
     errorprone: {
-        javacflags: ["-Xep:MissingOverride:OFF"], // b/72714520
+        javacflags: ["-XepDisableAllChecks"],
     },
 }
 
diff --git a/errorprone/java/com/google/errorprone/bugpatterns/android/CompatChangeChecker.java b/errorprone/java/com/google/errorprone/bugpatterns/android/CompatChangeChecker.java
index 9c84f50..e759663 100644
--- a/errorprone/java/com/google/errorprone/bugpatterns/android/CompatChangeChecker.java
+++ b/errorprone/java/com/google/errorprone/bugpatterns/android/CompatChangeChecker.java
@@ -18,13 +18,13 @@
 
 import static com.google.errorprone.BugPattern.SeverityLevel.WARNING;
 import static com.google.errorprone.bugpatterns.android.TargetSdkChecker.binaryTreeExact;
-import static com.google.errorprone.matchers.FieldMatchers.anyFieldInClass;
-import static com.google.errorprone.matchers.FieldMatchers.staticField;
 import static com.google.errorprone.matchers.Matchers.allOf;
 import static com.google.errorprone.matchers.Matchers.anyOf;
 import static com.google.errorprone.matchers.Matchers.anything;
 import static com.google.errorprone.matchers.Matchers.kindIs;
 import static com.google.errorprone.matchers.Matchers.not;
+import static com.google.errorprone.matchers.android.FieldMatchers.anyFieldInClass;
+import static com.google.errorprone.matchers.android.FieldMatchers.staticField;
 
 import com.google.auto.service.AutoService;
 import com.google.errorprone.BugPattern;
diff --git a/errorprone/java/com/google/errorprone/bugpatterns/android/PendingIntentMutabilityChecker.java b/errorprone/java/com/google/errorprone/bugpatterns/android/PendingIntentMutabilityChecker.java
index 2561b41..e323a89 100644
--- a/errorprone/java/com/google/errorprone/bugpatterns/android/PendingIntentMutabilityChecker.java
+++ b/errorprone/java/com/google/errorprone/bugpatterns/android/PendingIntentMutabilityChecker.java
@@ -17,12 +17,11 @@
 package com.google.errorprone.bugpatterns.android;
 
 import static com.google.errorprone.BugPattern.SeverityLevel.WARNING;
-import static com.google.errorprone.matchers.FieldMatchers.staticField;
 import static com.google.errorprone.matchers.Matchers.anyOf;
 import static com.google.errorprone.matchers.Matchers.contains;
 import static com.google.errorprone.matchers.Matchers.methodInvocation;
 import static com.google.errorprone.matchers.Matchers.staticMethod;
-
+import static com.google.errorprone.matchers.android.FieldMatchers.staticField;
 
 import com.google.auto.service.AutoService;
 import com.google.errorprone.BugPattern;
diff --git a/errorprone/java/com/google/errorprone/bugpatterns/android/TargetSdkChecker.java b/errorprone/java/com/google/errorprone/bugpatterns/android/TargetSdkChecker.java
index e1ebf42..032ae00 100644
--- a/errorprone/java/com/google/errorprone/bugpatterns/android/TargetSdkChecker.java
+++ b/errorprone/java/com/google/errorprone/bugpatterns/android/TargetSdkChecker.java
@@ -28,8 +28,8 @@
 import com.google.errorprone.bugpatterns.BugChecker;
 import com.google.errorprone.bugpatterns.BugChecker.BinaryTreeMatcher;
 import com.google.errorprone.matchers.Description;
-import com.google.errorprone.matchers.FieldMatchers;
 import com.google.errorprone.matchers.Matcher;
+import com.google.errorprone.matchers.android.FieldMatchers;
 import com.sun.source.tree.BinaryTree;
 import com.sun.source.tree.ExpressionTree;
 import com.sun.source.tree.Tree.Kind;
diff --git a/errorprone/java/com/google/errorprone/matchers/FieldMatchers.java b/errorprone/java/com/google/errorprone/matchers/android/FieldMatchers.java
similarity index 97%
rename from errorprone/java/com/google/errorprone/matchers/FieldMatchers.java
rename to errorprone/java/com/google/errorprone/matchers/android/FieldMatchers.java
index 08969d6..5d56e80 100644
--- a/errorprone/java/com/google/errorprone/matchers/FieldMatchers.java
+++ b/errorprone/java/com/google/errorprone/matchers/android/FieldMatchers.java
@@ -14,9 +14,10 @@
  * limitations under the License.
  */
 
-package com.google.errorprone.matchers;
+package com.google.errorprone.matchers.android;
 
 import com.google.errorprone.VisitorState;
+import com.google.errorprone.matchers.Matcher;
 import com.google.errorprone.util.ASTHelpers;
 import com.sun.source.tree.ExpressionTree;
 import com.sun.source.tree.ImportTree;
diff --git a/errorprone/refaster/EfficientXml.java b/errorprone/refaster/EfficientXml.java
new file mode 100644
index 0000000..bd1ddfc
--- /dev/null
+++ b/errorprone/refaster/EfficientXml.java
@@ -0,0 +1,323 @@
+/*
+ * Copyright (C) 2020 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import android.util.TypedXmlPullParser;
+import android.util.TypedXmlSerializer;
+
+import com.android.internal.util.XmlUtils;
+
+import com.google.errorprone.refaster.annotation.AfterTemplate;
+import com.google.errorprone.refaster.annotation.BeforeTemplate;
+
+/**
+ * Refaster templates that migrate callers to equivalent and more efficient
+ * {@link TypedXmlSerializer} and {@link TypedXmlPullParser} methods.
+ */
+public class EfficientXml {
+    class IntToString {
+        @BeforeTemplate
+        void beforeToString(TypedXmlSerializer out, String n, int v) throws Exception {
+            out.attribute(null, n, Integer.toString(v));
+        }
+
+        @BeforeTemplate
+        void beforeValueOf(TypedXmlSerializer out, String n, int v) throws Exception {
+            out.attribute(null, n, String.valueOf(v));
+        }
+
+        @BeforeTemplate
+        void beforeUtils(TypedXmlSerializer out, String n, int v) throws Exception {
+            XmlUtils.writeIntAttribute(out, n, v);
+        }
+
+        @BeforeTemplate
+        void beforeRadix(TypedXmlSerializer out, String n, int v) throws Exception {
+            out.attribute(null, n, Integer.toString(v, 10));
+        }
+
+        @AfterTemplate
+        void after(TypedXmlSerializer out, String n, int v) throws Exception {
+            out.attributeInt(null, n, v);
+        }
+    }
+
+    class IntToStringHex {
+        @BeforeTemplate
+        void beforeToHexString(TypedXmlSerializer out, String n, int v) throws Exception {
+            out.attribute(null, n, Integer.toHexString(v));
+        }
+
+        @BeforeTemplate
+        void beforeRadix(TypedXmlSerializer out, String n, int v) throws Exception {
+            out.attribute(null, n, Integer.toString(v, 16));
+        }
+
+        @AfterTemplate
+        void after(TypedXmlSerializer out, String n, int v) throws Exception {
+            out.attributeIntHex(null, n, v);
+        }
+    }
+
+    class IntFromString {
+        @BeforeTemplate
+        int beforeParse(TypedXmlPullParser in, String n) throws Exception {
+            return Integer.parseInt(in.getAttributeValue(null, n));
+        }
+
+        @BeforeTemplate
+        int beforeUtils(TypedXmlPullParser in, String n) throws Exception {
+            return XmlUtils.readIntAttribute(in, n);
+        }
+
+        @BeforeTemplate
+        int beforeRadix(TypedXmlPullParser in, String n) throws Exception {
+            return Integer.parseInt(in.getAttributeValue(null, n), 10);
+        }
+
+        @AfterTemplate
+        int after(TypedXmlPullParser in, String n) throws Exception {
+            return in.getAttributeInt(null, n);
+        }
+    }
+
+    class IntFromStringDefault {
+        @BeforeTemplate
+        int before(TypedXmlPullParser in, String n, int d) throws Exception {
+            return XmlUtils.readIntAttribute(in, n, d);
+        }
+
+        @AfterTemplate
+        int after(TypedXmlPullParser in, String n, int d) throws Exception {
+            return in.getAttributeInt(null, n, d);
+        }
+    }
+
+    class IntFromStringHex {
+        @BeforeTemplate
+        int beforeParse(TypedXmlPullParser in, String n) throws Exception {
+            return Integer.parseInt(in.getAttributeValue(null, n), 16);
+        }
+
+        @AfterTemplate
+        int after(TypedXmlPullParser in, String n) throws Exception {
+            return in.getAttributeIntHex(null, n);
+        }
+    }
+
+    class LongToString {
+        @BeforeTemplate
+        void beforeToString(TypedXmlSerializer out, String n, long v) throws Exception {
+            out.attribute(null, n, Long.toString(v));
+        }
+
+        @BeforeTemplate
+        void beforeValueOf(TypedXmlSerializer out, String n, long v) throws Exception {
+            out.attribute(null, n, String.valueOf(v));
+        }
+
+        @BeforeTemplate
+        void beforeUtils(TypedXmlSerializer out, String n, long v) throws Exception {
+            XmlUtils.writeLongAttribute(out, n, v);
+        }
+
+        @BeforeTemplate
+        void beforeRadix(TypedXmlSerializer out, String n, long v) throws Exception {
+            out.attribute(null, n, Long.toString(v, 10));
+        }
+
+        @AfterTemplate
+        void after(TypedXmlSerializer out, String n, long v) throws Exception {
+            out.attributeLong(null, n, v);
+        }
+    }
+
+    class LongToStringHex {
+        @BeforeTemplate
+        void beforeToHexString(TypedXmlSerializer out, String n, long v) throws Exception {
+            out.attribute(null, n, Long.toHexString(v));
+        }
+
+        @BeforeTemplate
+        void beforeRadix(TypedXmlSerializer out, String n, long v) throws Exception {
+            out.attribute(null, n, Long.toString(v, 16));
+        }
+
+        @AfterTemplate
+        void after(TypedXmlSerializer out, String n, long v) throws Exception {
+            out.attributeLongHex(null, n, v);
+        }
+    }
+
+    class LongFromString {
+        @BeforeTemplate
+        long beforeParse(TypedXmlPullParser in, String n) throws Exception {
+            return Long.parseLong(in.getAttributeValue(null, n));
+        }
+
+        @BeforeTemplate
+        long beforeUtils(TypedXmlPullParser in, String n) throws Exception {
+            return XmlUtils.readLongAttribute(in, n);
+        }
+
+        @BeforeTemplate
+        long beforeRadix(TypedXmlPullParser in, String n) throws Exception {
+            return Long.parseLong(in.getAttributeValue(null, n), 10);
+        }
+
+        @AfterTemplate
+        long after(TypedXmlPullParser in, String n) throws Exception {
+            return in.getAttributeLong(null, n);
+        }
+    }
+
+    class LongFromStringDefault {
+        @BeforeTemplate
+        long before(TypedXmlPullParser in, String n, long d) throws Exception {
+            return XmlUtils.readLongAttribute(in, n, d);
+        }
+
+        @AfterTemplate
+        long after(TypedXmlPullParser in, String n, long d) throws Exception {
+            return in.getAttributeLong(null, n, d);
+        }
+    }
+
+    class LongFromStringHex {
+        @BeforeTemplate
+        long beforeParse(TypedXmlPullParser in, String n) throws Exception {
+            return Long.parseLong(in.getAttributeValue(null, n), 16);
+        }
+
+        @AfterTemplate
+        long after(TypedXmlPullParser in, String n) throws Exception {
+            return in.getAttributeLongHex(null, n);
+        }
+    }
+
+    class FloatToString {
+        @BeforeTemplate
+        void beforeToString(TypedXmlSerializer out, String n, float v) throws Exception {
+            out.attribute(null, n, Float.toString(v));
+        }
+
+        @BeforeTemplate
+        void beforeValueOf(TypedXmlSerializer out, String n, float v) throws Exception {
+            out.attribute(null, n, String.valueOf(v));
+        }
+
+        @BeforeTemplate
+        void beforeUtils(TypedXmlSerializer out, String n, float v) throws Exception {
+            XmlUtils.writeFloatAttribute(out, n, v);
+        }
+
+        @AfterTemplate
+        void after(TypedXmlSerializer out, String n, float v) throws Exception {
+            out.attributeFloat(null, n, v);
+        }
+    }
+
+    class FloatFromString {
+        @BeforeTemplate
+        float beforeParse(TypedXmlPullParser in, String n) throws Exception {
+            return Float.parseFloat(in.getAttributeValue(null, n));
+        }
+
+        @BeforeTemplate
+        float beforeUtils(TypedXmlPullParser in, String n) throws Exception {
+            return XmlUtils.readFloatAttribute(in, n);
+        }
+
+        @AfterTemplate
+        float after(TypedXmlPullParser in, String n) throws Exception {
+            return in.getAttributeFloat(null, n);
+        }
+    }
+
+    class DoubleToString {
+        @BeforeTemplate
+        void beforeToString(TypedXmlSerializer out, String n, double v) throws Exception {
+            out.attribute(null, n, Double.toString(v));
+        }
+
+        @BeforeTemplate
+        void beforeValueOf(TypedXmlSerializer out, String n, double v) throws Exception {
+            out.attribute(null, n, String.valueOf(v));
+        }
+
+        @AfterTemplate
+        void after(TypedXmlSerializer out, String n, double v) throws Exception {
+            out.attributeDouble(null, n, v);
+        }
+    }
+
+    class DoubleFromString {
+        @BeforeTemplate
+        double beforeParse(TypedXmlPullParser in, String n) throws Exception {
+            return Double.parseDouble(in.getAttributeValue(null, n));
+        }
+
+        @AfterTemplate
+        double after(TypedXmlPullParser in, String n) throws Exception {
+            return in.getAttributeDouble(null, n);
+        }
+    }
+
+    class BooleanToString {
+        @BeforeTemplate
+        void beforeToString(TypedXmlSerializer out, String n, boolean v) throws Exception {
+            out.attribute(null, n, Boolean.toString(v));
+        }
+
+        @BeforeTemplate
+        void beforeValueOf(TypedXmlSerializer out, String n, boolean v) throws Exception {
+            out.attribute(null, n, String.valueOf(v));
+        }
+
+        @AfterTemplate
+        void after(TypedXmlSerializer out, String n, boolean v) throws Exception {
+            out.attributeBoolean(null, n, v);
+        }
+    }
+
+    class BooleanFromString {
+        @BeforeTemplate
+        boolean beforeParse(TypedXmlPullParser in, String n) throws Exception {
+            return Boolean.parseBoolean(in.getAttributeValue(null, n));
+        }
+
+        @BeforeTemplate
+        boolean beforeUtils(TypedXmlPullParser in, String n) throws Exception {
+            return XmlUtils.readBooleanAttribute(in, n);
+        }
+
+        @AfterTemplate
+        boolean after(TypedXmlPullParser in, String n) throws Exception {
+            return in.getAttributeBoolean(null, n, false);
+        }
+    }
+
+    class BooleanFromStringDefault {
+        @BeforeTemplate
+        boolean before(TypedXmlPullParser in, String n, boolean d) throws Exception {
+            return XmlUtils.readBooleanAttribute(in, n, d);
+        }
+
+        @AfterTemplate
+        boolean after(TypedXmlPullParser in, String n, boolean d) throws Exception {
+            return in.getAttributeBoolean(null, n, d);
+        }
+    }
+}
diff --git a/errorprone/refaster/EfficientXml.java.refaster b/errorprone/refaster/EfficientXml.java.refaster
new file mode 100644
index 0000000..f2974ff
--- /dev/null
+++ b/errorprone/refaster/EfficientXml.java.refaster
Binary files differ
diff --git a/errorprone/refaster/refaster.sh b/errorprone/refaster/refaster.sh
new file mode 100755
index 0000000..67dc3e4
--- /dev/null
+++ b/errorprone/refaster/refaster.sh
@@ -0,0 +1,11 @@
+
+paths=(
+    $ANDROID_BUILD_TOP/out/soong/.intermediates/frameworks/base/framework/android_common/turbine-combined/framework.jar
+    $ANDROID_BUILD_TOP/out/soong/.intermediates/libcore/core-all/android_common/turbine-combined/core-all.jar
+    $ANDROID_BUILD_TOP/external/error_prone/error_prone/error_prone_refaster-2.4.0.jar
+)
+
+javac -cp "$(IFS=:; echo "${paths[*]}")" \
+    "-Xplugin:RefasterRuleCompiler --out $1.refaster" $1
+
+rm *.class
