def METHOD_NAME(self, propstat=propstat):
    # DAV helper method - return one or more propstat elements
    # indicating property names and values for all properties.
    result = []
    for item in self._propertyMap():
        name, type = item['id'], item.get('type', 'string')
        value = self.getProperty(name)
        if type == 'tokens':
            value = ' '.join([xml_escape(x) for x in value])
        elif type == 'lines':
            value = '\n'.join([xml_escape(x) for x in value])
        # check for xml property
        attrs = item.get('meta', {}).get('__xml_attrs__', None)
        if attrs is not None:
            # It's a xml property. Don't escape value.
            attrs = ''.join(' %s="%s"' % n for n in attrs.items())
        else:
            # It's a non-xml property. Escape value.
            attrs = ''
            if not hasattr(self, "dav__" + name):
                value = xml_escape(value)
        prop = f'  <n:{name}{attrs}>{value}</n:{name}>'
        result.append(prop)
    if not result:
        return ''
    result = '\n'.join(result)
    return propstat % (self.xml_namespace(), result, '200 OK', '')