code: func equals(a, b interface{}) bool {
  	sameType := reflect.TypeOf(a) == reflect.TypeOf(b)
  	if _, ok := a.([]byte); ok {
  		if _, ok := b.([]byte); !ok {
  			// panic(fmt.Sprintf("incomparable type: %v vs %v", a, b))
  			return false
  		}
  		b1 := a.([]byte)
  		b2 := b.([]byte)
  		if len(b1) != len(b2) {
  			return false
  		}
  		for i := 0; i < len(b1) && i < len(b2); i++ {
  			if b1[i] != b2[i] {
  				return false
  			}
  		}
  		return true
  	} else if _, ok := a.(int64); ok {
  		if _, ok := b.(int64); !ok {
  			// panic(fmt.Sprintf("incomparable type: %v vs %v", a, b))
  			return false
  		}
  		return a.(int64) == b.(int64)
  	} else if a == nil && b == nil {
  		return true
  	} else if sameType && a == b {
  		return true
  	}
  	return false
  }
docs: // Since Go doesn't has Java's Object.equals() method,
  // I have to implement my own.