@java.lang.Override
  public int hashCode() {
    if (memoizedHashCode != 0) {
      return memoizedHashCode;
    }
    int hash = 41;
    hash = (19 * hash) + getDescriptor().hashCode();
    hash = (37 * hash) + NAME_FIELD_NUMBER;
    hash = (53 * hash) + getName().hashCode();
    hash = (37 * hash) + DISPLAY_NAME_FIELD_NUMBER;
    hash = (53 * hash) + getDisplayName().hashCode();
    hash = (37 * hash) + DESCRIPTION_FIELD_NUMBER;
    hash = (53 * hash) + getDescription().hashCode();
    hash = (37 * hash) + PRODUCT_CATEGORY_FIELD_NUMBER;
    hash = (53 * hash) + getProductCategory().hashCode();
    if (getProductLabelsCount() > 0) {
      hash = (37 * hash) + PRODUCT_LABELS_FIELD_NUMBER;
      hash = (53 * hash) + getProductLabelsList().hashCode();
    }
    hash = (29 * hash) + getUnknownFields().hashCode();
    memoizedHashCode = hash;
    return hash;
  }
<pre>
Key-value pairs that can be attached to a product. At query time,
constraints can be specified based on the product_labels.

Note that integer values can be provided as strings, e.g. "1199". Only
strings with integer values can match a range-based restriction which is
to be supported soon.

Multiple values can be assigned to the same key. One product may have up to
500 product_labels.

Notice that the total number of distinct product_labels over all products
in one ProductSet cannot exceed 1M, otherwise the product search pipeline
will refuse to work for that ProductSet.
</pre>

<code>repeated .google.cloud.vision.v1p4beta1.Product.KeyValue product_labels = 5;</code>
java-vision/proto-google-cloud-vision-v1p4beta1/src/main/java/com/google/cloud/vision/v1p4beta1/Product.java