# File lib/osxwatcher.rb, line 12
    def start
      prime
      timestamp_checked

      dirs = Array(directories.map{|d| d.dir})
      
      mac_callback = lambda do |stream, ctx, num_events, paths, marks, event_ids|
        examine
        # changed_files = extract_changed_files_from_paths(split_paths(paths, num_events))
        # timestamp_checked
        # puts "changed files:"
        # p changed_files
        # yield changed_files unless changed_files.empty?
      end

      @stream = OSX::FSEventStreamCreate(OSX::KCFAllocatorDefault, mac_callback, nil, dirs, OSX::KFSEventStreamEventIdSinceNow, @sleep_time, 0)
      raise "Failed to create stream" unless stream

      OSX::FSEventStreamScheduleWithRunLoop(stream, OSX::CFRunLoopGetCurrent(), OSX::KCFRunLoopDefaultMode)
      unless OSX::FSEventStreamStart(stream)
        raise "Failed to start stream"
      end

      @thread = Thread.new do
        begin
          OSX::CFRunLoopRun()
        rescue Interrupt
          OSX::FSEventStreamStop(stream)
          OSX::FSEventStreamInvalidate(stream)
          OSX::FSEventStreamRelease(stream)
          @stream = nil
        end
      end

      @thread.priority = @priority
    end