code: def combining_setup(self):
          
          (slot_type, (corner_slot, edge_slot), (corner, edge)) = self.get_slot()
          cycle = ["FR", "RB", "BL", "LF"]
          if slot_type == "SLOTFREE":
              return ("FR", Formula(Step("y") * cycle.index(self.pair) or []))
          elif slot_type == "CSLOTFREE":
              return (cycle[-(cycle.index(edge_slot) - cycle.index(self.pair))], 
                      Formula(Step("y") * cycle.index(edge_slot) or [])) 
          elif slot_type in ("ESLOTFREE", "WRONGSLOT"):
              return (cycle[-(cycle.index(corner_slot) - cycle.index(self.pair))], 
                      Formula(Step("y") * cycle.index(corner_slot) or [])) 
          elif slot_type == "DIFFSLOT":
              if corner_slot != self.pair: corner_slot, edge_slot = edge_slot, corner_slot
              result = Formula(Step("y") * cycle.index(edge_slot) or [])
              result += Formula("R U R'")
              result += Formula(Step("y'") * cycle.index(edge_slot) or [])
              result += Formula(Step("y") * cycle.index(corner_slot) or [])
              if result[-1].face == "y" and result[-2].face == "y":
                  result[-2] += result[-1]
                  del result[-1]
              return (cycle[-(cycle.index(corner_slot) - cycle.index(self.pair))], result)
          else:
              return (cycle[-cycle.index(self.pair)], Formula())
docs: Setup for some special F2L cases.