public override U FoldRight <U>(Func <T, Func <U, U> > f, U z) { return(_prefix.FoldRight(f, _middle.FoldRight(Flip(Node <T, M> .FoldRight(f)), _suffix.FoldRight(f, z)))); }