code: public List<VarDef> getCombinedVars( FunctionInputDef inputDef)
      {
      assertApplicable( inputDef);
  
      List<VarDef> combinedVars = new ArrayList<VarDef>();
      for( VarDefIterator varDefs = new VarDefIterator( inputDef); varDefs.hasNext(); )
        {
        VarDef varDef = varDefs.next();
        if( isEligible( varDef))
          {
          combinedVars.add( varDef);
          }
        }
  
      if( combinedVars.size() < getTupleSize())
        {
        throw
          new IllegalStateException
          ( "Can't return " + getTupleSize() + "-tuples for " + inputDef
            + ": only " + combinedVars.size() + " variables eligible for combination");
        }
  
      return combinedVars;
      }
docs: Returns the set of input variables to be combined.