code: public S render(T entity)
      {
          // This reflection charade is necessary because we can't convince the
          // compiler that the output of renderer1 is compatible with the input
          // of renderer2 without exposing a redundant "intermediate" type parameter
          // in the class definition.  I don't what to do that, I'd rather have
          // the ugliness encapsulated here than complicate code that uses this class.
          Method renderMethod = ReflectionUtils.findKnownMethod(Renderer.class,
                                                                "render",
                                                                Object.class);
          return ReflectionUtils.<S>invokeUnchecked(renderMethod,
                                                    renderer2,
                                                    renderer1.render(entity));
      }
docs: {@inheritDoc}