breakLines 
  :: Monad m
  => (Text -> Bool)
  -> Lines m r
  -> Lines m (Lines m r)
{-^ 
Break a stream of lines into two parts, on a line that satisfies the given predicate.
All input lines up to the breaking one will be fully read, and each (not including the breaking one) will be re-'yield'ed.
-}
breakLines p (Lines l) = Lines $ Lines <$> breakLines' p l
breakLines 
  :: Monad m
  => (Text -> Bool)
  -> Lines m r
  -> Lines m (Lines m r)
breakLines p (Lines l) = Lines $ Lines <$> breakLines' p l
breakLines p (Lines l) = Lines $ Lines <$> breakLines' p l