| 
					
				 | 
			
			
				@@ -127,6 +127,9 @@ class DescriptorPool(object): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     self._service_descriptors = {} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     self._file_descriptors = {} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     self._toplevel_extensions = {} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    # TODO(jieluo): Remove _file_desc_by_toplevel_extension after 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    # maybe year 2020 for compatibility issue (with 3.4.1 only). 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    self._file_desc_by_toplevel_extension = {} 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     # We store extensions in two two-level mappings: The first key is the 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     # descriptor of the message being extended, the second key is the extension 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     # full name or its tag number. 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -252,6 +255,12 @@ class DescriptorPool(object): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     """ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     self._AddFileDescriptor(file_desc) 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    # TODO(jieluo): This is a temporary solution for FieldDescriptor.file. 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    # FieldDescriptor.file is added in code gen. Remove this solution after 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    # maybe 2020 for compatibility reason (with 3.4.1 only). 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    for extension in file_desc.extensions_by_name.values(): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      self._file_desc_by_toplevel_extension[ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+          extension.full_name] = file_desc 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   def _AddFileDescriptor(self, file_desc): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     """Adds a FileDescriptor to the pool, non-recursively. 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -331,7 +340,7 @@ class DescriptorPool(object): 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       pass 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     try: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-      return self._toplevel_extensions[symbol].file 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+      return self._file_desc_by_toplevel_extension[symbol] 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     except KeyError: 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       pass 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				  
			 |