test_class.declarator: i = 0
test_class.original_string: int i = 0;
test_class.type: int
test_class.var_name: i
test_class.file: cyclops-pure/src/test/java/cyclops/free/CofreeTest.java
test_class.identifier: CofreeTest
test_case.body: @Test
      public void unfold(){
          Cofree<identity, Integer>  unfolding = Cofree.unfold(functor(), i, next->{ i++; return Identity.of(next + 1);});
          assertThat(i,equalTo(0));
          Higher<identity, Cofree<identity, Integer>> next = unfolding.tailForced();
          assertThat(i,equalTo(1));
          Identity<Cofree<identity, Integer>> cof = Identity.narrowK(next);
          cof.map(c->c.tailForced());
          assertThat(i,equalTo(2));
      }
test_case.class_method_signature: CofreeTest.unfold()
test_case.full_signature: @Test public void unfold()
test_case.identifier: unfold
test_case.invocations: unfold functor of assertThat equalTo tailForced assertThat equalTo narrowK map tailForced assertThat equalTo
test_case.modifiers: @Test public
test_case.parameters: ()
test_case.return: void
test_case.signature: void unfold()
focal_class.declarator: functor
focal_class.modifier: private final
focal_class.original_string: private final Functor<W> functor;
focal_class.type: Functor<W>
focal_class.var_name: functor
focal_class.declarator: head
focal_class.modifier: private final
focal_class.original_string: private final T head;
focal_class.type: T
focal_class.var_name: head
focal_class.declarator: tail
focal_class.modifier: private final
focal_class.original_string: private final Eval<Higher<W, Cofree<W, T>>> tail;
focal_class.type: Eval<Higher<W, Cofree<W, T>>>
focal_class.var_name: tail
focal_class.file: cyclops-pure/src/main/java/cyclops/free/Cofree.java
focal_class.identifier: Cofree
focal_class.interfaces: implements Supplier<T>, Higher2<cofree,W,T>
focal_class.class_method_signature: Cofree.of(Functor<W> functor, T head, Eval<Higher<W, Cofree<W, T>>> tail)
focal_class.full_signature: public static Cofree<W,T> of(Functor<W> functor, T head, Eval<Higher<W, Cofree<W, T>>> tail)
focal_class.identifier: of
focal_class.modifiers: public static
focal_class.parameters: (Functor<W> functor, T head, Eval<Higher<W, Cofree<W, T>>> tail)
focal_class.return: Cofree<W,T>
focal_class.signature: Cofree<W,T> of(Functor<W> functor, T head, Eval<Higher<W, Cofree<W, T>>> tail)
focal_class.class_method_signature: Cofree.tailForced()
focal_class.full_signature: public Higher<W, Cofree<W, T>> tailForced()
focal_class.identifier: tailForced
focal_class.modifiers: public
focal_class.parameters: ()
focal_class.return: Higher<W, Cofree<W, T>>
focal_class.signature: Higher<W, Cofree<W, T>> tailForced()
focal_class.class_method_signature: Cofree.map(Function<? super T,? extends R> f)
focal_class.full_signature: public Cofree<W,R> map(Function<? super T,? extends R> f)
focal_class.identifier: map
focal_class.modifiers: public
focal_class.parameters: (Function<? super T,? extends R> f)
focal_class.return: Cofree<W,R>
focal_class.signature: Cofree<W,R> map(Function<? super T,? extends R> f)
focal_class.class_method_signature: Cofree.coflatMap(Function<? super Cofree<W, T>,? extends  R> f)
focal_class.full_signature: public Cofree<W, R> coflatMap(Function<? super Cofree<W, T>,? extends  R> f)
focal_class.identifier: coflatMap
focal_class.modifiers: public
focal_class.parameters: (Function<? super Cofree<W, T>,? extends  R> f)
focal_class.return: Cofree<W, R>
focal_class.signature: Cofree<W, R> coflatMap(Function<? super Cofree<W, T>,? extends  R> f)
focal_class.class_method_signature: Cofree.nest()
focal_class.full_signature: public Cofree<W, Cofree<W, T>> nest()
focal_class.identifier: nest
focal_class.modifiers: public
focal_class.parameters: ()
focal_class.return: Cofree<W, Cofree<W, T>>
focal_class.signature: Cofree<W, Cofree<W, T>> nest()
focal_class.class_method_signature: Cofree.transform(Function<? super T,? extends R> f, Function<Cofree<W, T>,Cofree<W, R>> g)
focal_class.full_signature: public Cofree<W, R> transform(Function<? super T,? extends R> f, Function<Cofree<W, T>,Cofree<W, R>> g)
focal_class.identifier: transform
focal_class.modifiers: public
focal_class.parameters: (Function<? super T,? extends R> f, Function<Cofree<W, T>,Cofree<W, R>> g)
focal_class.return: Cofree<W, R>
focal_class.signature: Cofree<W, R> transform(Function<? super T,? extends R> f, Function<Cofree<W, T>,Cofree<W, R>> g)
focal_class.class_method_signature: Cofree.mapBranchingRoot(NaturalTransformation<W, W> nat)
focal_class.full_signature: public Cofree<W, T> mapBranchingRoot(NaturalTransformation<W, W> nat)
focal_class.identifier: mapBranchingRoot
focal_class.modifiers: public
focal_class.parameters: (NaturalTransformation<W, W> nat)
focal_class.return: Cofree<W, T>
focal_class.signature: Cofree<W, T> mapBranchingRoot(NaturalTransformation<W, W> nat)
focal_class.class_method_signature: Cofree.mapBranchingS(Functor<R> functor,NaturalTransformation<W, R> nat)
focal_class.full_signature: public Cofree<R, T> mapBranchingS(Functor<R> functor,NaturalTransformation<W, R> nat)
focal_class.identifier: mapBranchingS
focal_class.modifiers: public
focal_class.parameters: (Functor<R> functor,NaturalTransformation<W, R> nat)
focal_class.return: Cofree<R, T>
focal_class.signature: Cofree<R, T> mapBranchingS(Functor<R> functor,NaturalTransformation<W, R> nat)
focal_class.class_method_signature: Cofree.mapBranchingT(Functor<R> functor,NaturalTransformation<W, R> nat)
focal_class.full_signature: public Cofree<R, T> mapBranchingT(Functor<R> functor,NaturalTransformation<W, R> nat)
focal_class.identifier: mapBranchingT
focal_class.modifiers: public
focal_class.parameters: (Functor<R> functor,NaturalTransformation<W, R> nat)
focal_class.return: Cofree<R, T>
focal_class.signature: Cofree<R, T> mapBranchingT(Functor<R> functor,NaturalTransformation<W, R> nat)
focal_class.class_method_signature: Cofree.forceTail()
focal_class.full_signature: public Cofree<W, T> forceTail()
focal_class.identifier: forceTail
focal_class.modifiers: public
focal_class.parameters: ()
focal_class.return: Cofree<W, T>
focal_class.signature: Cofree<W, T> forceTail()
focal_class.class_method_signature: Cofree.forceAll()
focal_class.full_signature: public Cofree<W, T> forceAll()
focal_class.identifier: forceAll
focal_class.modifiers: public
focal_class.parameters: ()
focal_class.return: Cofree<W, T>
focal_class.signature: Cofree<W, T> forceAll()
focal_class.class_method_signature: Cofree.extract()
focal_class.full_signature: public T extract()
focal_class.identifier: extract
focal_class.modifiers: public
focal_class.parameters: ()
focal_class.return: T
focal_class.signature: T extract()
focal_class.class_method_signature: Cofree.get()
focal_class.full_signature: public T get()
focal_class.identifier: get
focal_class.modifiers: public
focal_class.parameters: ()
focal_class.return: T
focal_class.signature: T get()
focal_class.class_method_signature: Cofree.fold(Traverse<W> traverse, BiFunction<T, Higher<W, R>,Eval<R>> fn)
focal_class.full_signature: public Eval<R> fold(Traverse<W> traverse, BiFunction<T, Higher<W, R>,Eval<R>> fn)
focal_class.identifier: fold
focal_class.modifiers: public
focal_class.parameters: (Traverse<W> traverse, BiFunction<T, Higher<W, R>,Eval<R>> fn)
focal_class.return: Eval<R>
focal_class.signature: Eval<R> fold(Traverse<W> traverse, BiFunction<T, Higher<W, R>,Eval<R>> fn)
focal_class.class_method_signature: Cofree.visitM(Traverse<W> traverse, Monad<M> monad,BiFunction<? super T,? super Higher<W, R>,Higher<M, R>> fn,
                                        NaturalTransformation<eval, M> inclusion)
