I'm far from expert on those questions, but would the "invoke" function work? I think it's considered to be a tool of the last resort, but seems to be the situation you are in!
invoke(f, (types...), args...) Invoke a method for the given generic function matching the specified types (as a tuple), on the specified arguments. The arguments must be compatible with the specified types. This allows invoking a method other than the most specific matching method, which is useful when the behavior of a more general definition is explicitly needed (often as part of the implementation of a more specific method of the same function).