goja-core/src/main/java/goja/core/kits/reflect/ClassKit.java
public static boolean isUserLevelMethod(Method method) {
        Preconditions.checkNotNull(method, "Method must not be null");
        return (method.isBridge() || (!method.isSynthetic() && !isGroovyObjectMethod(method)));
    }
public static boolean isUserLevelMethod(Method method) {
        Preconditions.checkNotNull(method, "Method must not be null");
        return (method.isBridge() || (!method.isSynthetic() && !isGroovyObjectMethod(method)));
    }
public static boolean isUserLevelMethod ( Method method ) { Preconditions . checkNotNull ( method , "Method must not be null" ) ; return ( method . isBridge ( ) || ( ! method . isSynthetic ( ) && ! isGroovyObjectMethod ( method ) ) ) ; }
Determine whether the given method is declared by the user or at least pointing to
a user-declared method.
<p>Checks {@link Method#isSynthetic()} (for implementation methods) as well as the
{@code GroovyObject} interface (for interface methods; on an implementation class,
implementations of the {@code GroovyObject} methods will be marked as synthetic anyway).
Note that, despite being synthetic, bridge methods ({@link Method#isBridge()}) are considered
as user-level methods since they are eventually pointing to a user-declared generic method.

@param method the method to check
@return {@code true} if the method can be considered as user-declared; [@code false} otherwise
Determine whether the given method is declared by the user or at least pointing to a user - declared method . <p > Checks { @link Method#isSynthetic () } ( for implementation methods ) as well as the { @code GroovyObject } interface ( for interface methods ; on an implementation class implementations of the { @code GroovyObject } methods will be marked as synthetic anyway ) . Note that despite being synthetic bridge methods ( { @link Method#isBridge () } ) are considered as user - level methods since they are eventually pointing to a user - declared generic method .