package io.reactors.japi;






public class Proto<T> {
  public static <T, I extends Reactor<T>> Proto<T> create(Class<I> cls, Object... as) {
    return new Proto(cls, as);
  }

  public static class ProxyReactor<T> extends io.reactors.Reactor.Abstract<T> {
    public ProxyReactor(Class<?> cls, Object... as) {
      try {
        io.reactors.common.Reflect.instantiate(cls, as);
      } catch (Exception e) {
        throw new RuntimeException(e);
      }
    }
  }

  private io.reactors.Proto<io.reactors.Reactor<T>> self;

  io.reactors.Proto<io.reactors.Reactor<T>> getOriginal() {
    return self;
  }

  private Proto(Class<?> cls, Object... as) {
    Object[] args = new Object[] {cls, as};
    this.self = io.reactors.Proto.apply(ProxyReactor.class, args);
  }
}

@@ -601,24 +601,511 @@
  self;%0A  %7D%0A%0A
+  public Proto%3CT%3E withName(String name) %7B%0A    return new Proto(self.withName(name));%0A  %7D%0A%0A  public Proto%3CT%3E withScheduler(String name) %7B%0A    return new Proto(self.withScheduler(name));%0A  %7D%0A%0A  public Proto%3CT%3E withChannelName(String name) %7B%0A    return new Proto(self.withChannelName(name));%0A  %7D%0A%0A  public Proto%3CT%3E withTransport(String name) %7B%0A    return new Proto(self.withTransport(name));%0A  %7D%0A%0A  private Proto(io.reactors.Proto%3Cio.reactors.Reactor%3CT%3E%3E self) %7B%0A    this.self = self;%0A  %7D%0A%0A
   private Pr

Add methods to Java `Proto`.