def merge_fields(self, co_other):
    for f in CO_FIELDS:
      if f in CodeObject.MERGE_BACKLIST:
        continue
      elif f == 'co_stacksize':
        # We don't recompute the required stacksize, but just get the max from
        # the two code_objects
        self.fields['co_stacksize'] = max(self.fields['co_stacksize'],
                                          getattr(co_other, f))
      elif f == 'co_nlocals':
        self.fields['co_nlocals'] = self.fields['co_nlocals'] \
                                  + getattr(co_other, f)      \
                                  + 1 # for the return value `RETURN_CANARY_NAME`
      elif f == 'co_names':
        for co_name in getattr(co_other, 'co_names'):
          if co_name not in self.fields['co_varnames']:
            self.fields['co_names'] = self.fields['co_names'] + (co_name,)
          else:
            # self.fields['co_varnames'] = self.fields['co_varnames'] + (co_name,)
            self.name_to_fast.add(co_name)
      else:
        # Should only be tuples
        tpl_other = getattr(co_other, f)
        # We need to keep the ordering, as it matters for the formal parameters
        # which are the first...
        for val in tpl_other:
          if val not in self.fields[f]:
            self.fields[f] = self.fields[f] + (val,)

        if f == 'co_varnames' and RETURN_CANARY_NAME not in self.fields[f]:
          self.fields[f] = self.fields[f] + (RETURN_CANARY_NAME,)
Generate the stats using the plugins list periodically
dataset/ETHPy150Open neuroo/equip/equip/rewriter/merger.py/CodeObject.merge_fields--crossover with--dataset/ETHPy150Open black-perl/ptop/ptop/statistics/statistics.py/Statistics.generate