':param definition: either a lazyloader or definition id for the definition
:param initial_values: a dictionary of the locally set values
:param default_values: any Scope.settings field defaults that are set locally
(copied from a template block with copy_from_template)'

@contract(parent='BlockUsageLocator    |    None')
def __init__(self, definition, initial_values, default_values, parent, aside_fields=None, field_decorator=None):

    super(SplitMongoKVS, self).__init__(copy.deepcopy(initial_values))
    self._definition = definition
    self._defaults = default_values
    if (field_decorator is None):
        self.field_decorator = (lambda x: x)
    else:
        self.field_decorator = field_decorator
    self.parent = parent
    self.aside_fields = (aside_fields if aside_fields else {})
