method remaining =
    if should_fail then 0 else
      if buffering && self#length <= bufferize then 0 else
        Generator.remaining generator