A method to be implemented by concrete `Collection` classes which, provided a reference to a backend data source, and a resource representing a query result cursor, fetches new result data and wraps it in the appropriate object type, which is added into the `Collection` and returned.
- mixed $data Data (in an array or object) that is manually added to the data collection. If `null`, data is automatically fetched from the associated backend data source, if available.
- mixed $key String, integer or array key representing the unique key of the data object. If `null`, the key will be extracted from the data passed or fetched, using the associated `Model` class.
Returnsobject Returns a `Record` or `Document` object, or other `Entity` object.
abstract protected function _populate($data = null, $key = null);