code: private RemoteRequest generateRemoteRequest() {
          requestHttpResponse = null;
          requestResult = null;
          requestThrowable = null;
          RemoteRequest request;
          switch (requestType) {
              case REMOTE_MULTIPART_REQUEST:
                  request = new RemoteMultipartRequest(
                          clientFactory,
                          method,
                          url,
                          syncGateway,
                          cancelable,
                          body,
                          attachments,
                          db,
                          requestHeaders,
                          onCompletionInner);
                  break;
              case REMOTE_MULTIPART_DOWNLOADER_REQUEST:
                  request = new RemoteMultipartDownloaderRequest(
                          clientFactory,
                          method,
                          url,
                          cancelable,
                          body,
                          db,
                          requestHeaders,
                          onCompletionInner);
                  break;
              default:
                  request = new RemoteRequest(
                          clientFactory,
                          method,
                          url,
                          cancelable,
                          body,
                          requestHeaders,
                          onCompletionInner);
                  break;
          }
          request.setDontLog404(dontLog404);
          if (this.authenticator != null)
              request.setAuthenticator(this.authenticator);
          if (this.onPreCompletionCaller != null)
              request.setOnPreCompletion(this.onPreCompletionCaller);
          return request;
      }
docs: //////////////////////////////////////////////////////////