Print InnerClasses/EnclosingMethod in disassembly

Change-Id: I2cff4b1bced681b47f64bbdad2046436fcfcd5d1
diff --git a/src/main/java/com/android/tools/r8/graph/AssemblyWriter.java b/src/main/java/com/android/tools/r8/graph/AssemblyWriter.java
index 491178a..bd6c452 100644
--- a/src/main/java/com/android/tools/r8/graph/AssemblyWriter.java
+++ b/src/main/java/com/android/tools/r8/graph/AssemblyWriter.java
@@ -85,6 +85,32 @@
       for (DexType value : clazz.interfaces.values) {
         ps.println("# Implements: '" + value.toSourceString() + "'");
       }
+      if (!clazz.getInnerClasses().isEmpty()) {
+        ps.println("# InnerClasses:");
+        for (InnerClassAttribute innerClassAttribute : clazz.getInnerClasses()) {
+          ps.println(
+              "#  Outer: "
+                  + (innerClassAttribute.getOuter() != null
+                      ? innerClassAttribute.getOuter().toSourceString()
+                      : "-")
+                  + ", inner: "
+                  + innerClassAttribute.getInner().toSourceString()
+                  + ", inner name: "
+                  + innerClassAttribute.getInnerName()
+                  + ", access: "
+                  + Integer.toHexString(innerClassAttribute.getAccess()));
+        }
+      }
+      EnclosingMethodAttribute enclosingMethodAttribute = clazz.getEnclosingMethodAttribute();
+      if (enclosingMethodAttribute != null) {
+        ps.println("# EnclosingMethod:");
+        if (enclosingMethodAttribute.getEnclosingClass() != null) {
+          ps.println("#  Class: " + enclosingMethodAttribute.getEnclosingClass().toSourceString());
+        } else {
+          ps.println(
+              "#  Method: " + enclosingMethodAttribute.getEnclosingMethod().toSourceString());
+        }
+      }
     }
     ps.println();
   }