def assign_role_to_player!(rolekey, player, extending_ticker:{})
        role_mod = roles[rolekey]
        # puts "  Context: #{self} - assigning role #{rolekey} to #{player}"
        ::DCI::Multiplayer(player).each do |roleplayer|
          if player_already_playing_role_in_this_context?(roleplayer, rolekey)
            extending_ticker.merge!("#{roleplayer.object_id}_#{rolekey}" => false)
          else
            extending_ticker.merge!("#{roleplayer.object_id}_#{rolekey}" => true)
            roleplayer.__play_role!(rolekey, role_mod, self)
          end
        end
        instance_variable_set(:"@#{rolekey}", player)
      end
def assign_role_to_player!(rolekey, player, extending_ticker:{})
        role_mod = roles[rolekey]
        # puts "  Context: #{self} - assigning role #{rolekey} to #{player}"
        ::DCI::Multiplayer(player).each do |roleplayer|
          if player_already_playing_role_in_this_context?(roleplayer, rolekey)
            extending_ticker.merge!("#{roleplayer.object_id}_#{rolekey}" => false)
          else
            extending_ticker.merge!("#{roleplayer.object_id}_#{rolekey}" => true)
            roleplayer.__play_role!(rolekey, role_mod, self)
          end
        end
        instance_variable_set(:"@#{rolekey}", player)
      end
Associates a role to an intended player:
   - The player object is 'extended' with the methods of the role to play.
   - The player get access to the context it is playing.
   - The player get access to the rest of players in its context through instance methods named after their role keys.
   - This context instance get access to this new role player through an instance method named after the role key.