@@ -0,0 +1,913 @@
+package pulley.transforms;%0A%0Aimport pulley.AbstractStreamPromise;%0Aimport pulley.Cons;%0Aimport pulley.F;%0Aimport pulley.F1;%0Aimport pulley.Promise;%0Aimport pulley.Stream;%0Aimport pulley.Transformer;%0Aimport pulley.util.Optional;%0A%0Apublic class Map %7B%0A%0A    public static %3CT, R%3E Stream%3CR%3E map(Stream%3CT%3E stream, final F1%3C? super T, ? extends R%3E f) %7B%0A        final F1%3COptional%3CCons%3CT%3E%3E, Optional%3CCons%3CR%3E%3E%3E g = F.optional(F.cons(f));%0A        Transformer%3CT, R%3E transformer = new Transformer%3CT, R%3E() %7B%0A            @Override%0A            public AbstractStreamPromise%3CT, R%3E transform(final Promise%3COptional%3CCons%3CT%3E%3E%3E p) %7B%0A                return new AbstractStreamPromise%3CT, R%3E(p) %7B%0A                    @Override%0A                    public Optional%3CCons%3CR%3E%3E get() %7B%0A                        return g.call(p.get());%0A                    %7D%0A                %7D;%0A            %7D%0A        %7D;%0A        return stream.transform(transformer);%0A    %7D%0A%7D%0A

use AbstractStreamPromise