private void removed (DeviceImpl dev)
    {
        if (MacOSX.trace)
            System.err.println ("notify bus->removed(dev): " + dev.getPath());

        // call synch'd on devices
        try {
            dev.close ();
        } catch (IOException e) {
            // normally ignore
	    if (MacOSX.debug)
                 e.printStackTrace ();
        }
        //in Mac OS X we want to close device (blocking further ctrl msgs) before
        //      calling 'removed' listeners!  Do that in other OS's too?

        // call synch'd on devices
        for (int i = 0; i < listeners.size (); i++) {
            USBListener   listener;
            listener = (USBListener) listeners.elementAt (i);
            try {
                listener.deviceRemoved (dev);
            } catch (Exception e) {
                if (MacOSX.debug)
                    e.printStackTrace ();
            }
        }
    }