|  | @@ -1693,6 +1693,9 @@ class DescriptorBuilder {
 | 
	
		
			
				|  |  |    template<class DescriptorT> void AllocateOptions(
 | 
	
		
			
				|  |  |        const typename DescriptorT::OptionsType& orig_options,
 | 
	
		
			
				|  |  |        DescriptorT* descriptor);
 | 
	
		
			
				|  |  | +  // Specialization for FileOptions.
 | 
	
		
			
				|  |  | +  void AllocateOptions(const FileOptions& orig_options,
 | 
	
		
			
				|  |  | +                       FileDescriptor* descriptor);
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |    // Implementation for AllocateOptions(). Don't call this directly.
 | 
	
		
			
				|  |  |    template<class DescriptorT> void AllocateOptionsImpl(
 | 
	
	
		
			
				|  | @@ -2208,9 +2211,8 @@ template<class DescriptorT> void DescriptorBuilder::AllocateOptions(
 | 
	
		
			
				|  |  |  }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |  // We specialize for FileDescriptor.
 | 
	
		
			
				|  |  | -template<> void DescriptorBuilder::AllocateOptions<FileDescriptor>(
 | 
	
		
			
				|  |  | -    const FileDescriptor::OptionsType& orig_options,
 | 
	
		
			
				|  |  | -    FileDescriptor* descriptor) {
 | 
	
		
			
				|  |  | +void DescriptorBuilder::AllocateOptions(const FileOptions& orig_options,
 | 
	
		
			
				|  |  | +                                        FileDescriptor* descriptor) {
 | 
	
		
			
				|  |  |    // We add the dummy token so that LookupSymbol does the right thing.
 | 
	
		
			
				|  |  |    AllocateOptionsImpl(descriptor->package() + ".dummy", descriptor->name(),
 | 
	
		
			
				|  |  |                        orig_options, descriptor);
 |