def dumpDict(self, strict=True, validate=True):
    d = {}
    if validate:
        (information, warnings, critical) = self.validate(strict=strict)
        if critical:
            raise ValueError(critical[0])
    for key in list(self._content.keys()):
        if (self.discardThisKey(key) is False):
            attr = getattr(self, key)
            if (((key in self._structure) and self._structure[key][1]) or attr or (hasattr(attr, 'isSet') and attr.isSet())):
                if hasattr(attr, 'dumpDict'):
                    d[key] = attr.dumpDict(strict=strict, validate=validate)
                elif issubclass(attr.__class__, ListProxy):
                    d[key] = list(attr)
                    if ((len(d[key]) > 0) and hasattr(d[key][0], 'dumpDict')):
                        d[key] = [x.dumpDict(strict=strict, validate=validate) for x in d[key]]
                else:
                    d[key] = attr
    return d
def dumpDict(self, strict=True, validate=True):
    d = {}
    if validate:
        (information, warnings, critical) = self.validate(strict=strict)
        if critical:
            raise ValueError(critical[0])
    for key in list(self._content.keys()):
        if (self.discardThisKey(key) is False):
            attr = getattr(self, key)
            if (((key in self._structure) and self._structure[key][1]) or attr or (hasattr(attr, 'isSet') and attr.isSet())):
                if hasattr(attr, 'dumpDict'):
                    d[key] = attr.dumpDict(strict=strict, validate=validate)
                elif issubclass(attr.__class__, ListProxy):
                    d[key] = list(attr)
                    if ((len(d[key]) > 0) and hasattr(d[key][0], 'dumpDict')):
                        d[key] = [x.dumpDict(strict=strict, validate=validate) for x in d[key]]
                else:
                    d[key] = attr
    return d