class RequestKey {

  public boolean equalsExtended(Object obj) {
    if (equals(obj)) {
      RequestKey other = (RequestKey) obj;
      boolean headersEqual =
          other.headers == null || headers == null || headers.equals(other.headers);
      boolean charsetEqual =
          other.charset == null || charset == null || charset.equals(other.charset);
      boolean bodyEqual = other.body == null || body == null || Arrays.equals(other.body, body);
      return headersEqual && charsetEqual && bodyEqual;
    }
    return false;
  }

  private  RequestKey(Builder builder);
  private  RequestKey(Request request);

}