code: def data_group_association(self, xid):
          
          groups = []
          group_data = None
  
          # get group data from one of the arrays
          if self.groups.get(xid) is not None:
              group_data = self.groups.get(xid)
              del self.groups[xid]
          elif self.groups_shelf.get(xid) is not None:
              group_data = self.groups_shelf.get(xid)
              del self.groups_shelf[xid]
  
          if group_data is not None:
              # convert any obj into dict and process file data
              group_data = self.data_group_type(group_data)
              groups.append(group_data)
  
              # recursively get associations
              for assoc_xid in group_data.get('associatedGroupXid', []):
                  groups.extend(self.data_group_association(assoc_xid))
  
          return groups
docs: Return group dict array following all associations.
  
          Args:
              xid (str): The xid of the group to retrieve associations.
  
          Returns:
              list: A list of group dicts.