def METHOD_NAME(node):
    if node is None:
        return []
    if isinstance(node,list):
        return node
    if node.kind == CursorKind.FIELD_DECL:
        if node.type.kind == TypeKind.ELABORATED:
            return METHOD_NAME(node.type.get_declaration())
        elif node.type.kind == TypeKind.RECORD:
            return list(c for c in node.type.get_fields())
        elif node.type.kind == TypeKind.CONSTANTARRAY:
            et = node.type.element_type
            if et.kind == TypeKind.RECORD:
                return list(c for c in et.get_fields())
        elif node.type.kind == TypeKind.ENUM:
            return METHOD_NAME(node.type.get_declaration())
        else:
            print("{} {}".format(str(node.type.kind),node.spelling))
    return list(c for c in node.get_children() if filter_node(c))