code: @SuppressWarnings("unchecked")
    public static <E> E wrapObject(final Class<E> clazz, final Object target, final TimingReporter timingReporter) {
      return (E) Proxy.newProxyInstance(GenericMonitoringWrapper.class.getClassLoader(),
        new Class[] { clazz },
        new GenericMonitoringWrapper<E>(clazz, target, timingReporter));
    }
docs: Wraps the given object and returns the reporting proxy. Uses the given
  timing reporter to report timings.
  
  @param <E>
  the type of the public interface of the wrapped object
  @param clazz
  the class object to the interface
  @param target
  the object to wrap
  @param timingReporter
  the reporter to report timing information to
  @return the monitoring wrapper