Because of this, Query objects are the primary method of communication between Model classes
and backend data sources. This helps to keep APIs abstract and flexible, since a model is only
required to call a single method against its backend. Since the Query object simply acts as a
structured data container, each backend can choose how to operate on the data the Query
contains. See each class method for more details on what data this class supports.