docs: protected Object unwrapSurrogate(final Method method,
                                       final Object[] args) throws Throwable {
  
          Object result = method.invoke(this.delegate, args);
  
          return (result == this.delegate) ? this.surrogate
                                           : result;
      }