--- old/src/java.base/share/classes/java/lang/invoke/MemberName.java 2018-07-05 23:11:47.000000000 -0700 +++ new/src/java.base/share/classes/java/lang/invoke/MemberName.java 2018-07-05 23:11:47.000000000 -0700 @@ -447,12 +447,13 @@ // let the rest (native, volatile, transient, etc.) be tested via Modifier.isFoo // unofficial modifier flags, used by HotSpot: - static final int BRIDGE = 0x00000040; - static final int VARARGS = 0x00000080; - static final int SYNTHETIC = 0x00001000; - static final int ANNOTATION = 0x00002000; - static final int ENUM = 0x00004000; - static final int FLATTENED = 0x00008000; + static final int BRIDGE = 0x00000040; + static final int VARARGS = 0x00000080; + static final int SYNTHETIC = 0x00001000; + static final int ANNOTATION = 0x00002000; + static final int ENUM = 0x00004000; + static final int FLATTENABLE = 0x00000100; + static final int FLATTENED = 0x00008000; /** Utility method to query the modifier flags of this member; returns false if the member is not a method. */ public boolean isBridge() { @@ -467,10 +468,14 @@ return testAllFlags(SYNTHETIC); } - public boolean isValue() { return clazz.isValue(); } + public boolean isFlattenable() { return (flags & FLATTENABLE) == FLATTENABLE; } public boolean isFlattened() { return (flags & FLATTENED) == FLATTENED; } + public boolean isNullable() { return !isFlattenable(); } + + public boolean isValue() { return clazz.isValue(); } + static final String CONSTRUCTOR_NAME = ""; // the ever-popular // modifiers exported by the JVM: