@Search
    public List<Patient> findPatient(
        @RequiredParam(name = Patient.SP_NAME) StringDt theName,
        @IncludeParam(allow = {"foo", "bar"}) Set<Include> theIncludes) {
      ArrayList<Patient> retVal = new ArrayList<Patient>();

      Patient p = new Patient();
      p.addIdentifier().setSystem("foo").setValue("bar");

      p.setId(theName.getValue());

      if (theIncludes != null) {
        for (Include next : theIncludes) {
          p.addName().addFamily().setValue(next.getValue());
        }
      }
      retVal.add(p);

      return retVal;
    }
    @Override
    public Bundle execute() {

      Map<String, List<String>> params = new LinkedHashMap<String, List<String>>();
      // Map<String, List<String>> initial = createExtraParams();
      // if (initial != null) {
      // params.putAll(initial);
      // }

      for (ICriterionInternal next : myCriterion) {
        String parameterName = next.getParameterName();
        String parameterValue = next.getParameterValue();
        addParam(params, parameterName, parameterValue);
      }

      for (Include next : myInclude) {
        addParam(params, Constants.PARAM_INCLUDE, next.getValue());
      }

      for (SortInternal next : mySort) {
        addParam(params, next.getParamName(), next.getParamValue());
      }

      if (myParamLimit != null) {
        addParam(params, Constants.PARAM_COUNT, Integer.toString(myParamLimit));
      }

      BundleResponseHandler binding = new BundleResponseHandler(myResourceType);

      IdDt resourceId = myResourceId != null ? new IdDt(myResourceId) : null;

      BaseHttpClientInvocation invocation =
          SearchMethodBinding.createSearchInvocation(
              myContext, myResourceName, params, resourceId, myCompartmentName, mySearchStyle);

      return invoke(params, binding, invocation);
    }