         }
 
         /**
+         * Set last item
+         * @param item
+         */
+        public function set last(item:*):void
+        {
+            source[source.length - 1] = item;
+        }
+
+        /**
          * Returns first item in Stream
          * Equivalent to expression: stream[0]
          */

            }

            throw new Error();

            return null;
        }

        public function foldLeft(callback:Function, initial:*):*

            return source.length > 0 ? source[0] : null;
        }

        /**
         * Set first item
         * @param item
         */
        public function set first(item:*):void
        {
            source[0] = item;
        }

        public function fold(...rest):*
        {
            if (rest.length == 0)
