Clean up use of isConstructor getter.

Bug:
Change-Id: Iba5c8df796c2b80680e91346f12f799e07eac978
diff --git a/src/main/java/com/android/tools/r8/dex/FileWriter.java b/src/main/java/com/android/tools/r8/dex/FileWriter.java
index 332f292..bdcbafe 100644
--- a/src/main/java/com/android/tools/r8/dex/FileWriter.java
+++ b/src/main/java/com/android/tools/r8/dex/FileWriter.java
@@ -5,8 +5,6 @@
 
 import static com.android.tools.r8.utils.LebUtils.sizeAsUleb128;
 
-import com.google.common.collect.Sets;
-
 import com.android.tools.r8.code.Instruction;
 import com.android.tools.r8.errors.CompilationError;
 import com.android.tools.r8.graph.AppInfo;
@@ -51,12 +49,11 @@
 import com.android.tools.r8.naming.NamingLens;
 import com.android.tools.r8.utils.InternalOptions;
 import com.android.tools.r8.utils.LebUtils;
-
+import com.google.common.collect.Sets;
 import it.unimi.dsi.fastutil.objects.Object2IntLinkedOpenHashMap;
 import it.unimi.dsi.fastutil.objects.Object2IntMap;
 import it.unimi.dsi.fastutil.objects.Reference2IntLinkedOpenHashMap;
 import it.unimi.dsi.fastutil.objects.Reference2IntMap;
-
 import java.security.MessageDigest;
 import java.util.ArrayList;
 import java.util.Arrays;
