public static Object fallback(FunctionCallSite callSite, Object[] args) throws Throwable {
String functionName = callSite.name;
MethodType type = callSite.type();
Lookup caller = callSite.callerLookup;
Class<?> callerClass = caller.lookupClass();
MethodHandle handle = null;
Object result = findStaticMethodOrField(callerClass, functionName, args);
if (result == null) {
result = findClassWithStaticMethodOrField(callerClass, functionName, args);