static MethodMappingInfo determineMapping(Class<?> originalClass, Object ... targetObjects) {
		MethodMappingInfo info = new MethodMappingInfo(originalClass);
		for (Method method : info.mapping.keySet()) {
			CallTarget target = null;
			for (Object targetObject : targetObjects) {
				Method targetMethod = findMethod(method, targetObject);
				if (targetMethod != null) {
					if (target != null) {
						throw new AmbiguousMethodException(target.getTargetMethod(), targetMethod);
					}
					target = new CallTarget(targetObject, targetMethod);
				}
			}
			if (target == null) {
				throw new MissingMethodException(method);
			}
			info.mapping.put(method, target);
		}
		return info;
	}