code: def data(self):
          
          entity_count = 0
          data = {'group': [], 'indicator': []}
          # process group data
          group_data, entity_count = self.data_groups(self.groups, entity_count)
          data['group'].extend(group_data)
          if entity_count >= self._batch_max_chunk:
              return data
          group_data, entity_count = self.data_groups(self.groups_shelf, entity_count)
          data['group'].extend(group_data)
          if entity_count >= self._batch_max_chunk:
              return data
  
          # process indicator data
          indicator_data, entity_count = self.data_indicators(self.indicators, entity_count)
          data['indicator'].extend(indicator_data)
          if entity_count >= self._batch_max_chunk:
              return data
          indicator_data, entity_count = self.data_indicators(self.indicators_shelf, entity_count)
          data['indicator'].extend(indicator_data)
          if entity_count >= self._batch_max_chunk:
              return data
          return data
docs: Return the batch data to be sent to the ThreatConnect API.
  
          **Processing Order:**
          * Process groups in memory up to max batch size.
          * Process groups in shelf to max batch size.
          * Process indicators in memory up to max batch size.
          * Process indicators in shelf up to max batch size.
  
          This method will remove the group/indicator from memory and/or shelf.