There has been some more debates about this. The main issue is that the data which says 'this collection has been fetched' is only information in the context of the code which did the fetching. Because if you then use the object in some other fetch code, the data has no meaning afterwards.
So, you do know if there's been fetching performed, as you executed the code. If the collection then is empty: you do know what it means: there weren't any rows.
It's not as simple as it looks: A fetch could have been performed with a complex filter which did resolve into 0 rows. You therefore can't conclude afterwards in ANOTHER routine 'oh, this collection has been fetched already', because the filter you'll be using THERE might be different and might be result in 1 or more rows.