Package: org.codehaus.groovy.vmplugin.v9

## [Java] Class Java9

- org.codehaus.groovy.vmplugin.v9.Java9

-     public class Java9
      extends Java8

  Additional Java 9 based functions will be added here as needed.

- - ### Methods Summary

    Methods
    Type Params | Return Type | Name and description
    --- | --- | ---
    `` | `public boolean` | `checkAccessible(Class<?> callerClass, Class<?> declaringClass, int memberModifiers, boolean allowIllegalAccess)`
    `` | `public boolean` | `checkCanSetAccessible(AccessibleObject accessibleObject, Class<?> callerClass)` This method may be used by a caller in class C to check whether to enable access to a member of declaring class D successfully if Java8#checkCanSetAccessible(java.lang.reflect.AccessibleObject, java.lang.Class) returns true and any of the following hold:
    `` | `public Map<String, Set<String>>` | `getDefaultImportClasses(String[] packageNames)`
    `` | `public Object` | `getInvokeSpecialHandle(Method method, Object receiver)`
    `` | `public int` | `getVersion()`
    `` | `public static MethodHandles.Lookup` | `of(Class<?> declaringClass)`
    `` | `public MetaMethod` | `transformMetaMethod(MetaClass metaClass, MetaMethod metaMethod, Class<?> caller)`
    `` | `public boolean` | `trySetAccessible(AccessibleObject ao)`

  - ### Inherited Methods Summary

    Inherited Methods
    Methods inherited from class | Name
    --- | ---
    `class Java8` | `checkAccessible, checkCanSetAccessible, configureAnnotation, configureAnnotationNodeFromDefinition, configureClassNode, configureTypeVariableDefinition, configureTypeVariableReference, getElementCode, getInvokeSpecialHandle, getPluginDefaultGroovyMethods, getPluginStaticGroovyMethods, getVersion, invalidateCallSites, invokeHandle, makeParameter, of, processParameters, setAdditionalClassInformation, transformMetaMethod, transformMetaMethod, trySetAccessible`

- - ### Method Detail

    - #### @Override public boolean checkAccessible(Class<?> callerClass, Class<?> declaringClass, int memberModifiers, boolean allowIllegalAccess)

    - #### public boolean checkCanSetAccessible(AccessibleObject accessibleObject, Class<?> callerClass)

      This method may be used by a caller in class C to check whether to enable access to a member of declaring class D successfully if Java8#checkCanSetAccessible(java.lang.reflect.AccessibleObject, java.lang.Class) returns true and any of the following hold:

      1) C and D are in the same module. 2) The member is public and D is public in a package that the module containing D exports to at least the module containing C. 3) The member is protected static, D is public in a package that the module containing D exports to at least the module containing C, and C is a subclass of D. 4) D is in a package that the module containing D opens to at least the module containing C. All packages in unnamed and open modules are open to all modules and so this method always succeeds when D is in an unnamed or open module.

      Parameters:
        `accessibleObject` - the accessible object to check
        `callerClass` - the callerClass to invoke `setAccessible`
      Returns:
        the check result

    - #### @Override public Map<String, Set<String>> getDefaultImportClasses(String[] packageNames)

    - #### @Override public Object getInvokeSpecialHandle(Method method, Object receiver)

    - #### @Override public int getVersion()

    - #### public static MethodHandles.Lookup of(Class<?> declaringClass)

    - #### @Override public MetaMethod transformMetaMethod(MetaClass metaClass, MetaMethod metaMethod, Class<?> caller)

    - #### @Override public boolean trySetAccessible(AccessibleObject ao)