public T PopFirst()
        {
            T returnData = Head.getData();

            Head = Head.getChild();
            Count--;
            return(returnData);
        }
        private Node <T> ReverseRecursiveMethod(Node <T> startingNode)
        {
            if (startingNode == null)
            {
                return(null);
            }

            if (startingNode.getChild() == null)
            {
                return(startingNode);
            }

            Node <T> rest = startingNode.getChild();

            startingNode.setChild(null);

            Node <T> reverseRest = ReverseRecursiveMethod(rest);

            rest.setChild(startingNode);

            return(reverseRest);
        }
        public T[] ToArray()
        {
            T[]      tArray  = new T[Count];
            Node <T> current = Head;

            for (int i = 0; i < Count; i++)
            {
                tArray[i] = current.getData();
                current   = current.getChild();
            }

            return(tArray);
        }
        public void Reverse()
        {
            Node <T> prev    = null;
            Node <T> current = Head;
            Node <T> next;

            while (current != null)
            {
                next = current.getChild();
                current.setChild(prev);
                prev    = current;
                current = next;
            }
            Head = prev;
        }
        public bool Contains(T data)
        {
            Node <T> current = Head;

            while (current != null)
            {
                if (!current.getData().Equals(data))
                {
                    current = current.getChild();
                }
                else
                {
                    return(true);
                }
            }

            return(false);
        }