code: func GetID(pkt Generic) (ID, bool) {
  	switch pkt.Type() {
  	case PUBLISH:
  		return pkt.(*Publish).ID, true
  	case PUBACK:
  		return pkt.(*Puback).ID, true
  	case PUBREC:
  		return pkt.(*Pubrec).ID, true
  	case PUBREL:
  		return pkt.(*Pubrel).ID, true
  	case PUBCOMP:
  		return pkt.(*Pubcomp).ID, true
  	case SUBSCRIBE:
  		return pkt.(*Subscribe).ID, true
  	case SUBACK:
  		return pkt.(*Suback).ID, true
  	case UNSUBSCRIBE:
  		return pkt.(*Unsubscribe).ID, true
  	case UNSUBACK:
  		return pkt.(*Unsuback).ID, true
  	}
  
  	return 0, false
  }
docs: // GetID checks the packets type and returns its ID and true, or if it
  // does not have a ID, zero and false.