import java.util.List;
import lombok.Builder;
class BuilderComplex {
  public static @java.lang.SuppressWarnings("all") class TestVoidName<T extends Number> {
    private @java.lang.SuppressWarnings("all") T number;
    private @java.lang.SuppressWarnings("all") int arg2;
    private @java.lang.SuppressWarnings("all") String arg3;
    private @java.lang.SuppressWarnings("all") BuilderComplex selfRef;
    @java.lang.SuppressWarnings("all") TestVoidName() {
      super();
    }
    public @java.lang.SuppressWarnings("all") BuilderComplex.TestVoidName<T> number(final T number) {
      this.number = number;
      return this;
    }
    public @java.lang.SuppressWarnings("all") BuilderComplex.TestVoidName<T> arg2(final int arg2) {
      this.arg2 = arg2;
      return this;
    }
    public @java.lang.SuppressWarnings("all") BuilderComplex.TestVoidName<T> arg3(final String arg3) {
      this.arg3 = arg3;
      return this;
    }
    public @java.lang.SuppressWarnings("all") BuilderComplex.TestVoidName<T> selfRef(final BuilderComplex selfRef) {
      this.selfRef = selfRef;
      return this;
    }
    public @java.lang.SuppressWarnings("all") void execute() {
      BuilderComplex.<T>testVoidWithGenerics(this.number, this.arg2, this.arg3, this.selfRef);
    }
    public @java.lang.Override @java.lang.SuppressWarnings("all") java.lang.String toString() {
      return (((((((("BuilderComplex.TestVoidName(number=" + this.number) + ", arg2=") + this.arg2) + ", arg3=") + this.arg3) + ", selfRef=") + this.selfRef) + ")");
    }
  }
  BuilderComplex() {
    super();
  }
  private static @Builder(buildMethodName = "execute") <T extends Number>void testVoidWithGenerics(T number, int arg2, String arg3, BuilderComplex selfRef) {
  }
  public static @java.lang.SuppressWarnings("all") <T extends Number>BuilderComplex.TestVoidName<T> builder() {
    return new BuilderComplex.TestVoidName<T>();
  }
}