code: @Override
      public <R2> EitherT<M, L, R2> flatMap(Function<? super R, ? extends Monad<R2, MonadT<M, Either<L, ?>, ?>>> f) {
          return eitherT(melr.flatMap(lr -> lr.match(l -> melr.pure(left(l)),
                                                     r -> f.apply(r).<EitherT<M, L, R2>>coerce().run())));
      }
docs: {@inheritDoc}