def METHOD_NAME(def_obj, path_to_extension):
    """
    get a list of the objects consisting of
    - obj
    - obj+"."+dot_separated_name
    - (obj+"."+dot_separated_name)+"."+dot_separated_name (called recursively)
    Note: lists are expanded
    Note: this function can be used to find a class-like object and
    all its base classes (if your DSL model class-like objects).
    Args:
        obj: the starting point
        dot_separated_name: "the search path" (applied recursively)
        lst: the initial list (e.g. [])
    Returns:
        the list of objects (if one single object is requested, a list with one
        entry is returned).
    """
    from textx.scoping import Postponed
    def_objs = []
    assert def_obj is not None
    def rec_walk(obj_or_list):
        if (obj_or_list is not None):
            if not isinstance(obj_or_list, list):
                obj_or_list = [obj_or_list]
            for o in obj_or_list:
                def_objs.append(o)
            for o in obj_or_list:
                if type(o) is not Postponed:
                    rec_walk(resolve_model_path(o, path_to_extension))
    rec_walk(def_obj)
    return def_objs