diff a/test/langtools/tools/javac/classfiles/attributes/innerclasses/InnerClassesTestBase.java b/test/langtools/tools/javac/classfiles/attributes/innerclasses/InnerClassesTestBase.java
--- a/test/langtools/tools/javac/classfiles/attributes/innerclasses/InnerClassesTestBase.java
+++ b/test/langtools/tools/javac/classfiles/attributes/innerclasses/InnerClassesTestBase.java
@@ -1,7 +1,7 @@
 /*
- * Copyright (c) 2014, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2014, 2022, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
  * under the terms of the GNU General Public License version 2 only, as
  * published by the Free Software Foundation.
@@ -275,29 +275,33 @@
             StringBuilder sb = new StringBuilder();
             sb.append("public class InnerClassesSrc {")
                     .append(toString(outerMod)).append(' ')
                     .append(outerClassType).append(' ')
                     .append(prefix).append(' ').append('\n');
+            if (outerClassType == ClassType.CLASS && outerMod.contains(Modifier.ABSTRACT))
+                sb.append("int f;\n"); // impose identity to make testing predicatable
             int count = 0;
             Map<String, Set<String>> class2Flags = new HashMap<>();
             List<String> syntheticClasses = new ArrayList<>();
             for (List<Modifier> innerMod : innerMods) {
                 ++count;
                 String privateConstructor = "";
                 if (hasSyntheticClass && !innerMod.contains(Modifier.ABSTRACT)) {
                     privateConstructor = "private A" + count + "() {}";
                     syntheticClasses.add("new A" + count + "();");
                 }
+                String instField = innerClassType == ClassType.CLASS && innerMod.contains(Modifier.ABSTRACT) ?
+                                                "int f; " : ""; // impose identity to make testing predicatable
                 sb.append(toString(innerMod)).append(' ');
-                sb.append(String.format("%s A%d {%s}\n", innerClassType, count, privateConstructor));
+                sb.append(String.format("%s A%d { %s %s}\n", innerClassType, count, instField, privateConstructor));
                 Set<String> flags = getFlags(innerClassType, innerMod);
                 class2Flags.put("A" + count, flags);
             }
             if (hasSyntheticClass) {
                 // Source to generate synthetic classes
                 sb.append(syntheticClasses.stream().collect(Collectors.joining(" ", "{", "}")));
-                class2Flags.put("1", new HashSet<>(Arrays.asList("ACC_STATIC", "ACC_SYNTHETIC")));
+                class2Flags.put("1", new HashSet<>(Arrays.asList("ACC_STATIC", "ACC_IDENTITY", "ACC_SYNTHETIC")));
             }
             sb.append(suffix).append("\n}");
             getAdditionalFlags(class2Flags, outerClassType, outerMod.toArray(new Modifier[outerMod.size()]));
             list.add(new TestCase(sb.toString(), class2Flags));
         }
@@ -372,10 +376,11 @@
 
     public enum ClassType {
         CLASS("class") {
             @Override
             public void addSpecificFlags(Set<String> flags) {
+                flags.add("ACC_IDENTITY");
             }
         },
         INTERFACE("interface") {
             @Override
             public void addFlags(Set<String> flags) {
@@ -409,15 +414,17 @@
             @Override
             public void addSpecificFlags(Set<String> flags) {
                 flags.add("ACC_ENUM");
                 flags.add("ACC_FINAL");
                 flags.add("ACC_STATIC");
+                flags.add("ACC_IDENTITY");
             }
         },
         OTHER("") {
             @Override
             public void addSpecificFlags(Set<String> flags) {
+                flags.add("ACC_IDENTITY");
             }
         };
 
         private final String classType;
 
@@ -437,11 +444,12 @@
 
     public enum Modifier {
         PUBLIC("public"), PRIVATE("private"),
         PROTECTED("protected"), DEFAULT("default"),
         FINAL("final"), ABSTRACT("abstract"),
-        STATIC("static"), EMPTY("");
+        STATIC("static"), EMPTY(""),
+        IDENTITY("identity");
 
         private final String str;
 
         Modifier(String str) {
             this.str = str;
