code: void handle(final IGPSObject object) {
  		if (object instanceof TPVObject) {
  			for (final IObjectListener l : this.listeners) {
  				l.handleTPV((TPVObject) object);
  			}
  		} else if (object instanceof SKYObject) {
  			for (final IObjectListener l : this.listeners) {
  				l.handleSKY((SKYObject) object);
  			}
  		} else if (object instanceof ATTObject) {
  			for (final IObjectListener l : this.listeners) {
  				l.handleATT((ATTObject) object);
  			}
  		} else if (object instanceof SUBFRAMEObject) {
  			for (final IObjectListener l : this.listeners) {
  				l.handleSUBFRAME((SUBFRAMEObject) object);
  			}
  		} else if (object instanceof DevicesObject) {
  			for (final IObjectListener l : this.listeners) {
  				l.handleDevices((DevicesObject) object);
  			}
  		} else if (object instanceof DeviceObject) {
  			for (final IObjectListener l : this.listeners) {
  				l.handleDevice((DeviceObject) object);
  			}
  		} else {
  			// object was requested, so put it in the response object
  			synchronized (this.asyncWaitMutex) {
  				this.asyncResult = object;
  				this.asyncWaitMutex.notifyAll();
  			}
  		}
  	}
docs: /*
  handle incoming messages and dispatch them