'The QueryFieldList builder
:param fields: A list of fields used in `.only()` or `.exclude()`
:param value: How to handle the fields; either `ONLY` or `EXCLUDE`
:param always_include: Any fields to always_include eg `_cls`
:param _only_called: Has `.only()` been called?  If so its a set of fields
otherwise it performs a union.'

def __init__(self, fields=None, value=ONLY, always_include=None, _only_called=False):

    self.value = value
    self.fields = set((fields or []))
    self.always_include = set((always_include or []))
    self._id = None
    self._only_called = _only_called
    self.slice = {}
