code: func identifiedDecode(src []byte, t Type) (int, ID, error) {
  	total := 0
  
  	// decode header
  	hl, _, rl, err := headerDecode(src, t)
  	total += hl
  	if err != nil {
  		return total, 0, err
  	}
  
  	// check remaining length
  	if rl != 2 {
  		return total, 0, makeError(t, "expected remaining length to be 2")
  	}
  
  	// read packet id
  	packetID := ID(binary.BigEndian.Uint16(src[total:]))
  	total += 2
  
  	// check packet id
  	if !packetID.Valid() {
  		return total, 0, makeError(t, "packet id must be grater than zero")
  	}
  
  	return total, packetID, nil
  }
docs: // decodes an identified packet