public Request<ListStacksRequest> marshall(ListStacksRequest listStacksRequest) {

    if (listStacksRequest == null) {
      throw new SdkClientException("Invalid argument passed to marshall(...)");
    }

    Request<ListStacksRequest> request =
        new DefaultRequest<ListStacksRequest>(listStacksRequest, "AmazonCloudFormation");
    request.addParameter("Action", "ListStacks");
    request.addParameter("Version", "2010-05-15");
    request.setHttpMethod(HttpMethodName.POST);

    if (listStacksRequest.getNextToken() != null) {
      request.addParameter("NextToken", StringUtils.fromString(listStacksRequest.getNextToken()));
    }

    com.amazonaws.internal.SdkInternalList<String> stackStatusFiltersList =
        (com.amazonaws.internal.SdkInternalList<String>) listStacksRequest.getStackStatusFilters();
    if (stackStatusFiltersList.isEmpty() && !stackStatusFiltersList.isAutoConstruct()) {
      request.addParameter("StackStatusFilter", "");
    }
    if (!stackStatusFiltersList.isEmpty() || !stackStatusFiltersList.isAutoConstruct()) {
      int stackStatusFiltersListIndex = 1;

      for (String stackStatusFiltersListValue : stackStatusFiltersList) {
        if (stackStatusFiltersListValue != null) {
          request.addParameter(
              "StackStatusFilter.member." + stackStatusFiltersListIndex,
              StringUtils.fromString(stackStatusFiltersListValue));
        }
        stackStatusFiltersListIndex++;
      }
    }

    return request;
  }