Merge branch 'main' into avm99963-monorail

Merged commit cd4b3b336f1f14afa02990fdc2eec5d9467a827e

GitOrigin-RevId: e67bbf185d5538e1472bb42e0abb2a141f88bac1
diff --git a/api/api_proto/features_pb2.py b/api/api_proto/features_pb2.py
index c415a35..bfb954f 100644
--- a/api/api_proto/features_pb2.py
+++ b/api/api_proto/features_pb2.py
@@ -1,8 +1,7 @@
+# -*- coding: utf-8 -*-
 # Generated by the protocol buffer compiler.  DO NOT EDIT!
 # source: api/api_proto/features.proto
-
-import sys
-_b=sys.version_info[0]<3 and (lambda x:x) or (lambda x:x.encode('latin1'))
+"""Generated protocol buffer code."""
 from google.protobuf import descriptor as _descriptor
 from google.protobuf import message as _message
 from google.protobuf import reflection as _reflection
@@ -20,8 +19,9 @@
   name='api/api_proto/features.proto',
   package='monorail',
   syntax='proto3',
-  serialized_options=None,
-  serialized_pb=_b('\n\x1c\x61pi/api_proto/features.proto\x12\x08monorail\x1a\x1a\x61pi/api_proto/common.proto\x1a$api/api_proto/features_objects.proto\"<\n\x19ListHotlistsByUserRequest\x12\x1f\n\x04user\x18\x02 \x01(\x0b\x32\x11.monorail.UserRef\"A\n\x1aListHotlistsByUserResponse\x12#\n\x08hotlists\x18\x01 \x03(\x0b\x32\x11.monorail.Hotlist\"?\n\x1aListHotlistsByIssueRequest\x12!\n\x05issue\x18\x02 \x01(\x0b\x32\x12.monorail.IssueRef\"B\n\x1bListHotlistsByIssueResponse\x12#\n\x08hotlists\x18\x01 \x03(\x0b\x32\x11.monorail.Hotlist\"$\n\"ListRecentlyVisitedHotlistsRequest\"J\n#ListRecentlyVisitedHotlistsResponse\x12#\n\x08hotlists\x18\x01 \x03(\x0b\x32\x11.monorail.Hotlist\"\x1c\n\x1aListStarredHotlistsRequest\"B\n\x1bListStarredHotlistsResponse\x12#\n\x08hotlists\x18\x01 \x03(\x0b\x32\x11.monorail.Hotlist\"G\n\x1aGetHotlistStarCountRequest\x12)\n\x0bhotlist_ref\x18\x02 \x01(\x0b\x32\x14.monorail.HotlistRef\"1\n\x1bGetHotlistStarCountResponse\x12\x12\n\nstar_count\x18\x01 \x01(\r\"P\n\x12StarHotlistRequest\x12)\n\x0bhotlist_ref\x18\x02 \x01(\x0b\x32\x14.monorail.HotlistRef\x12\x0f\n\x07starred\x18\x03 \x01(\x08\")\n\x13StarHotlistResponse\x12\x12\n\nstar_count\x18\x01 \x01(\r\">\n\x11GetHotlistRequest\x12)\n\x0bhotlist_ref\x18\x01 \x01(\x0b\x32\x14.monorail.HotlistRef\"8\n\x12GetHotlistResponse\x12\"\n\x07hotlist\x18\x01 \x01(\x0b\x32\x11.monorail.Hotlist\"\xa5\x01\n\x17ListHotlistItemsRequest\x12)\n\x0bhotlist_ref\x18\x02 \x01(\x0b\x32\x14.monorail.HotlistRef\x12(\n\npagination\x18\x03 \x01(\x0b\x32\x14.monorail.Pagination\x12\x0b\n\x03\x63\x61n\x18\x04 \x01(\r\x12\x11\n\tsort_spec\x18\x05 \x01(\t\x12\x15\n\rgroup_by_spec\x18\x06 \x01(\t\"@\n\x18ListHotlistItemsResponse\x12$\n\x05items\x18\x01 \x03(\x0b\x32\x15.monorail.HotlistItem\"\xae\x01\n\x14\x43reateHotlistRequest\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\x0f\n\x07summary\x18\x03 \x01(\t\x12\x13\n\x0b\x64\x65scription\x18\x04 \x01(\t\x12&\n\x0b\x65\x64itor_refs\x18\x05 \x03(\x0b\x32\x11.monorail.UserRef\x12&\n\nissue_refs\x18\x06 \x03(\x0b\x32\x12.monorail.IssueRef\x12\x12\n\nis_private\x18\x07 \x01(\x08\"\x17\n\x15\x43reateHotlistResponse\"\'\n\x17\x43heckHotlistNameRequest\x12\x0c\n\x04name\x18\x02 \x01(\t\")\n\x18\x43heckHotlistNameResponse\x12\r\n\x05\x65rror\x18\x01 \x01(\t\"u\n\x1fRemoveIssuesFromHotlistsRequest\x12*\n\x0chotlist_refs\x18\x02 \x03(\x0b\x32\x14.monorail.HotlistRef\x12&\n\nissue_refs\x18\x03 \x03(\x0b\x32\x12.monorail.IssueRef\"\"\n RemoveIssuesFromHotlistsResponse\"~\n\x1a\x41\x64\x64IssuesToHotlistsRequest\x12*\n\x0chotlist_refs\x18\x02 \x03(\x0b\x32\x14.monorail.HotlistRef\x12&\n\nissue_refs\x18\x03 \x03(\x0b\x32\x12.monorail.IssueRef\x12\x0c\n\x04note\x18\x04 \x01(\t\"\x1d\n\x1b\x41\x64\x64IssuesToHotlistsResponse\"\xac\x01\n\x1aRerankHotlistIssuesRequest\x12)\n\x0bhotlist_ref\x18\x01 \x01(\x0b\x32\x14.monorail.HotlistRef\x12&\n\nmoved_refs\x18\x02 \x03(\x0b\x32\x12.monorail.IssueRef\x12&\n\ntarget_ref\x18\x03 \x01(\x0b\x32\x12.monorail.IssueRef\x12\x13\n\x0bsplit_above\x18\x04 \x01(\x08\"\x1d\n\x1bRerankHotlistIssuesResponse\"\x7f\n\x1dUpdateHotlistIssueNoteRequest\x12)\n\x0bhotlist_ref\x18\x02 \x01(\x0b\x32\x14.monorail.HotlistRef\x12%\n\tissue_ref\x18\x03 \x01(\x0b\x32\x12.monorail.IssueRef\x12\x0c\n\x04note\x18\x04 \x01(\t\" \n\x1eUpdateHotlistIssueNoteResponse\"A\n\x14\x44\x65leteHotlistRequest\x12)\n\x0bhotlist_ref\x18\x01 \x01(\x0b\x32\x14.monorail.HotlistRef\"\x17\n\x15\x44\x65leteHotlistResponse\"=\n\x17PredictComponentRequest\x12\x0c\n\x04text\x18\x02 \x01(\t\x12\x14\n\x0cproject_name\x18\x03 \x01(\t\"I\n\x18PredictComponentResponse\x12-\n\rcomponent_ref\x18\x01 \x01(\x0b\x32\x16.monorail.ComponentRef2\xa5\x0c\n\x08\x46\x65\x61tures\x12\x61\n\x12ListHotlistsByUser\x12#.monorail.ListHotlistsByUserRequest\x1a$.monorail.ListHotlistsByUserResponse\"\x00\x12\x64\n\x13ListHotlistsByIssue\x12$.monorail.ListHotlistsByIssueRequest\x1a%.monorail.ListHotlistsByIssueResponse\"\x00\x12|\n\x1bListRecentlyVisitedHotlists\x12,.monorail.ListRecentlyVisitedHotlistsRequest\x1a-.monorail.ListRecentlyVisitedHotlistsResponse\"\x00\x12\x64\n\x13ListStarredHotlists\x12$.monorail.ListStarredHotlistsRequest\x1a%.monorail.ListStarredHotlistsResponse\"\x00\x12\x64\n\x13GetHotlistStarCount\x12$.monorail.GetHotlistStarCountRequest\x1a%.monorail.GetHotlistStarCountResponse\"\x00\x12L\n\x0bStarHotlist\x12\x1c.monorail.StarHotlistRequest\x1a\x1d.monorail.StarHotlistResponse\"\x00\x12I\n\nGetHotlist\x12\x1b.monorail.GetHotlistRequest\x1a\x1c.monorail.GetHotlistResponse\"\x00\x12[\n\x10ListHotlistItems\x12!.monorail.ListHotlistItemsRequest\x1a\".monorail.ListHotlistItemsResponse\"\x00\x12R\n\rCreateHotlist\x12\x1e.monorail.CreateHotlistRequest\x1a\x1f.monorail.CreateHotlistResponse\"\x00\x12[\n\x10\x43heckHotlistName\x12!.monorail.CheckHotlistNameRequest\x1a\".monorail.CheckHotlistNameResponse\"\x00\x12s\n\x18RemoveIssuesFromHotlists\x12).monorail.RemoveIssuesFromHotlistsRequest\x1a*.monorail.RemoveIssuesFromHotlistsResponse\"\x00\x12\x64\n\x13\x41\x64\x64IssuesToHotlists\x12$.monorail.AddIssuesToHotlistsRequest\x1a%.monorail.AddIssuesToHotlistsResponse\"\x00\x12\x64\n\x13RerankHotlistIssues\x12$.monorail.RerankHotlistIssuesRequest\x1a%.monorail.RerankHotlistIssuesResponse\"\x00\x12m\n\x16UpdateHotlistIssueNote\x12\'.monorail.UpdateHotlistIssueNoteRequest\x1a(.monorail.UpdateHotlistIssueNoteResponse\"\x00\x12R\n\rDeleteHotlist\x12\x1e.monorail.DeleteHotlistRequest\x1a\x1f.monorail.DeleteHotlistResponse\"\x00\x12[\n\x10PredictComponent\x12!.monorail.PredictComponentRequest\x1a\".monorail.PredictComponentResponse\"\x00\x62\x06proto3')
+  serialized_options=b'Z\'infra/monorailv2/api/api_proto;monorail',
+  create_key=_descriptor._internal_create_key,
+  serialized_pb=b'\n\x1c\x61pi/api_proto/features.proto\x12\x08monorail\x1a\x1a\x61pi/api_proto/common.proto\x1a$api/api_proto/features_objects.proto\"<\n\x19ListHotlistsByUserRequest\x12\x1f\n\x04user\x18\x02 \x01(\x0b\x32\x11.monorail.UserRef\"A\n\x1aListHotlistsByUserResponse\x12#\n\x08hotlists\x18\x01 \x03(\x0b\x32\x11.monorail.Hotlist\"?\n\x1aListHotlistsByIssueRequest\x12!\n\x05issue\x18\x02 \x01(\x0b\x32\x12.monorail.IssueRef\"B\n\x1bListHotlistsByIssueResponse\x12#\n\x08hotlists\x18\x01 \x03(\x0b\x32\x11.monorail.Hotlist\"$\n\"ListRecentlyVisitedHotlistsRequest\"J\n#ListRecentlyVisitedHotlistsResponse\x12#\n\x08hotlists\x18\x01 \x03(\x0b\x32\x11.monorail.Hotlist\"\x1c\n\x1aListStarredHotlistsRequest\"B\n\x1bListStarredHotlistsResponse\x12#\n\x08hotlists\x18\x01 \x03(\x0b\x32\x11.monorail.Hotlist\"G\n\x1aGetHotlistStarCountRequest\x12)\n\x0bhotlist_ref\x18\x02 \x01(\x0b\x32\x14.monorail.HotlistRef\"1\n\x1bGetHotlistStarCountResponse\x12\x12\n\nstar_count\x18\x01 \x01(\r\"P\n\x12StarHotlistRequest\x12)\n\x0bhotlist_ref\x18\x02 \x01(\x0b\x32\x14.monorail.HotlistRef\x12\x0f\n\x07starred\x18\x03 \x01(\x08\")\n\x13StarHotlistResponse\x12\x12\n\nstar_count\x18\x01 \x01(\r\">\n\x11GetHotlistRequest\x12)\n\x0bhotlist_ref\x18\x01 \x01(\x0b\x32\x14.monorail.HotlistRef\"8\n\x12GetHotlistResponse\x12\"\n\x07hotlist\x18\x01 \x01(\x0b\x32\x11.monorail.Hotlist\"\xa5\x01\n\x17ListHotlistItemsRequest\x12)\n\x0bhotlist_ref\x18\x02 \x01(\x0b\x32\x14.monorail.HotlistRef\x12(\n\npagination\x18\x03 \x01(\x0b\x32\x14.monorail.Pagination\x12\x0b\n\x03\x63\x61n\x18\x04 \x01(\r\x12\x11\n\tsort_spec\x18\x05 \x01(\t\x12\x15\n\rgroup_by_spec\x18\x06 \x01(\t\"@\n\x18ListHotlistItemsResponse\x12$\n\x05items\x18\x01 \x03(\x0b\x32\x15.monorail.HotlistItem\"\xae\x01\n\x14\x43reateHotlistRequest\x12\x0c\n\x04name\x18\x02 \x01(\t\x12\x0f\n\x07summary\x18\x03 \x01(\t\x12\x13\n\x0b\x64\x65scription\x18\x04 \x01(\t\x12&\n\x0b\x65\x64itor_refs\x18\x05 \x03(\x0b\x32\x11.monorail.UserRef\x12&\n\nissue_refs\x18\x06 \x03(\x0b\x32\x12.monorail.IssueRef\x12\x12\n\nis_private\x18\x07 \x01(\x08\"\x17\n\x15\x43reateHotlistResponse\"\'\n\x17\x43heckHotlistNameRequest\x12\x0c\n\x04name\x18\x02 \x01(\t\")\n\x18\x43heckHotlistNameResponse\x12\r\n\x05\x65rror\x18\x01 \x01(\t\"u\n\x1fRemoveIssuesFromHotlistsRequest\x12*\n\x0chotlist_refs\x18\x02 \x03(\x0b\x32\x14.monorail.HotlistRef\x12&\n\nissue_refs\x18\x03 \x03(\x0b\x32\x12.monorail.IssueRef\"\"\n RemoveIssuesFromHotlistsResponse\"~\n\x1a\x41\x64\x64IssuesToHotlistsRequest\x12*\n\x0chotlist_refs\x18\x02 \x03(\x0b\x32\x14.monorail.HotlistRef\x12&\n\nissue_refs\x18\x03 \x03(\x0b\x32\x12.monorail.IssueRef\x12\x0c\n\x04note\x18\x04 \x01(\t\"\x1d\n\x1b\x41\x64\x64IssuesToHotlistsResponse\"\xac\x01\n\x1aRerankHotlistIssuesRequest\x12)\n\x0bhotlist_ref\x18\x01 \x01(\x0b\x32\x14.monorail.HotlistRef\x12&\n\nmoved_refs\x18\x02 \x03(\x0b\x32\x12.monorail.IssueRef\x12&\n\ntarget_ref\x18\x03 \x01(\x0b\x32\x12.monorail.IssueRef\x12\x13\n\x0bsplit_above\x18\x04 \x01(\x08\"\x1d\n\x1bRerankHotlistIssuesResponse\"\x7f\n\x1dUpdateHotlistIssueNoteRequest\x12)\n\x0bhotlist_ref\x18\x02 \x01(\x0b\x32\x14.monorail.HotlistRef\x12%\n\tissue_ref\x18\x03 \x01(\x0b\x32\x12.monorail.IssueRef\x12\x0c\n\x04note\x18\x04 \x01(\t\" \n\x1eUpdateHotlistIssueNoteResponse\"A\n\x14\x44\x65leteHotlistRequest\x12)\n\x0bhotlist_ref\x18\x01 \x01(\x0b\x32\x14.monorail.HotlistRef\"\x17\n\x15\x44\x65leteHotlistResponse2\xc8\x0b\n\x08\x46\x65\x61tures\x12\x61\n\x12ListHotlistsByUser\x12#.monorail.ListHotlistsByUserRequest\x1a$.monorail.ListHotlistsByUserResponse\"\x00\x12\x64\n\x13ListHotlistsByIssue\x12$.monorail.ListHotlistsByIssueRequest\x1a%.monorail.ListHotlistsByIssueResponse\"\x00\x12|\n\x1bListRecentlyVisitedHotlists\x12,.monorail.ListRecentlyVisitedHotlistsRequest\x1a-.monorail.ListRecentlyVisitedHotlistsResponse\"\x00\x12\x64\n\x13ListStarredHotlists\x12$.monorail.ListStarredHotlistsRequest\x1a%.monorail.ListStarredHotlistsResponse\"\x00\x12\x64\n\x13GetHotlistStarCount\x12$.monorail.GetHotlistStarCountRequest\x1a%.monorail.GetHotlistStarCountResponse\"\x00\x12L\n\x0bStarHotlist\x12\x1c.monorail.StarHotlistRequest\x1a\x1d.monorail.StarHotlistResponse\"\x00\x12I\n\nGetHotlist\x12\x1b.monorail.GetHotlistRequest\x1a\x1c.monorail.GetHotlistResponse\"\x00\x12[\n\x10ListHotlistItems\x12!.monorail.ListHotlistItemsRequest\x1a\".monorail.ListHotlistItemsResponse\"\x00\x12R\n\rCreateHotlist\x12\x1e.monorail.CreateHotlistRequest\x1a\x1f.monorail.CreateHotlistResponse\"\x00\x12[\n\x10\x43heckHotlistName\x12!.monorail.CheckHotlistNameRequest\x1a\".monorail.CheckHotlistNameResponse\"\x00\x12s\n\x18RemoveIssuesFromHotlists\x12).monorail.RemoveIssuesFromHotlistsRequest\x1a*.monorail.RemoveIssuesFromHotlistsResponse\"\x00\x12\x64\n\x13\x41\x64\x64IssuesToHotlists\x12$.monorail.AddIssuesToHotlistsRequest\x1a%.monorail.AddIssuesToHotlistsResponse\"\x00\x12\x64\n\x13RerankHotlistIssues\x12$.monorail.RerankHotlistIssuesRequest\x1a%.monorail.RerankHotlistIssuesResponse\"\x00\x12m\n\x16UpdateHotlistIssueNote\x12\'.monorail.UpdateHotlistIssueNoteRequest\x1a(.monorail.UpdateHotlistIssueNoteResponse\"\x00\x12R\n\rDeleteHotlist\x12\x1e.monorail.DeleteHotlistRequest\x1a\x1f.monorail.DeleteHotlistResponse\"\x00\x42)Z\'infra/monorailv2/api/api_proto;monorailb\x06proto3'
   ,
   dependencies=[api_dot_api__proto_dot_common__pb2.DESCRIPTOR,api_dot_api__proto_dot_features__objects__pb2.DESCRIPTOR,])
 
