code: protected TokenList.Token createOp( TokenList.Token left , TokenList.Token op , TokenList.Token right ,
                                        TokenList tokens , Sequence sequence )
      {
          Operation.Info info = functions.create(op.symbol, left.getVariable(), right.getVariable());
  
          sequence.addOperation(info.op);
  
          // replace the symbols with their output
          TokenList.Token t = new TokenList.Token(info.output);
          tokens.remove(left);
          tokens.remove(right);
          tokens.replace(op,t);
          return t;
  
      }
docs: Adds a new operation to the list from the operation and two variables.  The inputs are removed
  from the token list and replaced by their output.