def _slot_in(self, player, cost):
<EOL>to_replace = player<EOL>to_replace_cost = cost<EOL>for roster_slot in self.roster:<EOL><INDENT>if roster_slot.accepts(to_replace):<EOL><INDENT>if roster_slot.occupant is None:<EOL><INDENT>roster_slot.occupant = to_replace<EOL>roster_slot.cost = to_replace_cost<EOL>break<EOL><DEDENT>elif to_replace.value > roster_slot.occupant.value:<EOL><INDENT>replacee = roster_slot.occupant<EOL>replacee_cost = roster_slot.cost<EOL>roster_slot.occupant = to_replace<EOL>roster_slot.cost = to_replace_cost<EOL>to_replace = replacee<EOL>to_replace_cost = replacee_cost<EOL><DEDENT><DEDENT><DEDENT>
:param Player player: player to slot into the owner's current roster. Puts this
    player in the most specific slot that it can occupy, kicking out any lower-value players
    (and finding alternate slots for them) if the slot is occupied. If this player is lower valued than
    that of a player in an occupied slot, finds the next most specific slot and so on.

    This has the side effect of ensuring that the highest value players are on the start rather than the
    bench. It also seems to match how fantasy owners like to order their team.
:param int cost: cost paid for this player