public override bool Equals(object obj)
        {
            if (obj == null || GetType() != obj.GetType())
            {
                return(false);
            }

            UnaryFunction other = (UnaryFunction)obj;

            return(operand.Equals(other.operand));
        }
        private void VisitUnaryFunction(UnaryFunction function)
        {
            int step = symbolStack.Peek().step;

            switch (step)
            {
            case 0:
                symbolStack.Push(new SymbolProgress(function.operand));
                break;

            case 1:
                symbolStack.Pop();
                VisitTop();
                break;
            }
        }