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