'Create a hierarchy of OrderedDicts containing the data from
this view, recursively reifying all views to get their
represented values.
If `redact` is set, then sensitive values are replaced with
the string "REDACTED".'

def flatten(self, redact=False):

    od = OrderedDict()
    for (key, view) in self.items():
        if (redact and view.redact):
            od[key] = REDACTED_TOMBSTONE
        else:
            try:
                od[key] = view.flatten(redact=redact)
            except ConfigTypeError:
                od[key] = view.get()
    return od
