code: def get_removals_int_oxid(self):
          
  
          # the elements that can possibly be oxidized
          oxid_els = [Element(spec.symbol) for spec in self.comp if
                      is_redox_active_intercalation(spec)]
  
          numa = set()
          for oxid_el in oxid_els:
              numa = numa.union(self._get_int_removals_helper(self.comp.copy(), oxid_el, oxid_els, numa))
  
          # convert from num A in structure to num A removed
          num_cation = self.comp[Specie(self.cation.symbol, self.cation_charge)]
          return set([num_cation - a for a in numa])
docs: Returns a set of delithiation steps, e.g. set([1.0 2.0 4.0]) etc. in order to
          produce integer oxidation states of the redox metals.
          If multiple redox metals are present, all combinations of reduction/oxidation are tested.
          Note that having more than 3 redox metals will likely slow down the algorithm.
  
          Examples:
              LiFePO4 will return [1.0]
              Li4Fe3Mn1(PO4)4 will return [1.0, 2.0, 3.0, 4.0])
              Li6V4(PO4)6 will return [4.0, 6.0])  *note that this example is not normalized*
  
          Returns:
              array of integer cation removals. If you double the unit cell, your answers will be twice as large!