code: @Override
      public T visitExpression(Expression elm, C context) {
          if (elm instanceof Code) return visitCode((Code)elm, context);
          else if (elm instanceof CodeSystemRef) return visitCodeSystemRef((CodeSystemRef)elm, context);
          else if (elm instanceof Concept) return visitConcept((Concept)elm, context);
          else if (elm instanceof InCodeSystem) return visitInCodeSystem((InCodeSystem)elm, context);
          else if (elm instanceof InValueSet) return visitInValueSet((InValueSet)elm, context);
          else if (elm instanceof Quantity) return visitQuantity((Quantity)elm, context);
          else if (elm instanceof Retrieve) return visitRetrieve((Retrieve)elm, context);
          else if (elm instanceof ValueSetRef) return visitValueSetRef((ValueSetRef)elm, context);
          else return super.visitExpression(elm, context);
      }
docs: Visit an Expression. This method will be called for
  every node in the tree that is an Expression.
  
  @param elm     the ELM tree
  @param context the context passed to the visitor
  @return the visitor result