protected virtual Expression VisitTrigonometry(MethodCallExpression term, TrigonometryFunction function) { ReadOnlyCollection <Expression> newArguments = VisitExpressionList(term.Arguments); if (newArguments != term.Arguments) { if (newArguments.Count != 1) { throw new InvalidOperationException("Single Argument Expected."); } return(Trigonometry.Apply(function, newArguments[0])); } return(term); }