class Builder extends AbstractBasicBuilder<Builder> implements HttpRequest.Builder {

    private String method = "GET";
    private BodyContent body;
    private String bodyAsString;
    private boolean expectContinue;
    private String contentType;
    protected Duration timeout;
    protected boolean forStreaming;

    public Builder() {
    }

    public Builder(StandardHttpRequest original) {
      super.uri(original.uri());
      super.setHeaders(original.headers());
      method = original.method;
      bodyAsString = original.bodyString;
      body = original.body;
      expectContinue = original.expectContinue;
      contentType = original.contentType;
      timeout = original.timeout;
      forStreaming = original.forStreaming;
    }

    @Override
    public StandardHttpRequest build() {<FILL_FUNCTION_BODY>}

    @Override
    public HttpRequest.Builder timeout(long timeout, TimeUnit unit) {
      this.timeout = Duration.ofNanos(unit.toNanos(timeout));
      return this;
    }

    @Override
    public HttpRequest.Builder forStreaming() {
      this.forStreaming = true;
      return this;
    }

    @Override
    public HttpRequest.Builder uri(String uri) {
      return super.uri(URI.create(uri));
    }

    @Override
    public HttpRequest.Builder url(URL url) {
      try {
        return super.uri(url.toURI());
      } catch (URISyntaxException e) {
        throw KubernetesClientException.launderThrowable(e);
      }
    }

    @Override
    public HttpRequest.Builder post(String contentType, byte[] writeValueAsBytes) {
      method = METHOD_POST;
      this.contentType = contentType;
      body = new ByteArrayBodyContent(writeValueAsBytes);
      return this;
    }

    @Override
    public HttpRequest.Builder method(String method, String contentType, String body) {
      this.method = method;
      this.contentType = contentType;
      this.bodyAsString = body;
      if (body != null) {
        this.body = new StringBodyContent(body);
      }
      return this;
    }

    @Override
    public HttpRequest.Builder method(String method, String contentType, InputStream stream, long length) {
      this.method = method;
      this.contentType = contentType;
      this.body = new InputStreamBodyContent(stream, length);
      return this;
    }

    @Override
    public HttpRequest.Builder expectContinue() {
      expectContinue = true;
      return this;
    }
  }

      return new StandardHttpRequest(getHeaders(), Objects.requireNonNull(getUri()), method, bodyAsString, body, expectContinue,
          contentType, timeout, forStreaming);
    
<methods>public void <init>() ,public void <init>(Map<java.lang.String,List<java.lang.String>>) ,public List<java.lang.String> headers(java.lang.String) ,public Map<java.lang.String,List<java.lang.String>> headers() <variables>public static final java.lang.String CONTENT_LENGTH,public static final java.lang.String CONTENT_TYPE,public static final java.lang.String EXPECT,public static final java.lang.String EXPECT_CONTINUE,public static final java.lang.String PROXY_AUTHORIZATION,public static final java.lang.String RETRY_AFTER,private final non-sealed Map<java.lang.String,List<java.lang.String>> headers