@@ -297,7 +294,7 @@
       }
 
     } else {
-      if (method.accessFlags.isConstructor()) {
+      if (method.isInstanceInitializer()) {
         throw new CompilationError(
             "Interface must not have constructors: " + method.method.toSourceString());
       }
diff --git a/src/main/java/com/android/tools/r8/graph/DexClass.java b/src/main/java/com/android/tools/r8/graph/DexClass.java
index 04c61a4..d09d395 100644
--- a/src/main/java/com/android/tools/r8/graph/DexClass.java
+++ b/src/main/java/com/android/tools/r8/graph/DexClass.java
@@ -175,12 +175,8 @@
   }
 
   public DexEncodedMethod getClassInitializer() {
-    for (DexEncodedMethod method : directMethods()) {
-      if (method.accessFlags.isConstructor() && method.accessFlags.isStatic()) {
-        return method;
-      }
-    }
-    return null;
+    return Arrays.stream(directMethods()).filter(DexEncodedMethod::isClassInitializer).findAny()
+        .orElse(null);
   }
 
   public Resource.Kind getOrigin() {
diff --git a/src/main/java/com/android/tools/r8/graph/DexEncodedMethod.java b/src/main/java/com/android/tools/r8/graph/DexEncodedMethod.java
index 947ab44..700e45a 100644
--- a/src/main/java/com/android/tools/r8/graph/DexEncodedMethod.java
+++ b/src/main/java/com/android/tools/r8/graph/DexEncodedMethod.java
@@ -98,22 +98,21 @@
     return compilationState != CompilationState.NOT_PROCESSED;
   }
 
-  public boolean cannotInline() {
-    return compilationState == CompilationState.NOT_PROCESSED
-        || compilationState == CompilationState.PROCESSED_NOT_INLINING_CANDIDATE;
+  public boolean isInstanceInitializer() {
+    return accessFlags.isConstructor() && !accessFlags.isStatic();
+  }
+
+  public boolean isClassInitializer() {
+    return accessFlags.isConstructor() && accessFlags.isStatic();
   }
 
   public boolean isInliningCandidate(DexEncodedMethod container, boolean alwaysInline,
       AppInfoWithSubtyping appInfo) {
-    if (container.accessFlags.isStatic() && container.accessFlags.isConstructor()) {
+    if (isClassInitializer()) {
       // This will probably never happen but never inline a class initializer.
       return false;
     }
     if (alwaysInline) {
-      // Only inline constructor iff holder classes are equal.
-      if (!accessFlags.isStatic() && accessFlags.isConstructor()) {
-        return container.method.getHolder() == method.getHolder();
-      }
       return true;
     }
     switch (compilationState) {
@@ -307,10 +306,10 @@
             itemFactory.stringType),
             itemFactory.constructorMethodName);
     DexCode code;
-    if (accessFlags.isConstructor() && !accessFlags.isStatic()) {
+    if (isInstanceInitializer()) {
       // The Java VM Spec requires that a constructor calls an initializer from the super class
       // or another constructor from the current class. For simplicity we do the latter by just
-      // calling outself. This is ok, as the constructor always throws before the recursive call.
+      // calling ourself. This is ok, as the constructor always throws before the recursive call.
       code = generateCodeFromTemplate(3, 2, new ConstStringJumbo(0, tag),
           new ConstStringJumbo(1, message),
           new InvokeStatic(2, logMethod, 0, 1, 0, 0, 0),
diff --git a/src/main/java/com/android/tools/r8/graph/DexProgramClass.java b/src/main/java/com/android/tools/r8/graph/DexProgramClass.java
index d3a5676..60a7319 100644
--- a/src/main/java/com/android/tools/r8/graph/DexProgramClass.java
+++ b/src/main/java/com/android/tools/r8/graph/DexProgramClass.java
@@ -148,7 +148,6 @@
   public void addStaticMethod(DexEncodedMethod staticMethod) {
     assert staticMethod.accessFlags.isStatic();
     assert !staticMethod.accessFlags.isPrivate();
-    assert !staticMethod.accessFlags.isConstructor();
     directMethods = Arrays.copyOf(directMethods, directMethods.length + 1);
     directMethods[directMethods.length - 1] = staticMethod;
   }
diff --git a/src/main/java/com/android/tools/r8/ir/optimize/Inliner.java b/src/main/java/com/android/tools/r8/ir/optimize/Inliner.java
index b017db0..942e8f0 100644
--- a/src/main/java/com/android/tools/r8/ir/optimize/Inliner.java
+++ b/src/main/java/com/android/tools/r8/ir/optimize/Inliner.java
@@ -256,8 +256,7 @@
     // Allow inlining a constructor into a constructor of the same class, as the constructor code
     // is expected to adhere to the VM specification.
     DexType methodHolder = method.method.holder;
-    boolean methodIsConstructor =
-        method.accessFlags.isConstructor() && !method.accessFlags.isStatic();
+    boolean methodIsConstructor = method.isInstanceInitializer();
     if (methodIsConstructor && methodHolder == invoke.asInvokeMethod().getInvokedMethod().holder) {
       return true;
     }
@@ -370,8 +369,8 @@
                 performInlining(target, inlinee, callGraph);
               }
               // Make sure constructor inlining is legal.
-              if (target.accessFlags.isConstructor()
-                  && !target.accessFlags.isStatic()
+              assert !target.isClassInitializer();
+              if (target.isInstanceInitializer()
                   && !legalConstructorInline(method, invoke, inlinee)) {
                 continue;
               }
diff --git a/src/main/java/com/android/tools/r8/shaking/ProguardMemberRule.java b/src/main/java/com/android/tools/r8/shaking/ProguardMemberRule.java
index 1e2d6d4..f3e6c6f 100644
--- a/src/main/java/com/android/tools/r8/shaking/ProguardMemberRule.java
+++ b/src/main/java/com/android/tools/r8/shaking/ProguardMemberRule.java
@@ -200,7 +200,7 @@
   public boolean matches(DexEncodedMethod method, RootSetBuilder builder) {
     switch (getRuleType()) {
       case ALL_METHODS:
-        if (method.accessFlags.isConstructor() && method.accessFlags.isStatic()) {
+        if (method.isClassInitializer()) {
           break;
         }
       case ALL:
diff --git a/src/main/java/com/android/tools/r8/shaking/SimpleClassMerger.java b/src/main/java/com/android/tools/r8/shaking/SimpleClassMerger.java
index e01439d..d3306d9 100644
--- a/src/main/java/com/android/tools/r8/shaking/SimpleClassMerger.java
+++ b/src/main/java/com/android/tools/r8/shaking/SimpleClassMerger.java
@@ -379,7 +379,7 @@
 
     private DexEncodedMethod renameConstructors(DexEncodedMethod method) {
       // Only rename instance initializers.
-      if (!method.accessFlags.isConstructor() || method.accessFlags.isStatic()) {
+      if (!method.isInstanceInitializer()) {
         return method;
       }
       DexType holder = method.method.holder;
diff --git a/src/main/java/com/android/tools/r8/shaking/TreePruner.java b/src/main/java/com/android/tools/r8/shaking/TreePruner.java
index 2a5c9e0..d8fd6c2 100644
--- a/src/main/java/com/android/tools/r8/shaking/TreePruner.java
+++ b/src/main/java/com/android/tools/r8/shaking/TreePruner.java
@@ -113,7 +113,7 @@
   }
 
   private boolean isDefaultConstructor(DexEncodedMethod method) {
-    return method.accessFlags.isConstructor() && !method.accessFlags.isStatic()
+    return method.isInstanceInitializer()
         && method.method.proto.parameters.isEmpty();
   }