@@ -34,6 +34,7 @@
   filename=None,
   file=DESCRIPTOR,
   containing_type=None,
+  create_key=_descriptor._internal_create_key,
   fields=[
     _descriptor.FieldDescriptor(
       name='user', full_name='monorail.ListHotlistsByUserRequest.user', index=0,
@@ -41,7 +42,7 @@
       has_default_value=False, default_value=None,
       message_type=None, enum_type=None, containing_type=None,
       is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR),
+      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
   ],
   extensions=[
   ],
@@ -65,6 +66,7 @@
   filename=None,
   file=DESCRIPTOR,
   containing_type=None,
+  create_key=_descriptor._internal_create_key,
   fields=[
     _descriptor.FieldDescriptor(
       name='hotlists', full_name='monorail.ListHotlistsByUserResponse.hotlists', index=0,
@@ -72,7 +74,7 @@
       has_default_value=False, default_value=[],
       message_type=None, enum_type=None, containing_type=None,
       is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR),
+      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
   ],
   extensions=[
   ],
@@ -96,6 +98,7 @@
   filename=None,
   file=DESCRIPTOR,
   containing_type=None,
+  create_key=_descriptor._internal_create_key,
   fields=[
     _descriptor.FieldDescriptor(
       name='issue', full_name='monorail.ListHotlistsByIssueRequest.issue', index=0,
@@ -103,7 +106,7 @@
       has_default_value=False, default_value=None,
       message_type=None, enum_type=None, containing_type=None,
       is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR),
+      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
   ],
   extensions=[
   ],
