Move app finalization in D8 to finalizeApplication method

Change-Id: Ie3ecce92a53229d0aef7a00fb32d8614551abb2b
diff --git a/src/main/java/com/android/tools/r8/D8.java b/src/main/java/com/android/tools/r8/D8.java
index 34f4de6..3887ee7 100644
--- a/src/main/java/com/android/tools/r8/D8.java
+++ b/src/main/java/com/android/tools/r8/D8.java
@@ -337,31 +337,13 @@
         timing.end();
       }
 
-      timing.time("Finalize synthetics", () -> finalizeApplication(appView, executor, timing));
-
-      timing.time(
-          "Horizontal merger",
-          () ->
-              HorizontalClassMerger.createForD8ClassMerging(appView)
-                  .runIfNecessary(executor, timing));
-
-      timing.time(
-          "Signature rewriter",
-          () ->
-              new GenericSignatureRewriter(appView)
-                  .runForD8(appView.appInfo().classes(), executor));
-
-      timing.time(
-          "Kotlin metadata rewriter", () -> new KotlinMetadataRewriter(appView).runForD8(executor));
+      finalizeApplication(appView, executor, timing);
 
       timing.end(); // post-converter
 
       if (options.isGeneratingClassFiles()) {
         new CfApplicationWriter(appView, marker).write(options.getClassFileConsumer(), inputApp);
       } else {
-        if (options.apiModelingOptions().enableStubbingOfClasses) {
-          new ApiReferenceStubber(appView).run(executor);
-        }
         new ApplicationWriter(appView, marker == null ? null : ImmutableList.copyOf(markers))
             .write(executor, inputApp);
       }
@@ -397,7 +379,28 @@
   private static void finalizeApplication(
       AppView<AppInfo> appView, ExecutorService executorService, Timing timing)
       throws ExecutionException {
-    SyntheticFinalization.finalize(appView, timing, executorService);
+    timing.time(
+        "Finalize synthetics",
+        () -> SyntheticFinalization.finalize(appView, timing, executorService));
+
+    timing.time(
+        "Horizontal merger",
+        () ->
+            HorizontalClassMerger.createForD8ClassMerging(appView)
+                .runIfNecessary(executorService, timing));
+
+    timing.time(
+        "Signature rewriter",
+        () ->
+            new GenericSignatureRewriter(appView)
+                .runForD8(appView.appInfo().classes(), executorService));
+
+    timing.time(
+        "Kotlin metadata rewriter",
+        () -> new KotlinMetadataRewriter(appView).runForD8(executorService));
+
+    timing.time(
+        "Api reference stubber", () -> new ApiReferenceStubber(appView).run(executorService));
   }
 
   private static DexApplication rewriteNonDexInputs(
diff --git a/src/main/java/com/android/tools/r8/dex/ApplicationWriter.java b/src/main/java/com/android/tools/r8/dex/ApplicationWriter.java
index 3e59e50..492e61a 100644
--- a/src/main/java/com/android/tools/r8/dex/ApplicationWriter.java
+++ b/src/main/java/com/android/tools/r8/dex/ApplicationWriter.java
@@ -163,10 +163,7 @@
   }
 
   public ApplicationWriter(AppView<?> appView, List<Marker> markers) {
-    this(
-        appView,
-        markers,
-        null);
+    this(appView, markers, null);
   }
 
   public ApplicationWriter(