Fix a type annotation parsing bug

MOE_MIGRATED_REVID=137583183
diff --git a/java/com/google/turbine/parse/Parser.java b/java/com/google/turbine/parse/Parser.java
index ae37a5c..7d70c00 100644
--- a/java/com/google/turbine/parse/Parser.java
+++ b/java/com/google/turbine/parse/Parser.java
@@ -514,9 +514,9 @@
                 name = eatIdent();
                 return memberRest(access, annos, typaram, result, name);
               }
+            case AT:
             case LBRACK:
               {
-                eat(Token.LBRACK);
                 result =
                     new ClassTy(
                         position,
@@ -524,9 +524,12 @@
                         ident,
                         ImmutableList.<Type>of(),
                         typeAnnos);
+                typeAnnos = maybeAnnos();
+                eat(Token.LBRACK);
                 do {
                   result = new ArrTy(position, typeAnnos, result);
                   eat(Token.RBRACK);
+                  typeAnnos = maybeAnnos();
                 } while (maybe(Token.LBRACK));
                 break;
               }
diff --git a/javatests/com/google/turbine/lower/LowerIntegrationTest.java b/javatests/com/google/turbine/lower/LowerIntegrationTest.java
index e4cc8da..e775334 100644
--- a/javatests/com/google/turbine/lower/LowerIntegrationTest.java
+++ b/javatests/com/google/turbine/lower/LowerIntegrationTest.java
@@ -244,6 +244,7 @@
       "bytecode_boolean_const.test",
       "tyvar_bound.test",
       "type_anno_hello.test",
+      "type_anno_array_dims.test",
     };
     List<Object[]> tests =
         ImmutableList.copyOf(testCases).stream().map(x -> new Object[] {x}).collect(toList());
diff --git a/javatests/com/google/turbine/lower/testdata/type_anno_array_dims.test b/javatests/com/google/turbine/lower/testdata/type_anno_array_dims.test
new file mode 100644
index 0000000..c577264
--- /dev/null
+++ b/javatests/com/google/turbine/lower/testdata/type_anno_array_dims.test
@@ -0,0 +1,10 @@
+=== Test.java ===
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Target;
+
+@Target(ElementType.TYPE_USE) @interface A {}
+@Target(ElementType.TYPE_USE) @interface B {}
+
+class Test<T> {
+  private T @A [] [] @B [] values;
+}