# File lib/nio/selector.rb, line 21
    def register(io, interest)
      @lock.synchronize do
        fail IOError, "selector is closed" if closed?

        monitor = @selectables[io]
        fail ArgumentError, "already registered as #{monitor.interests.inspect}" if monitor

        monitor = Monitor.new(io, interest, self)
        @selectables[monitor.io] = monitor

        monitor
      end
    end