code: def _indicator(self, indicator_data):
          
          if isinstance(indicator_data, dict):
              # get xid from dict
              xid = indicator_data.get('xid')
          else:
              # get xid from object
              xid = indicator_data.xid
  
          if self.indicators.get(xid) is not None:
              # return existing indicator from memory
              indicator_data = self.indicators.get(xid)
          elif self.indicators_shelf.get(xid) is not None:
              # return existing indicator from shelf
              indicator_data = self.indicators_shelf.get(xid)
          else:
              # store new indicators
              self.indicators[xid] = indicator_data
          return indicator_data
docs: Return previously stored indicator or new indicator.
  
          Args:
              indicator_data (dict|obj): An Indicator dict or instance of Indicator object.
  
          Returns:
              dict|obj: The new Indicator dict/object or the previously stored dict/object.