code: func Compare(pId, pId2 Implementation) int {
  
  	var b1, b2 = []byte(Nil), []byte(Nil)
  
  	if pId != nil {
  		b1 = pId.Bytes()
  	}
  
  	if pId2 != nil {
  		b2 = pId2.Bytes()
  	}
  
  	// Compare the time low bytes
  	tl1 := binary.BigEndian.Uint32(b1[:4])
  	tl2 := binary.BigEndian.Uint32(b2[:4])
  
  	if tl1 != tl2 {
  		if tl1 < tl2 {
  			return -1
  		}
  		return 1
  	}
  
  	// Compare the time hi and ver bytes
  	m1 := binary.BigEndian.Uint16(b1[4:6])
  	m2 := binary.BigEndian.Uint16(b2[4:6])
  
  	if m1 != m2 {
  		if m1 < m2 {
  			return -1
  		}
  		return 1
  	}
  
  	// Compare the sequence and version
  	m1 = binary.BigEndian.Uint16(b1[6:8])
  	m2 = binary.BigEndian.Uint16(b2[6:8])
  
  	if m1 != m2 {
  		if m1 < m2 {
  			return -1
  		}
  		return 1
  	}
  
  	// Compare the node id
  	return bytes.Compare(b1[8:], b2[8:])
  }
docs: // Compare returns an integer comparing two Implementation UUIDs
  // lexicographically.
  // The result will be 0 if pId==pId2, -1 if pId < pId2, and +1 if pId > pId2.
  // A nil argument is equivalent to the Nil Immutable UUID.