code: protected static Renderer changeMediaType(final Renderer r, final MediaType mt) {
          return new Renderer() {
  
              @Override
              public MediaType getMediaType(Bindings unused) {
                  return mt;
              }
  
              @Override
              public BytesOut render(Times t, Bindings rc, Map<String, String> termBindings, APIResultSet results) {
                  return r.render(t, rc, termBindings, results);
              }
  
              @Override
              public String getPreferredSuffix() {
                  return r.getPreferredSuffix();
              }
  
              @Override
              public CompleteContext.Mode getMode() {
                  return r.getMode();
              }
          };
      }
docs: Given a renderer r and a media type mt, return a new renderer which
  behaves like r except that it announces its media type as mt. r
  itself is not changed.
  
  This code should be somewhere more sensible. In fact the whole
  renderer-choosing machinery needs a good cleanup.