svoid forwardSwappableFunctionToObject(O o, S methodName, O target) { forwardSwappableFunctionToObject(o, methodName, target, methodName); } svoid forwardSwappableFunctionToObject(O o, S methodName, O target, S methodNameOnTarget) { if (o == null || target == null) ret; Class type = fieldType(o, field); if (type == null) ret; // field doesn't exist S proxyMethodName = type == Runnable ? "run" : "get"; set(o, field, singleObjectMethodProxy2(type, target, proxyMethodName, methodName)); }