You are an expert in writing code in many different languages. Your goal is to perform code completion for the following code, keeping in mind the rest of the code and the file meta data.
    Metadata details:
    filename: support_operations.rb
    path of file: ./repos/mongo-ruby-driver/spec/runners/unified
    
    the code of the file until where you have to start completion: # frozen_string_literal: true
# rubocop:todo all

module Unified

  module SupportOperations

    def run_command(op)
      database = entities.get(:database, op.use!('object'))

      use_arguments(op) do |args|
        args.use!('commandName')

        cmd = args.use!('command')

        opts = {}
        if session = args.use('session')
          opts[:session] = entities.get(:session, session)
        e
    
    def assert_event_count(op)
      consume_test_runner(op)
      use_arguments(op) do |args|
        client = entities.get(:client, args.use!('client'))
        subscriber = @subscribers.fetch(client)
        event = args.use!('event')
        assert_eq(event.keys.length, 1, "Expected event must have one key: #{event}")
        count = args.use!('count')

        events = select_events(subscriber, event)
        if %w(serverDescriptionChangedEvent poolClearedEvent).include?(event.keys.first)
          # We publish SDAM events from both regular and push monitors.
          # This means sometimes there are two ServerMarkedUnknownEvent
          # events published for the same server transition.
          # Allow actual event count to be at least the expected event count
          # in case there are multiple transitions in a single test.
          assert_gte(events.length, count, "Expected event #{event} to occur #{count} times but received it #{events.length} times.")
        else
          assert_eq(events.length, count, "Expected event #{event} to occur #{count} times but received it #{events.length} times.")
        end
      end