@java.lang.Override
  public int hashCode() {
    if (memoizedHashCode != 0) {
      return memoizedHashCode;
    }
    int hash = 41;
    hash = (19 * hash) + getDescriptor().hashCode();
    hash = (37 * hash) + AWS_REGION_FIELD_NUMBER;
    hash = (53 * hash) + getAwsRegion().hashCode();
    hash = (37 * hash) + STATE_FIELD_NUMBER;
    hash = (53 * hash) + state_;
    if (hasError()) {
      hash = (37 * hash) + ERROR_FIELD_NUMBER;
      hash = (53 * hash) + getError().hashCode();
    }
    if (getInventoryTagListCount() > 0) {
      hash = (37 * hash) + INVENTORY_TAG_LIST_FIELD_NUMBER;
      hash = (53 * hash) + getInventoryTagListList().hashCode();
    }
    if (getInventorySecurityGroupNamesCount() > 0) {
      hash = (37 * hash) + INVENTORY_SECURITY_GROUP_NAMES_FIELD_NUMBER;
      hash = (53 * hash) + getInventorySecurityGroupNamesList().hashCode();
    }
    if (!internalGetMigrationResourcesUserTags().getMap().isEmpty()) {
      hash = (37 * hash) + MIGRATION_RESOURCES_USER_TAGS_FIELD_NUMBER;
      hash = (53 * hash) + internalGetMigrationResourcesUserTags().hashCode();
    }
    hash = (37 * hash) + PUBLIC_IP_FIELD_NUMBER;
    hash = (53 * hash) + getPublicIp().hashCode();
    switch (credentialsTypeCase_) {
      case 11:
        hash = (37 * hash) + ACCESS_KEY_CREDS_FIELD_NUMBER;
        hash = (53 * hash) + getAccessKeyCreds().hashCode();
        break;
      case 0:
      default:
    }
    hash = (29 * hash) + getUnknownFields().hashCode();
    memoizedHashCode = hash;
    return hash;
  }
<pre>
Output only. The source's public IP. All communication initiated by this
source will originate from this IP.
</pre>

<code>string public_ip = 9 [(.google.api.field_behavior) = OUTPUT_ONLY];</code>

@return The bytes for publicIp.
java-vmmigration/proto-google-cloud-vmmigration-v1/src/main/java/com/google/cloud/vmmigration/v1/AwsSourceDetails.java