public void Clear()
        {
            var currentElement = FirstElement;

            FirstElement = null;
            CustomStackElement nextElement;

            while (currentElement.NextElement != null)
            {
                nextElement = currentElement.NextElement;
                currentElement.NextElement = null;
                currentElement             = nextElement;
            }
        }
        public void Push(object data)
        {
            if (IsEmpty())
            {
                FirstElement      = new CustomStackElement();
                FirstElement.Data = data;
            }
            else
            {
                var newElement = new CustomStackElement();
                newElement.Data = data;

                var currentElement = FirstElement;

                while (currentElement.NextElement != null)
                {
                    currentElement = currentElement.NextElement;
                }

                currentElement.NextElement = newElement;
            }
        }
        public object Pop()
        {
            var    currentElement = FirstElement;
            object returnVal;

            if (currentElement.NextElement != null)
            {
                while (currentElement.NextElement.NextElement != null)
                {
                    currentElement = currentElement.NextElement;
                }

                returnVal = currentElement.NextElement.Data;
                currentElement.NextElement = null;
            }
            else
            {
                returnVal    = currentElement.Data;
                FirstElement = null;
            }

            return(returnVal);
        }