code: def get_list_of_concatenated_objects(obj, dot_separated_name,
                                       lst=None):
      
      from textx.scoping import Postponed
      if lst is None:
          lst = []
      if not obj:
          return lst
      if obj in lst:
          return lst
      lst.append(obj)
      if type(obj) is Postponed:
          return lst
      ret = get_referenced_object(None, obj, dot_separated_name)
      if type(ret) is list:
          for r in ret:
              lst = get_list_of_concatenated_objects(r, dot_separated_name, lst)
      else:
          lst = get_list_of_concatenated_objects(ret, dot_separated_name, lst)
      return lst
docs: 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
  
      Args:
          obj: the starting point
          dot_separated_name: "the search path" (applied recursively)
          lst: the initial list (e.g. [])
  
      Returns:
          the filled list (if one single object is requested, a list with one
          entry is returned).