A thread-safe, unmodifiable list that reads entities once they are accessed from an underlying database cursor. Make
sure to close the list once you are done with it. The lazy list can be cached or not. Cached lazy lists store the
entities in memory to avoid loading entities more than once. Some features of the list are limited to cached lists
(e.g. features that require the entire list). Cached lists close the cursor automatically once you queried all
entities. However, to avoid leaked cursors, you should not rely on this behavior: if an exception occurs before the
entire list is read, you should close the lazy list (and thus the underlying cursor) on your own to be on the safe
side.