          * -------------------------------------------
          */
 
+        /**
+         * Returns <b>true</b> if Stream does not contain any elements,
+         * else returns <b>false</b>.
+         */
         public function get empty():Boolean
         {
             return length == 0;
         }
 
+        /**
+         * Creates new Stream that contains items starting from count index.
+         * @param count number of items to skip
+         * @return new Stream that contains items starting from count index.
+         */
         public function skip(count:int):Stream
         {
             return this.slice(count);
         }
 
+        /**
+         * Returns last item in Stream
+         * Equivalent to expression: stream[stream.length - 1]
+         */
         public function get last():*
         {
             return source.length > 0 ? source[source.length - 1] : null;
         }
 
+        /**
+         * Returns first item in Stream
+         * Equivalent to expression: stream[0]
+         */
         public function get first():*
         {
             return source.length > 0 ? source[0] : null;

            return context;
        }

        public function take(count:int = -1, start:uint = 0):Stream
        {
            return slice(start, start + count);
        }

        public function flatMap(callback:Function = null):Stream

         * -------------------------------------------
         */

        /**
         * Converts the elements in an array to strings,
         * inserts the specified separator between the elements,
         * concatenates them, and returns the resulting string.
         * @param sep used as separator
         * @return A string consisting of the elements of an array converted to strings
         * and separated by the specified parameter.
         */
        public function join(sep:* = null):String
        {
            return source.join(sep);
