@Override
  public ValueSet expand(ValueSet source, String theFilter) {
    ValueSet retVal = new ValueSet();
    retVal.setDate(DateTimeDt.withCurrentTime());

    /*
     * Add composed concepts
     */

    for (ComposeInclude nextInclude : source.getCompose().getInclude()) {
      for (ComposeIncludeConcept next : nextInclude.getConcept()) {
        if (isBlank(theFilter)) {
          addCompose(retVal, nextInclude.getSystem(), next.getCode(), next.getDisplay());
        } else {
          String filter = theFilter.toLowerCase();
          if (next.getDisplay().toLowerCase().contains(filter)
              || next.getCode().toLowerCase().contains(filter)) {
            addCompose(retVal, nextInclude.getSystem(), next.getCode(), next.getDisplay());
          }
        }
      }
    }

    /*
     * Add defined concepts
     */

    for (CodeSystemConcept next : source.getCodeSystem().getConcept()) {
      addCompose(theFilter, retVal, source, next);
    }

    return retVal;
  }