def acquire(self, key):
        """Return the known information about the device and mark the record
        as being used by a segmenation state machine."""
        if _debug: DeviceInfoCache._debug("acquire %r", key)

        if isinstance(key, int):
            device_info = self.cache.get(key, None)

        elif not isinstance(key, Address):
            raise TypeError("key must be integer or an address")

        elif key.addrType not in (Address.localStationAddr, Address.remoteStationAddr):
            raise TypeError("address must be a local or remote station")

        else:
            device_info = self.cache.get(key, None)

        if device_info:
            if _debug: DeviceInfoCache._debug("    - reference bump")
            device_info._ref_count += 1

        if _debug: DeviceInfoCache._debug("    - device_info: %r", device_info)

        return device_info
Return the known information about the device and mark the record
        as being used by a segmenation state machine.