def METHOD_NAME(self, sf, child, parents=[]):
    child_type = child["attributes"]["type"]
    child_desc = sf.__getattr__(child_type).describe()
    child_type_map = dict((f["name"], f["type"]) for f in child_desc["fields"])
    columns = []
    for key in child.keys():
        if key != "attributes":
            if isinstance(child[key], OrderedDict) and "attributes" in child[key]:
                columns.extend(self.METHOD_NAME(sf, child[key], parents + [key]))
            else:
                column_name = self._get_column_name(key, parents)
                key_type = child_type_map.get(key, "string")
                column_type = TYPES_MAP.get(key_type, TYPE_STRING)
                columns.append((column_name, column_type))
    return columns