@@ -127,6 +130,7 @@
   filename=None,
   file=DESCRIPTOR,
   containing_type=None,
+  create_key=_descriptor._internal_create_key,
   fields=[
     _descriptor.FieldDescriptor(
       name='hotlists', full_name='monorail.ListHotlistsByIssueResponse.hotlists', index=0,
@@ -134,7 +138,7 @@
       has_default_value=False, default_value=[],
       message_type=None, enum_type=None, containing_type=None,
       is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR),
+      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
   ],
   extensions=[
   ],
@@ -158,6 +162,7 @@
   filename=None,
   file=DESCRIPTOR,
   containing_type=None,
+  create_key=_descriptor._internal_create_key,
   fields=[
   ],
   extensions=[
@@ -182,6 +187,7 @@
   filename=None,
   file=DESCRIPTOR,
   containing_type=None,
+  create_key=_descriptor._internal_create_key,
   fields=[
     _descriptor.FieldDescriptor(
       name='hotlists', full_name='monorail.ListRecentlyVisitedHotlistsResponse.hotlists', index=0,
@@ -189,7 +195,7 @@
       has_default_value=False, default_value=[],
       message_type=None, enum_type=None, containing_type=None,
       is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR),
+      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
   ],
   extensions=[
   ],
@@ -213,6 +219,7 @@
   filename=None,
   file=DESCRIPTOR,
   containing_type=None,
+  create_key=_descriptor._internal_create_key,
   fields=[
   ],
   extensions=[
@@ -237,6 +244,7 @@
   filename=None,
   file=DESCRIPTOR,
   containing_type=None,
+  create_key=_descriptor._internal_create_key,
   fields=[
     _descriptor.FieldDescriptor(
       name='hotlists', full_name='monorail.ListStarredHotlistsResponse.hotlists', index=0,
@@ -244,7 +252,7 @@
       has_default_value=False, default_value=[],
       message_type=None, enum_type=None, containing_type=None,
       is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR),
+      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
   ],
   extensions=[
   ],
@@ -268,6 +276,7 @@
   filename=None,
   file=DESCRIPTOR,
   containing_type=None,
+  create_key=_descriptor._internal_create_key,
   fields=[
     _descriptor.FieldDescriptor(
       name='hotlist_ref', full_name='monorail.GetHotlistStarCountRequest.hotlist_ref', index=0,
@@ -275,7 +284,7 @@
       has_default_value=False, default_value=None,
       message_type=None, enum_type=None, containing_type=None,
       is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR),
+      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
   ],
   extensions=[
   ],
@@ -299,6 +308,7 @@
   filename=None,
   file=DESCRIPTOR,
   containing_type=None,
+  create_key=_descriptor._internal_create_key,
   fields=[
     _descriptor.FieldDescriptor(
       name='star_count', full_name='monorail.GetHotlistStarCountResponse.star_count', index=0,
@@ -306,7 +316,7 @@
       has_default_value=False, default_value=0,
       message_type=None, enum_type=None, containing_type=None,
       is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR),
+      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
   ],
   extensions=[
   ],
@@ -330,6 +340,7 @@
   filename=None,
   file=DESCRIPTOR,
   containing_type=None,
+  create_key=_descriptor._internal_create_key,
   fields=[
     _descriptor.FieldDescriptor(
       name='hotlist_ref', full_name='monorail.StarHotlistRequest.hotlist_ref', index=0,
@@ -337,14 +348,14 @@
       has_default_value=False, default_value=None,
       message_type=None, enum_type=None, containing_type=None,
       is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR),
+      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
     _descriptor.FieldDescriptor(
       name='starred', full_name='monorail.StarHotlistRequest.starred', index=1,
       number=3, type=8, cpp_type=7, label=1,
       has_default_value=False, default_value=False,
       message_type=None, enum_type=None, containing_type=None,
       is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR),
+      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
   ],
   extensions=[
   ],
@@ -368,6 +379,7 @@
   filename=None,
   file=DESCRIPTOR,
   containing_type=None,
+  create_key=_descriptor._internal_create_key,
   fields=[
     _descriptor.FieldDescriptor(
       name='star_count', full_name='monorail.StarHotlistResponse.star_count', index=0,
@@ -375,7 +387,7 @@
       has_default_value=False, default_value=0,
       message_type=None, enum_type=None, containing_type=None,
       is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR),
+      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
   ],
   extensions=[
   ],
@@ -399,6 +411,7 @@
   filename=None,
   file=DESCRIPTOR,
   containing_type=None,
+  create_key=_descriptor._internal_create_key,
   fields=[
     _descriptor.FieldDescriptor(
       name='hotlist_ref', full_name='monorail.GetHotlistRequest.hotlist_ref', index=0,
@@ -406,7 +419,7 @@
       has_default_value=False, default_value=None,
       message_type=None, enum_type=None, containing_type=None,
       is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR),
+      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
   ],
   extensions=[
   ],
@@ -430,6 +443,7 @@
   filename=None,
   file=DESCRIPTOR,
   containing_type=None,
+  create_key=_descriptor._internal_create_key,
   fields=[
     _descriptor.FieldDescriptor(
       name='hotlist', full_name='monorail.GetHotlistResponse.hotlist', index=0,
@@ -437,7 +451,7 @@
       has_default_value=False, default_value=None,
       message_type=None, enum_type=None, containing_type=None,
       is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR),
+      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
   ],
   extensions=[
   ],
@@ -461,6 +475,7 @@
   filename=None,
   file=DESCRIPTOR,
   containing_type=None,
+  create_key=_descriptor._internal_create_key,
   fields=[
     _descriptor.FieldDescriptor(
       name='hotlist_ref', full_name='monorail.ListHotlistItemsRequest.hotlist_ref', index=0,
@@ -468,35 +483,35 @@
       has_default_value=False, default_value=None,
       message_type=None, enum_type=None, containing_type=None,
       is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR),
+      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
     _descriptor.FieldDescriptor(
       name='pagination', full_name='monorail.ListHotlistItemsRequest.pagination', index=1,
       number=3, type=11, cpp_type=10, label=1,
       has_default_value=False, default_value=None,
       message_type=None, enum_type=None, containing_type=None,
       is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR),
+      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
     _descriptor.FieldDescriptor(
       name='can', full_name='monorail.ListHotlistItemsRequest.can', index=2,
       number=4, type=13, cpp_type=3, label=1,
       has_default_value=False, default_value=0,
       message_type=None, enum_type=None, containing_type=None,
       is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR),
+      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
     _descriptor.FieldDescriptor(
       name='sort_spec', full_name='monorail.ListHotlistItemsRequest.sort_spec', index=3,
       number=5, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=_b("").decode('utf-8'),
+      has_default_value=False, default_value=b"".decode('utf-8'),
       message_type=None, enum_type=None, containing_type=None,
       is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR),
+      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
     _descriptor.FieldDescriptor(
       name='group_by_spec', full_name='monorail.ListHotlistItemsRequest.group_by_spec', index=4,
       number=6, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=_b("").decode('utf-8'),
+      has_default_value=False, default_value=b"".decode('utf-8'),
       message_type=None, enum_type=None, containing_type=None,
       is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR),
+      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
   ],
   extensions=[
   ],
@@ -520,6 +535,7 @@
   filename=None,
   file=DESCRIPTOR,
   containing_type=None,
+  create_key=_descriptor._internal_create_key,
   fields=[
     _descriptor.FieldDescriptor(
       name='items', full_name='monorail.ListHotlistItemsResponse.items', index=0,
@@ -527,7 +543,7 @@
       has_default_value=False, default_value=[],
       message_type=None, enum_type=None, containing_type=None,
       is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR),
+      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
   ],
   extensions=[
   ],
@@ -551,49 +567,50 @@
   filename=None,
   file=DESCRIPTOR,
   containing_type=None,
+  create_key=_descriptor._internal_create_key,
   fields=[
     _descriptor.FieldDescriptor(
       name='name', full_name='monorail.CreateHotlistRequest.name', index=0,
       number=2, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=_b("").decode('utf-8'),
+      has_default_value=False, default_value=b"".decode('utf-8'),
       message_type=None, enum_type=None, containing_type=None,
       is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR),
+      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
     _descriptor.FieldDescriptor(
       name='summary', full_name='monorail.CreateHotlistRequest.summary', index=1,
       number=3, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=_b("").decode('utf-8'),
+      has_default_value=False, default_value=b"".decode('utf-8'),
       message_type=None, enum_type=None, containing_type=None,
       is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR),
+      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
     _descriptor.FieldDescriptor(
       name='description', full_name='monorail.CreateHotlistRequest.description', index=2,
       number=4, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=_b("").decode('utf-8'),
+      has_default_value=False, default_value=b"".decode('utf-8'),
       message_type=None, enum_type=None, containing_type=None,
       is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR),
+      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
     _descriptor.FieldDescriptor(
       name='editor_refs', full_name='monorail.CreateHotlistRequest.editor_refs', index=3,
       number=5, type=11, cpp_type=10, label=3,
       has_default_value=False, default_value=[],
       message_type=None, enum_type=None, containing_type=None,
       is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR),
+      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
     _descriptor.FieldDescriptor(
       name='issue_refs', full_name='monorail.CreateHotlistRequest.issue_refs', index=4,
       number=6, type=11, cpp_type=10, label=3,
       has_default_value=False, default_value=[],
       message_type=None, enum_type=None, containing_type=None,
       is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR),
+      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
     _descriptor.FieldDescriptor(
       name='is_private', full_name='monorail.CreateHotlistRequest.is_private', index=5,
       number=7, type=8, cpp_type=7, label=1,
       has_default_value=False, default_value=False,
       message_type=None, enum_type=None, containing_type=None,
       is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR),
+      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
   ],
   extensions=[
   ],
@@ -617,6 +634,7 @@
   filename=None,
   file=DESCRIPTOR,
   containing_type=None,
+  create_key=_descriptor._internal_create_key,
   fields=[
   ],
   extensions=[
@@ -641,14 +659,15 @@
   filename=None,
   file=DESCRIPTOR,
   containing_type=None,
+  create_key=_descriptor._internal_create_key,
   fields=[
     _descriptor.FieldDescriptor(
       name='name', full_name='monorail.CheckHotlistNameRequest.name', index=0,
       number=2, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=_b("").decode('utf-8'),
+      has_default_value=False, default_value=b"".decode('utf-8'),
       message_type=None, enum_type=None, containing_type=None,
       is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR),
+      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
   ],
   extensions=[
   ],
@@ -672,14 +691,15 @@
   filename=None,
   file=DESCRIPTOR,
   containing_type=None,
+  create_key=_descriptor._internal_create_key,
   fields=[
     _descriptor.FieldDescriptor(
       name='error', full_name='monorail.CheckHotlistNameResponse.error', index=0,
       number=1, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=_b("").decode('utf-8'),
+      has_default_value=False, default_value=b"".decode('utf-8'),
       message_type=None, enum_type=None, containing_type=None,
       is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR),
+      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
   ],
   extensions=[
   ],
@@ -703,6 +723,7 @@
   filename=None,
   file=DESCRIPTOR,
   containing_type=None,
+  create_key=_descriptor._internal_create_key,
   fields=[
     _descriptor.FieldDescriptor(
       name='hotlist_refs', full_name='monorail.RemoveIssuesFromHotlistsRequest.hotlist_refs', index=0,
@@ -710,14 +731,14 @@
       has_default_value=False, default_value=[],
       message_type=None, enum_type=None, containing_type=None,
       is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR),
+      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
     _descriptor.FieldDescriptor(
       name='issue_refs', full_name='monorail.RemoveIssuesFromHotlistsRequest.issue_refs', index=1,
       number=3, type=11, cpp_type=10, label=3,
       has_default_value=False, default_value=[],
       message_type=None, enum_type=None, containing_type=None,
       is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR),
+      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
   ],
   extensions=[
   ],
@@ -741,6 +762,7 @@
   filename=None,
   file=DESCRIPTOR,
   containing_type=None,
+  create_key=_descriptor._internal_create_key,
   fields=[
   ],
   extensions=[
@@ -765,6 +787,7 @@
   filename=None,
   file=DESCRIPTOR,
   containing_type=None,
+  create_key=_descriptor._internal_create_key,
   fields=[
     _descriptor.FieldDescriptor(
       name='hotlist_refs', full_name='monorail.AddIssuesToHotlistsRequest.hotlist_refs', index=0,
@@ -772,21 +795,21 @@
       has_default_value=False, default_value=[],
       message_type=None, enum_type=None, containing_type=None,
       is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR),
+      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
     _descriptor.FieldDescriptor(
       name='issue_refs', full_name='monorail.AddIssuesToHotlistsRequest.issue_refs', index=1,
       number=3, type=11, cpp_type=10, label=3,
       has_default_value=False, default_value=[],
       message_type=None, enum_type=None, containing_type=None,
       is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR),
+      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
     _descriptor.FieldDescriptor(
       name='note', full_name='monorail.AddIssuesToHotlistsRequest.note', index=2,
       number=4, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=_b("").decode('utf-8'),
+      has_default_value=False, default_value=b"".decode('utf-8'),
       message_type=None, enum_type=None, containing_type=None,
       is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR),
+      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
   ],
   extensions=[
   ],
@@ -810,6 +833,7 @@
   filename=None,
   file=DESCRIPTOR,
   containing_type=None,
+  create_key=_descriptor._internal_create_key,
   fields=[
   ],
   extensions=[
@@ -834,6 +858,7 @@
   filename=None,
   file=DESCRIPTOR,
   containing_type=None,
+  create_key=_descriptor._internal_create_key,
   fields=[
     _descriptor.FieldDescriptor(
       name='hotlist_ref', full_name='monorail.RerankHotlistIssuesRequest.hotlist_ref', index=0,
@@ -841,28 +866,28 @@
       has_default_value=False, default_value=None,
       message_type=None, enum_type=None, containing_type=None,
       is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR),
+      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
     _descriptor.FieldDescriptor(
       name='moved_refs', full_name='monorail.RerankHotlistIssuesRequest.moved_refs', index=1,
       number=2, type=11, cpp_type=10, label=3,
       has_default_value=False, default_value=[],
       message_type=None, enum_type=None, containing_type=None,
       is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR),
+      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
     _descriptor.FieldDescriptor(
       name='target_ref', full_name='monorail.RerankHotlistIssuesRequest.target_ref', index=2,
       number=3, type=11, cpp_type=10, label=1,
       has_default_value=False, default_value=None,
       message_type=None, enum_type=None, containing_type=None,
       is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR),
+      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
     _descriptor.FieldDescriptor(
       name='split_above', full_name='monorail.RerankHotlistIssuesRequest.split_above', index=3,
       number=4, type=8, cpp_type=7, label=1,
       has_default_value=False, default_value=False,
       message_type=None, enum_type=None, containing_type=None,
       is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR),
+      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
   ],
   extensions=[
   ],
@@ -886,6 +911,7 @@
   filename=None,
   file=DESCRIPTOR,
   containing_type=None,
+  create_key=_descriptor._internal_create_key,
   fields=[
   ],
   extensions=[
@@ -910,6 +936,7 @@
   filename=None,
   file=DESCRIPTOR,
   containing_type=None,
+  create_key=_descriptor._internal_create_key,
   fields=[
     _descriptor.FieldDescriptor(
       name='hotlist_ref', full_name='monorail.UpdateHotlistIssueNoteRequest.hotlist_ref', index=0,
@@ -917,21 +944,21 @@
       has_default_value=False, default_value=None,
       message_type=None, enum_type=None, containing_type=None,
       is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR),
+      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
     _descriptor.FieldDescriptor(
       name='issue_ref', full_name='monorail.UpdateHotlistIssueNoteRequest.issue_ref', index=1,
       number=3, type=11, cpp_type=10, label=1,
       has_default_value=False, default_value=None,
       message_type=None, enum_type=None, containing_type=None,
       is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR),
+      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
     _descriptor.FieldDescriptor(
       name='note', full_name='monorail.UpdateHotlistIssueNoteRequest.note', index=2,
       number=4, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=_b("").decode('utf-8'),
+      has_default_value=False, default_value=b"".decode('utf-8'),
       message_type=None, enum_type=None, containing_type=None,
       is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR),
+      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
   ],
   extensions=[
   ],
@@ -955,6 +982,7 @@
   filename=None,
   file=DESCRIPTOR,
   containing_type=None,
+  create_key=_descriptor._internal_create_key,
   fields=[
   ],
   extensions=[
@@ -979,6 +1007,7 @@
   filename=None,
   file=DESCRIPTOR,
   containing_type=None,
+  create_key=_descriptor._internal_create_key,
   fields=[
     _descriptor.FieldDescriptor(
       name='hotlist_ref', full_name='monorail.DeleteHotlistRequest.hotlist_ref', index=0,
@@ -986,7 +1015,7 @@
       has_default_value=False, default_value=None,
       message_type=None, enum_type=None, containing_type=None,
       is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR),
+      serialized_options=None, file=DESCRIPTOR,  create_key=_descriptor._internal_create_key),
   ],
   extensions=[
   ],
@@ -1010,6 +1039,7 @@
   filename=None,
   file=DESCRIPTOR,
   containing_type=None,
+  create_key=_descriptor._internal_create_key,
   fields=[
   ],
   extensions=[
@@ -1027,75 +1057,6 @@
   serialized_end=2246,
 )
 
-
-_PREDICTCOMPONENTREQUEST = _descriptor.Descriptor(
-  name='PredictComponentRequest',
-  full_name='monorail.PredictComponentRequest',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='text', full_name='monorail.PredictComponentRequest.text', index=0,
-      number=2, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=_b("").decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR),
-    _descriptor.FieldDescriptor(
-      name='project_name', full_name='monorail.PredictComponentRequest.project_name', index=1,
-      number=3, type=9, cpp_type=9, label=1,
-      has_default_value=False, default_value=_b("").decode('utf-8'),
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  serialized_options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=2248,
-  serialized_end=2309,
-)
-
-
-_PREDICTCOMPONENTRESPONSE = _descriptor.Descriptor(
-  name='PredictComponentResponse',
-  full_name='monorail.PredictComponentResponse',
-  filename=None,
-  file=DESCRIPTOR,
-  containing_type=None,
-  fields=[
-    _descriptor.FieldDescriptor(
-      name='component_ref', full_name='monorail.PredictComponentResponse.component_ref', index=0,
-      number=1, type=11, cpp_type=10, label=1,
-      has_default_value=False, default_value=None,
-      message_type=None, enum_type=None, containing_type=None,
-      is_extension=False, extension_scope=None,
-      serialized_options=None, file=DESCRIPTOR),
-  ],
-  extensions=[
-  ],
-  nested_types=[],
-  enum_types=[
-  ],
-  serialized_options=None,
-  is_extendable=False,
-  syntax='proto3',
-  extension_ranges=[],
-  oneofs=[
-  ],
-  serialized_start=2311,
-  serialized_end=2384,
-)
-
 _LISTHOTLISTSBYUSERREQUEST.fields_by_name['user'].message_type = api_dot_api__proto_dot_common__pb2._USERREF
 _LISTHOTLISTSBYUSERRESPONSE.fields_by_name['hotlists'].message_type = api_dot_api__proto_dot_features__objects__pb2._HOTLIST
 _LISTHOTLISTSBYISSUEREQUEST.fields_by_name['issue'].message_type = api_dot_api__proto_dot_common__pb2._ISSUEREF
@@ -1121,7 +1082,6 @@
 _UPDATEHOTLISTISSUENOTEREQUEST.fields_by_name['hotlist_ref'].message_type = api_dot_api__proto_dot_common__pb2._HOTLISTREF
 _UPDATEHOTLISTISSUENOTEREQUEST.fields_by_name['issue_ref'].message_type = api_dot_api__proto_dot_common__pb2._ISSUEREF
 _DELETEHOTLISTREQUEST.fields_by_name['hotlist_ref'].message_type = api_dot_api__proto_dot_common__pb2._HOTLISTREF
-_PREDICTCOMPONENTRESPONSE.fields_by_name['component_ref'].message_type = api_dot_api__proto_dot_common__pb2._COMPONENTREF
 DESCRIPTOR.message_types_by_name['ListHotlistsByUserRequest'] = _LISTHOTLISTSBYUSERREQUEST
 DESCRIPTOR.message_types_by_name['ListHotlistsByUserResponse'] = _LISTHOTLISTSBYUSERRESPONSE
 DESCRIPTOR.message_types_by_name['ListHotlistsByIssueRequest'] = _LISTHOTLISTSBYISSUEREQUEST
@@ -1152,235 +1112,220 @@
 DESCRIPTOR.message_types_by_name['UpdateHotlistIssueNoteResponse'] = _UPDATEHOTLISTISSUENOTERESPONSE
 DESCRIPTOR.message_types_by_name['DeleteHotlistRequest'] = _DELETEHOTLISTREQUEST
 DESCRIPTOR.message_types_by_name['DeleteHotlistResponse'] = _DELETEHOTLISTRESPONSE
-DESCRIPTOR.message_types_by_name['PredictComponentRequest'] = _PREDICTCOMPONENTREQUEST
-DESCRIPTOR.message_types_by_name['PredictComponentResponse'] = _PREDICTCOMPONENTRESPONSE
 _sym_db.RegisterFileDescriptor(DESCRIPTOR)
 
-ListHotlistsByUserRequest = _reflection.GeneratedProtocolMessageType('ListHotlistsByUserRequest', (_message.Message,), dict(
-  DESCRIPTOR = _LISTHOTLISTSBYUSERREQUEST,
-  __module__ = 'api.api_proto.features_pb2'
+ListHotlistsByUserRequest = _reflection.GeneratedProtocolMessageType('ListHotlistsByUserRequest', (_message.Message,), {
+  'DESCRIPTOR' : _LISTHOTLISTSBYUSERREQUEST,
+  '__module__' : 'api.api_proto.features_pb2'
   # @@protoc_insertion_point(class_scope:monorail.ListHotlistsByUserRequest)
-  ))
+  })
 _sym_db.RegisterMessage(ListHotlistsByUserRequest)
 
-ListHotlistsByUserResponse = _reflection.GeneratedProtocolMessageType('ListHotlistsByUserResponse', (_message.Message,), dict(
-  DESCRIPTOR = _LISTHOTLISTSBYUSERRESPONSE,
-  __module__ = 'api.api_proto.features_pb2'
+ListHotlistsByUserResponse = _reflection.GeneratedProtocolMessageType('ListHotlistsByUserResponse', (_message.Message,), {
+  'DESCRIPTOR' : _LISTHOTLISTSBYUSERRESPONSE,
+  '__module__' : 'api.api_proto.features_pb2'
   # @@protoc_insertion_point(class_scope:monorail.ListHotlistsByUserResponse)
-  ))
+  })
 _sym_db.RegisterMessage(ListHotlistsByUserResponse)
 
-ListHotlistsByIssueRequest = _reflection.GeneratedProtocolMessageType('ListHotlistsByIssueRequest', (_message.Message,), dict(
-  DESCRIPTOR = _LISTHOTLISTSBYISSUEREQUEST,
-  __module__ = 'api.api_proto.features_pb2'
+ListHotlistsByIssueRequest = _reflection.GeneratedProtocolMessageType('ListHotlistsByIssueRequest', (_message.Message,), {
+  'DESCRIPTOR' : _LISTHOTLISTSBYISSUEREQUEST,
+  '__module__' : 'api.api_proto.features_pb2'
   # @@protoc_insertion_point(class_scope:monorail.ListHotlistsByIssueRequest)
-  ))
+  })
 _sym_db.RegisterMessage(ListHotlistsByIssueRequest)
 
-ListHotlistsByIssueResponse = _reflection.GeneratedProtocolMessageType('ListHotlistsByIssueResponse', (_message.Message,), dict(
-  DESCRIPTOR = _LISTHOTLISTSBYISSUERESPONSE,
-  __module__ = 'api.api_proto.features_pb2'
+ListHotlistsByIssueResponse = _reflection.GeneratedProtocolMessageType('ListHotlistsByIssueResponse', (_message.Message,), {
+  'DESCRIPTOR' : _LISTHOTLISTSBYISSUERESPONSE,
+  '__module__' : 'api.api_proto.features_pb2'
   # @@protoc_insertion_point(class_scope:monorail.ListHotlistsByIssueResponse)
-  ))
+  })
 _sym_db.RegisterMessage(ListHotlistsByIssueResponse)
 
-ListRecentlyVisitedHotlistsRequest = _reflection.GeneratedProtocolMessageType('ListRecentlyVisitedHotlistsRequest', (_message.Message,), dict(
-  DESCRIPTOR = _LISTRECENTLYVISITEDHOTLISTSREQUEST,
-  __module__ = 'api.api_proto.features_pb2'
+ListRecentlyVisitedHotlistsRequest = _reflection.GeneratedProtocolMessageType('ListRecentlyVisitedHotlistsRequest', (_message.Message,), {
+  'DESCRIPTOR' : _LISTRECENTLYVISITEDHOTLISTSREQUEST,
+  '__module__' : 'api.api_proto.features_pb2'
   # @@protoc_insertion_point(class_scope:monorail.ListRecentlyVisitedHotlistsRequest)
-  ))
+  })
 _sym_db.RegisterMessage(ListRecentlyVisitedHotlistsRequest)
 
-ListRecentlyVisitedHotlistsResponse = _reflection.GeneratedProtocolMessageType('ListRecentlyVisitedHotlistsResponse', (_message.Message,), dict(
-  DESCRIPTOR = _LISTRECENTLYVISITEDHOTLISTSRESPONSE,
-  __module__ = 'api.api_proto.features_pb2'
+ListRecentlyVisitedHotlistsResponse = _reflection.GeneratedProtocolMessageType('ListRecentlyVisitedHotlistsResponse', (_message.Message,), {
+  'DESCRIPTOR' : _LISTRECENTLYVISITEDHOTLISTSRESPONSE,
+  '__module__' : 'api.api_proto.features_pb2'
   # @@protoc_insertion_point(class_scope:monorail.ListRecentlyVisitedHotlistsResponse)
-  ))
+  })
 _sym_db.RegisterMessage(ListRecentlyVisitedHotlistsResponse)
 
-ListStarredHotlistsRequest = _reflection.GeneratedProtocolMessageType('ListStarredHotlistsRequest', (_message.Message,), dict(
-  DESCRIPTOR = _LISTSTARREDHOTLISTSREQUEST,
-  __module__ = 'api.api_proto.features_pb2'
+ListStarredHotlistsRequest = _reflection.GeneratedProtocolMessageType('ListStarredHotlistsRequest', (_message.Message,), {
+  'DESCRIPTOR' : _LISTSTARREDHOTLISTSREQUEST,
+  '__module__' : 'api.api_proto.features_pb2'
   # @@protoc_insertion_point(class_scope:monorail.ListStarredHotlistsRequest)
-  ))
+  })
 _sym_db.RegisterMessage(ListStarredHotlistsRequest)
 
-ListStarredHotlistsResponse = _reflection.GeneratedProtocolMessageType('ListStarredHotlistsResponse', (_message.Message,), dict(
-  DESCRIPTOR = _LISTSTARREDHOTLISTSRESPONSE,
-  __module__ = 'api.api_proto.features_pb2'
+ListStarredHotlistsResponse = _reflection.GeneratedProtocolMessageType('ListStarredHotlistsResponse', (_message.Message,), {
+  'DESCRIPTOR' : _LISTSTARREDHOTLISTSRESPONSE,
+  '__module__' : 'api.api_proto.features_pb2'
   # @@protoc_insertion_point(class_scope:monorail.ListStarredHotlistsResponse)
-  ))
+  })
 _sym_db.RegisterMessage(ListStarredHotlistsResponse)
 
-GetHotlistStarCountRequest = _reflection.GeneratedProtocolMessageType('GetHotlistStarCountRequest', (_message.Message,), dict(
-  DESCRIPTOR = _GETHOTLISTSTARCOUNTREQUEST,
-  __module__ = 'api.api_proto.features_pb2'
+GetHotlistStarCountRequest = _reflection.GeneratedProtocolMessageType('GetHotlistStarCountRequest', (_message.Message,), {
+  'DESCRIPTOR' : _GETHOTLISTSTARCOUNTREQUEST,
+  '__module__' : 'api.api_proto.features_pb2'
   # @@protoc_insertion_point(class_scope:monorail.GetHotlistStarCountRequest)
-  ))
+  })
 _sym_db.RegisterMessage(GetHotlistStarCountRequest)
 
-GetHotlistStarCountResponse = _reflection.GeneratedProtocolMessageType('GetHotlistStarCountResponse', (_message.Message,), dict(
-  DESCRIPTOR = _GETHOTLISTSTARCOUNTRESPONSE,
-  __module__ = 'api.api_proto.features_pb2'
+GetHotlistStarCountResponse = _reflection.GeneratedProtocolMessageType('GetHotlistStarCountResponse', (_message.Message,), {
+  'DESCRIPTOR' : _GETHOTLISTSTARCOUNTRESPONSE,
+  '__module__' : 'api.api_proto.features_pb2'
   # @@protoc_insertion_point(class_scope:monorail.GetHotlistStarCountResponse)
-  ))
+  })
 _sym_db.RegisterMessage(GetHotlistStarCountResponse)
 
-StarHotlistRequest = _reflection.GeneratedProtocolMessageType('StarHotlistRequest', (_message.Message,), dict(
-  DESCRIPTOR = _STARHOTLISTREQUEST,
-  __module__ = 'api.api_proto.features_pb2'
+StarHotlistRequest = _reflection.GeneratedProtocolMessageType('StarHotlistRequest', (_message.Message,), {
+  'DESCRIPTOR' : _STARHOTLISTREQUEST,
+  '__module__' : 'api.api_proto.features_pb2'
   # @@protoc_insertion_point(class_scope:monorail.StarHotlistRequest)
-  ))
+  })
 _sym_db.RegisterMessage(StarHotlistRequest)
 
-StarHotlistResponse = _reflection.GeneratedProtocolMessageType('StarHotlistResponse', (_message.Message,), dict(
-  DESCRIPTOR = _STARHOTLISTRESPONSE,
-  __module__ = 'api.api_proto.features_pb2'
+StarHotlistResponse = _reflection.GeneratedProtocolMessageType('StarHotlistResponse', (_message.Message,), {
+  'DESCRIPTOR' : _STARHOTLISTRESPONSE,
+  '__module__' : 'api.api_proto.features_pb2'
   # @@protoc_insertion_point(class_scope:monorail.StarHotlistResponse)
-  ))
+  })
 _sym_db.RegisterMessage(StarHotlistResponse)
 
-GetHotlistRequest = _reflection.GeneratedProtocolMessageType('GetHotlistRequest', (_message.Message,), dict(
-  DESCRIPTOR = _GETHOTLISTREQUEST,
-  __module__ = 'api.api_proto.features_pb2'
+GetHotlistRequest = _reflection.GeneratedProtocolMessageType('GetHotlistRequest', (_message.Message,), {
+  'DESCRIPTOR' : _GETHOTLISTREQUEST,
+  '__module__' : 'api.api_proto.features_pb2'
   # @@protoc_insertion_point(class_scope:monorail.GetHotlistRequest)
-  ))
+  })
 _sym_db.RegisterMessage(GetHotlistRequest)
 
-GetHotlistResponse = _reflection.GeneratedProtocolMessageType('GetHotlistResponse', (_message.Message,), dict(
-  DESCRIPTOR = _GETHOTLISTRESPONSE,
-  __module__ = 'api.api_proto.features_pb2'
+GetHotlistResponse = _reflection.GeneratedProtocolMessageType('GetHotlistResponse', (_message.Message,), {
+  'DESCRIPTOR' : _GETHOTLISTRESPONSE,
+  '__module__' : 'api.api_proto.features_pb2'
   # @@protoc_insertion_point(class_scope:monorail.GetHotlistResponse)
-  ))
+  })
 _sym_db.RegisterMessage(GetHotlistResponse)
 
-ListHotlistItemsRequest = _reflection.GeneratedProtocolMessageType('ListHotlistItemsRequest', (_message.Message,), dict(
-  DESCRIPTOR = _LISTHOTLISTITEMSREQUEST,
-  __module__ = 'api.api_proto.features_pb2'
+ListHotlistItemsRequest = _reflection.GeneratedProtocolMessageType('ListHotlistItemsRequest', (_message.Message,), {
+  'DESCRIPTOR' : _LISTHOTLISTITEMSREQUEST,
+  '__module__' : 'api.api_proto.features_pb2'
   # @@protoc_insertion_point(class_scope:monorail.ListHotlistItemsRequest)
-  ))
+  })
 _sym_db.RegisterMessage(ListHotlistItemsRequest)
 
-ListHotlistItemsResponse = _reflection.GeneratedProtocolMessageType('ListHotlistItemsResponse', (_message.Message,), dict(
-  DESCRIPTOR = _LISTHOTLISTITEMSRESPONSE,
-  __module__ = 'api.api_proto.features_pb2'
+ListHotlistItemsResponse = _reflection.GeneratedProtocolMessageType('ListHotlistItemsResponse', (_message.Message,), {
+  'DESCRIPTOR' : _LISTHOTLISTITEMSRESPONSE,
+  '__module__' : 'api.api_proto.features_pb2'
   # @@protoc_insertion_point(class_scope:monorail.ListHotlistItemsResponse)
-  ))
+  })
 _sym_db.RegisterMessage(ListHotlistItemsResponse)
 
-CreateHotlistRequest = _reflection.GeneratedProtocolMessageType('CreateHotlistRequest', (_message.Message,), dict(
-  DESCRIPTOR = _CREATEHOTLISTREQUEST,
-  __module__ = 'api.api_proto.features_pb2'
+CreateHotlistRequest = _reflection.GeneratedProtocolMessageType('CreateHotlistRequest', (_message.Message,), {
+  'DESCRIPTOR' : _CREATEHOTLISTREQUEST,
+  '__module__' : 'api.api_proto.features_pb2'
   # @@protoc_insertion_point(class_scope:monorail.CreateHotlistRequest)
-  ))
+  })
 _sym_db.RegisterMessage(CreateHotlistRequest)
 
-CreateHotlistResponse = _reflection.GeneratedProtocolMessageType('CreateHotlistResponse', (_message.Message,), dict(
-  DESCRIPTOR = _CREATEHOTLISTRESPONSE,
-  __module__ = 'api.api_proto.features_pb2'
+CreateHotlistResponse = _reflection.GeneratedProtocolMessageType('CreateHotlistResponse', (_message.Message,), {
+  'DESCRIPTOR' : _CREATEHOTLISTRESPONSE,
+  '__module__' : 'api.api_proto.features_pb2'
   # @@protoc_insertion_point(class_scope:monorail.CreateHotlistResponse)
-  ))
+  })
 _sym_db.RegisterMessage(CreateHotlistResponse)
 
-CheckHotlistNameRequest = _reflection.GeneratedProtocolMessageType('CheckHotlistNameRequest', (_message.Message,), dict(
-  DESCRIPTOR = _CHECKHOTLISTNAMEREQUEST,
-  __module__ = 'api.api_proto.features_pb2'
+CheckHotlistNameRequest = _reflection.GeneratedProtocolMessageType('CheckHotlistNameRequest', (_message.Message,), {
+  'DESCRIPTOR' : _CHECKHOTLISTNAMEREQUEST,
+  '__module__' : 'api.api_proto.features_pb2'
   # @@protoc_insertion_point(class_scope:monorail.CheckHotlistNameRequest)
-  ))
+  })
 _sym_db.RegisterMessage(CheckHotlistNameRequest)
 
-CheckHotlistNameResponse = _reflection.GeneratedProtocolMessageType('CheckHotlistNameResponse', (_message.Message,), dict(
-  DESCRIPTOR = _CHECKHOTLISTNAMERESPONSE,
-  __module__ = 'api.api_proto.features_pb2'
+CheckHotlistNameResponse = _reflection.GeneratedProtocolMessageType('CheckHotlistNameResponse', (_message.Message,), {
+  'DESCRIPTOR' : _CHECKHOTLISTNAMERESPONSE,
+  '__module__' : 'api.api_proto.features_pb2'
   # @@protoc_insertion_point(class_scope:monorail.CheckHotlistNameResponse)
-  ))
+  })
 _sym_db.RegisterMessage(CheckHotlistNameResponse)
 
-RemoveIssuesFromHotlistsRequest = _reflection.GeneratedProtocolMessageType('RemoveIssuesFromHotlistsRequest', (_message.Message,), dict(
-  DESCRIPTOR = _REMOVEISSUESFROMHOTLISTSREQUEST,
-  __module__ = 'api.api_proto.features_pb2'
+RemoveIssuesFromHotlistsRequest = _reflection.GeneratedProtocolMessageType('RemoveIssuesFromHotlistsRequest', (_message.Message,), {
+  'DESCRIPTOR' : _REMOVEISSUESFROMHOTLISTSREQUEST,
+  '__module__' : 'api.api_proto.features_pb2'
   # @@protoc_insertion_point(class_scope:monorail.RemoveIssuesFromHotlistsRequest)
-  ))
+  })
 _sym_db.RegisterMessage(RemoveIssuesFromHotlistsRequest)
 
-RemoveIssuesFromHotlistsResponse = _reflection.GeneratedProtocolMessageType('RemoveIssuesFromHotlistsResponse', (_message.Message,), dict(
-  DESCRIPTOR = _REMOVEISSUESFROMHOTLISTSRESPONSE,
-  __module__ = 'api.api_proto.features_pb2'
+RemoveIssuesFromHotlistsResponse = _reflection.GeneratedProtocolMessageType('RemoveIssuesFromHotlistsResponse', (_message.Message,), {
+  'DESCRIPTOR' : _REMOVEISSUESFROMHOTLISTSRESPONSE,
+  '__module__' : 'api.api_proto.features_pb2'
   # @@protoc_insertion_point(class_scope:monorail.RemoveIssuesFromHotlistsResponse)
-  ))
+  })
 _sym_db.RegisterMessage(RemoveIssuesFromHotlistsResponse)
 
-AddIssuesToHotlistsRequest = _reflection.GeneratedProtocolMessageType('AddIssuesToHotlistsRequest', (_message.Message,), dict(
-  DESCRIPTOR = _ADDISSUESTOHOTLISTSREQUEST,
-  __module__ = 'api.api_proto.features_pb2'
+AddIssuesToHotlistsRequest = _reflection.GeneratedProtocolMessageType('AddIssuesToHotlistsRequest', (_message.Message,), {
+  'DESCRIPTOR' : _ADDISSUESTOHOTLISTSREQUEST,
+  '__module__' : 'api.api_proto.features_pb2'
   # @@protoc_insertion_point(class_scope:monorail.AddIssuesToHotlistsRequest)
-  ))
+  })
 _sym_db.RegisterMessage(AddIssuesToHotlistsRequest)
 
-AddIssuesToHotlistsResponse = _reflection.GeneratedProtocolMessageType('AddIssuesToHotlistsResponse', (_message.Message,), dict(
-  DESCRIPTOR = _ADDISSUESTOHOTLISTSRESPONSE,
-  __module__ = 'api.api_proto.features_pb2'
+AddIssuesToHotlistsResponse = _reflection.GeneratedProtocolMessageType('AddIssuesToHotlistsResponse', (_message.Message,), {
+  'DESCRIPTOR' : _ADDISSUESTOHOTLISTSRESPONSE,
+  '__module__' : 'api.api_proto.features_pb2'
   # @@protoc_insertion_point(class_scope:monorail.AddIssuesToHotlistsResponse)
-  ))
+  })
 _sym_db.RegisterMessage(AddIssuesToHotlistsResponse)
 
-RerankHotlistIssuesRequest = _reflection.GeneratedProtocolMessageType('RerankHotlistIssuesRequest', (_message.Message,), dict(
-  DESCRIPTOR = _RERANKHOTLISTISSUESREQUEST,
-  __module__ = 'api.api_proto.features_pb2'
+RerankHotlistIssuesRequest = _reflection.GeneratedProtocolMessageType('RerankHotlistIssuesRequest', (_message.Message,), {
+  'DESCRIPTOR' : _RERANKHOTLISTISSUESREQUEST,
+  '__module__' : 'api.api_proto.features_pb2'
   # @@protoc_insertion_point(class_scope:monorail.RerankHotlistIssuesRequest)
-  ))
+  })
 _sym_db.RegisterMessage(RerankHotlistIssuesRequest)
 
-RerankHotlistIssuesResponse = _reflection.GeneratedProtocolMessageType('RerankHotlistIssuesResponse', (_message.Message,), dict(
-  DESCRIPTOR = _RERANKHOTLISTISSUESRESPONSE,
-  __module__ = 'api.api_proto.features_pb2'
+RerankHotlistIssuesResponse = _reflection.GeneratedProtocolMessageType('RerankHotlistIssuesResponse', (_message.Message,), {
+  'DESCRIPTOR' : _RERANKHOTLISTISSUESRESPONSE,
+  '__module__' : 'api.api_proto.features_pb2'
   # @@protoc_insertion_point(class_scope:monorail.RerankHotlistIssuesResponse)
-  ))
+  })
 _sym_db.RegisterMessage(RerankHotlistIssuesResponse)
 
-UpdateHotlistIssueNoteRequest = _reflection.GeneratedProtocolMessageType('UpdateHotlistIssueNoteRequest', (_message.Message,), dict(
-  DESCRIPTOR = _UPDATEHOTLISTISSUENOTEREQUEST,
-  __module__ = 'api.api_proto.features_pb2'
+UpdateHotlistIssueNoteRequest = _reflection.GeneratedProtocolMessageType('UpdateHotlistIssueNoteRequest', (_message.Message,), {
+  'DESCRIPTOR' : _UPDATEHOTLISTISSUENOTEREQUEST,
+  '__module__' : 'api.api_proto.features_pb2'
   # @@protoc_insertion_point(class_scope:monorail.UpdateHotlistIssueNoteRequest)
-  ))
+  })
 _sym_db.RegisterMessage(UpdateHotlistIssueNoteRequest)
 
-UpdateHotlistIssueNoteResponse = _reflection.GeneratedProtocolMessageType('UpdateHotlistIssueNoteResponse', (_message.Message,), dict(
-  DESCRIPTOR = _UPDATEHOTLISTISSUENOTERESPONSE,
-  __module__ = 'api.api_proto.features_pb2'
+UpdateHotlistIssueNoteResponse = _reflection.GeneratedProtocolMessageType('UpdateHotlistIssueNoteResponse', (_message.Message,), {
+  'DESCRIPTOR' : _UPDATEHOTLISTISSUENOTERESPONSE,
+  '__module__' : 'api.api_proto.features_pb2'
   # @@protoc_insertion_point(class_scope:monorail.UpdateHotlistIssueNoteResponse)
-  ))
+  })
 _sym_db.RegisterMessage(UpdateHotlistIssueNoteResponse)
 
-DeleteHotlistRequest = _reflection.GeneratedProtocolMessageType('DeleteHotlistRequest', (_message.Message,), dict(
-  DESCRIPTOR = _DELETEHOTLISTREQUEST,
-  __module__ = 'api.api_proto.features_pb2'
+DeleteHotlistRequest = _reflection.GeneratedProtocolMessageType('DeleteHotlistRequest', (_message.Message,), {
+  'DESCRIPTOR' : _DELETEHOTLISTREQUEST,
+  '__module__' : 'api.api_proto.features_pb2'
   # @@protoc_insertion_point(class_scope:monorail.DeleteHotlistRequest)
-  ))
+  })
 _sym_db.RegisterMessage(DeleteHotlistRequest)
 
-DeleteHotlistResponse = _reflection.GeneratedProtocolMessageType('DeleteHotlistResponse', (_message.Message,), dict(
-  DESCRIPTOR = _DELETEHOTLISTRESPONSE,
-  __module__ = 'api.api_proto.features_pb2'
+DeleteHotlistResponse = _reflection.GeneratedProtocolMessageType('DeleteHotlistResponse', (_message.Message,), {
+  'DESCRIPTOR' : _DELETEHOTLISTRESPONSE,
+  '__module__' : 'api.api_proto.features_pb2'
   # @@protoc_insertion_point(class_scope:monorail.DeleteHotlistResponse)
-  ))
+  })
 _sym_db.RegisterMessage(DeleteHotlistResponse)
 
-PredictComponentRequest = _reflection.GeneratedProtocolMessageType('PredictComponentRequest', (_message.Message,), dict(
-  DESCRIPTOR = _PREDICTCOMPONENTREQUEST,
-  __module__ = 'api.api_proto.features_pb2'
-  # @@protoc_insertion_point(class_scope:monorail.PredictComponentRequest)
-  ))
-_sym_db.RegisterMessage(PredictComponentRequest)
 
-PredictComponentResponse = _reflection.GeneratedProtocolMessageType('PredictComponentResponse', (_message.Message,), dict(
-  DESCRIPTOR = _PREDICTCOMPONENTRESPONSE,
-  __module__ = 'api.api_proto.features_pb2'
-  # @@protoc_insertion_point(class_scope:monorail.PredictComponentResponse)
-  ))
-_sym_db.RegisterMessage(PredictComponentResponse)
-
-
+DESCRIPTOR._options = None
 
 _FEATURES = _descriptor.ServiceDescriptor(
   name='Features',
@@ -1388,8 +1333,9 @@
   file=DESCRIPTOR,
   index=0,
   serialized_options=None,
-  serialized_start=2387,
-  serialized_end=3960,
+  create_key=_descriptor._internal_create_key,
+  serialized_start=2249,
+  serialized_end=3729,
   methods=[
   _descriptor.MethodDescriptor(
     name='ListHotlistsByUser',
@@ -1399,6 +1345,7 @@
     input_type=_LISTHOTLISTSBYUSERREQUEST,
     output_type=_LISTHOTLISTSBYUSERRESPONSE,
     serialized_options=None,
+    create_key=_descriptor._internal_create_key,
   ),
   _descriptor.MethodDescriptor(
     name='ListHotlistsByIssue',
@@ -1408,6 +1355,7 @@
     input_type=_LISTHOTLISTSBYISSUEREQUEST,
     output_type=_LISTHOTLISTSBYISSUERESPONSE,
     serialized_options=None,
+    create_key=_descriptor._internal_create_key,
   ),
   _descriptor.MethodDescriptor(
     name='ListRecentlyVisitedHotlists',
@@ -1417,6 +1365,7 @@
     input_type=_LISTRECENTLYVISITEDHOTLISTSREQUEST,
     output_type=_LISTRECENTLYVISITEDHOTLISTSRESPONSE,
     serialized_options=None,
+    create_key=_descriptor._internal_create_key,
   ),
   _descriptor.MethodDescriptor(
     name='ListStarredHotlists',
@@ -1426,6 +1375,7 @@
     input_type=_LISTSTARREDHOTLISTSREQUEST,
     output_type=_LISTSTARREDHOTLISTSRESPONSE,
     serialized_options=None,
+    create_key=_descriptor._internal_create_key,
   ),
   _descriptor.MethodDescriptor(
     name='GetHotlistStarCount',
@@ -1435,6 +1385,7 @@
     input_type=_GETHOTLISTSTARCOUNTREQUEST,
     output_type=_GETHOTLISTSTARCOUNTRESPONSE,
     serialized_options=None,
+    create_key=_descriptor._internal_create_key,
   ),
   _descriptor.MethodDescriptor(
     name='StarHotlist',
@@ -1444,6 +1395,7 @@
     input_type=_STARHOTLISTREQUEST,
     output_type=_STARHOTLISTRESPONSE,
     serialized_options=None,
+    create_key=_descriptor._internal_create_key,
   ),
   _descriptor.MethodDescriptor(
     name='GetHotlist',
@@ -1453,6 +1405,7 @@
     input_type=_GETHOTLISTREQUEST,
     output_type=_GETHOTLISTRESPONSE,
     serialized_options=None,
+    create_key=_descriptor._internal_create_key,
   ),
   _descriptor.MethodDescriptor(
     name='ListHotlistItems',
@@ -1462,6 +1415,7 @@
     input_type=_LISTHOTLISTITEMSREQUEST,
     output_type=_LISTHOTLISTITEMSRESPONSE,
     serialized_options=None,
+    create_key=_descriptor._internal_create_key,
   ),
   _descriptor.MethodDescriptor(
     name='CreateHotlist',
@@ -1471,6 +1425,7 @@
     input_type=_CREATEHOTLISTREQUEST,
     output_type=_CREATEHOTLISTRESPONSE,
     serialized_options=None,
+    create_key=_descriptor._internal_create_key,
   ),
   _descriptor.MethodDescriptor(
     name='CheckHotlistName',
@@ -1480,6 +1435,7 @@
     input_type=_CHECKHOTLISTNAMEREQUEST,
     output_type=_CHECKHOTLISTNAMERESPONSE,
     serialized_options=None,
+    create_key=_descriptor._internal_create_key,
   ),
   _descriptor.MethodDescriptor(
     name='RemoveIssuesFromHotlists',
@@ -1489,6 +1445,7 @@
     input_type=_REMOVEISSUESFROMHOTLISTSREQUEST,
     output_type=_REMOVEISSUESFROMHOTLISTSRESPONSE,
     serialized_options=None,
+    create_key=_descriptor._internal_create_key,
   ),
   _descriptor.MethodDescriptor(
     name='AddIssuesToHotlists',
@@ -1498,6 +1455,7 @@
     input_type=_ADDISSUESTOHOTLISTSREQUEST,
     output_type=_ADDISSUESTOHOTLISTSRESPONSE,
     serialized_options=None,
+    create_key=_descriptor._internal_create_key,
   ),
   _descriptor.MethodDescriptor(
     name='RerankHotlistIssues',
@@ -1507,6 +1465,7 @@
     input_type=_RERANKHOTLISTISSUESREQUEST,
     output_type=_RERANKHOTLISTISSUESRESPONSE,
     serialized_options=None,
+    create_key=_descriptor._internal_create_key,
   ),
   _descriptor.MethodDescriptor(
     name='UpdateHotlistIssueNote',
@@ -1516,6 +1475,7 @@
     input_type=_UPDATEHOTLISTISSUENOTEREQUEST,
     output_type=_UPDATEHOTLISTISSUENOTERESPONSE,
     serialized_options=None,
+    create_key=_descriptor._internal_create_key,
   ),
   _descriptor.MethodDescriptor(
     name='DeleteHotlist',
@@ -1525,15 +1485,7 @@
     input_type=_DELETEHOTLISTREQUEST,
     output_type=_DELETEHOTLISTRESPONSE,
     serialized_options=None,
-  ),
-  _descriptor.MethodDescriptor(
-    name='PredictComponent',
-    full_name='monorail.Features.PredictComponent',
-    index=15,
-    containing_service=None,
-    input_type=_PREDICTCOMPONENTREQUEST,
-    output_type=_PREDICTCOMPONENTRESPONSE,
-    serialized_options=None,
+    create_key=_descriptor._internal_create_key,
   ),
 ])
 _sym_db.RegisterServiceDescriptor(_FEATURES)