focal_class.full_signature: public Higher<M,R> visitM(Traverse<W> traverse, Monad<M> monad,BiFunction<? super T,? super Higher<W, R>,Higher<M, R>> fn,
                                        NaturalTransformation<eval, M> inclusion)
focal_class.identifier: visitM
focal_class.modifiers: public
focal_class.parameters: (Traverse<W> traverse, Monad<M> monad,BiFunction<? super T,? super Higher<W, R>,Higher<M, R>> fn,
                                        NaturalTransformation<eval, M> inclusion)
focal_class.return: Higher<M,R>
focal_class.signature: Higher<M,R> visitM(Traverse<W> traverse, Monad<M> monad,BiFunction<? super T,? super Higher<W, R>,Higher<M, R>> fn,
                                        NaturalTransformation<eval, M> inclusion)
focal_class.class_method_signature: Cofree.unfold(Functor<W> functor,T b, Function<? super T, ? extends Higher<W, T>> fn)
focal_class.full_signature: public static Cofree<W,T> unfold(Functor<W> functor,T b, Function<? super T, ? extends Higher<W, T>> fn)
focal_class.identifier: unfold
focal_class.modifiers: public static
focal_class.parameters: (Functor<W> functor,T b, Function<? super T, ? extends Higher<W, T>> fn)
focal_class.return: Cofree<W,T>
focal_class.signature: Cofree<W,T> unfold(Functor<W> functor,T b, Function<? super T, ? extends Higher<W, T>> fn)
focal_class.class_method_signature: Cofree.narrowK2(final Higher2<cofree, W,T> cof)
focal_class.full_signature: public static Cofree<W,T> narrowK2(final Higher2<cofree, W,T> cof)
focal_class.identifier: narrowK2
focal_class.modifiers: public static
focal_class.parameters: (final Higher2<cofree, W,T> cof)
focal_class.return: Cofree<W,T>
focal_class.signature: Cofree<W,T> narrowK2(final Higher2<cofree, W,T> cof)
focal_class.class_method_signature: Cofree.narrowK(final Higher<Higher<cofree, W>,T> cof)
focal_class.full_signature: public static Cofree<W,T> narrowK(final Higher<Higher<cofree, W>,T> cof)
focal_class.identifier: narrowK
focal_class.modifiers: public static
focal_class.parameters: (final Higher<Higher<cofree, W>,T> cof)
focal_class.return: Cofree<W,T>
focal_class.signature: Cofree<W,T> narrowK(final Higher<Higher<cofree, W>,T> cof)
focal_method.body: public static <W,T> Cofree<W,T> unfold(Functor<W> functor,T b, Function<? super T, ? extends Higher<W, T>> fn) {
              return of(functor, b, Eval.later(() -> functor.map_(fn.apply(b), t -> unfold(functor, t, fn))));
          }
focal_method.class_method_signature: Cofree.unfold(Functor<W> functor,T b, Function<? super T, ? extends Higher<W, T>> fn)
focal_method.full_signature: public static Cofree<W,T> unfold(Functor<W> functor,T b, Function<? super T, ? extends Higher<W, T>> fn)
focal_method.identifier: unfold
focal_method.invocations: of later map_ apply unfold
focal_method.modifiers: public static
focal_method.parameters: (Functor<W> functor,T b, Function<? super T, ? extends Higher<W, T>> fn)
focal_method.return: Cofree<W,T>
focal_method.signature: Cofree<W,T> unfold(Functor<W> functor,T b, Function<? super T, ? extends Higher<W, T>> fn)