code: public List<Variable> variables() {
          List<Variable> result = new ArrayList<Variable>(inputVariables.size() + outputVariables.size());
          result.addAll(inputVariables);
          result.addAll(outputVariables);
          return result;
      }
docs: Returns a list that contains the input variables followed by the output
  variables in the order of insertion
  
  @return a list that contains the input variables followed by the output
  variables in the order of insertion