|  | @@ -420,34 +420,8 @@ public abstract class GeneratedMessageLite extends AbstractMessageLite {
 | 
	
		
			
				|  |  |    /** For use by generated code only. */
 | 
	
		
			
				|  |  |    public static <ContainingType extends MessageLite, Type>
 | 
	
		
			
				|  |  |        GeneratedExtension<ContainingType, Type>
 | 
	
		
			
				|  |  | -      newGeneratedExtension(
 | 
	
		
			
				|  |  | -        final ContainingType containingTypeDefaultInstance,
 | 
	
		
			
				|  |  | -        final Type defaultValue,
 | 
	
		
			
				|  |  | -        final MessageLite messageDefaultInstance,
 | 
	
		
			
				|  |  | -        final Internal.EnumLiteMap<?> enumTypeMap,
 | 
	
		
			
				|  |  | -        final int number,
 | 
	
		
			
				|  |  | -        final WireFormat.FieldType type) {
 | 
	
		
			
				|  |  | -    return new GeneratedExtension<ContainingType, Type>(
 | 
	
		
			
				|  |  | -      containingTypeDefaultInstance, defaultValue, messageDefaultInstance,
 | 
	
		
			
				|  |  | -      new ExtensionDescriptor(enumTypeMap, number, type,
 | 
	
		
			
				|  |  | -        false /* isRepeated */, false /* isPacked */));
 | 
	
		
			
				|  |  | -  }
 | 
	
		
			
				|  |  | -
 | 
	
		
			
				|  |  | -  /** For use by generated code only. */
 | 
	
		
			
				|  |  | -  public static <ContainingType extends MessageLite, Type>
 | 
	
		
			
				|  |  | -      GeneratedExtension<ContainingType, List<Type>>
 | 
	
		
			
				|  |  | -      newRepeatedGeneratedExtension(
 | 
	
		
			
				|  |  | -        final ContainingType containingTypeDefaultInstance,
 | 
	
		
			
				|  |  | -        final MessageLite messageDefaultInstance,
 | 
	
		
			
				|  |  | -        final Internal.EnumLiteMap<?> enumTypeMap,
 | 
	
		
			
				|  |  | -        final int number,
 | 
	
		
			
				|  |  | -        final WireFormat.FieldType type,
 | 
	
		
			
				|  |  | -        final boolean isPacked) {
 | 
	
		
			
				|  |  | -    return new GeneratedExtension<ContainingType, List<Type>>(
 | 
	
		
			
				|  |  | -      containingTypeDefaultInstance, Collections.<Type>emptyList(),
 | 
	
		
			
				|  |  | -      messageDefaultInstance,
 | 
	
		
			
				|  |  | -      new ExtensionDescriptor(
 | 
	
		
			
				|  |  | -        enumTypeMap, number, type, true /* isRepeated */, isPacked));
 | 
	
		
			
				|  |  | +      newGeneratedExtension() {
 | 
	
		
			
				|  |  | +    return new GeneratedExtension<ContainingType, Type>();
 | 
	
		
			
				|  |  |    }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |    private static final class ExtensionDescriptor
 | 
	
	
		
			
				|  | @@ -515,7 +489,16 @@ public abstract class GeneratedMessageLite extends AbstractMessageLite {
 | 
	
		
			
				|  |  |     */
 | 
	
		
			
				|  |  |    public static final class GeneratedExtension<
 | 
	
		
			
				|  |  |        ContainingType extends MessageLite, Type> {
 | 
	
		
			
				|  |  | -    private GeneratedExtension(
 | 
	
		
			
				|  |  | +    // We can't always initialize a GeneratedExtension when we first construct
 | 
	
		
			
				|  |  | +    // it due to initialization order difficulties (namely, the default
 | 
	
		
			
				|  |  | +    // instances may not have been constructed yet).  So, we construct an
 | 
	
		
			
				|  |  | +    // uninitialized GeneratedExtension once, then call internalInit() on it
 | 
	
		
			
				|  |  | +    // later.  Generated code will always call internalInit() on all extensions
 | 
	
		
			
				|  |  | +    // as part of the static initialization code, and internalInit() throws an
 | 
	
		
			
				|  |  | +    // exception if called more than once, so this method is useless to users.
 | 
	
		
			
				|  |  | +    private GeneratedExtension() {}
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    private void internalInit(
 | 
	
		
			
				|  |  |          final ContainingType containingTypeDefaultInstance,
 | 
	
		
			
				|  |  |          final Type defaultValue,
 | 
	
		
			
				|  |  |          final MessageLite messageDefaultInstance,
 | 
	
	
		
			
				|  | @@ -526,10 +509,39 @@ public abstract class GeneratedMessageLite extends AbstractMessageLite {
 | 
	
		
			
				|  |  |        this.descriptor = descriptor;
 | 
	
		
			
				|  |  |      }
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  | -    private final ContainingType containingTypeDefaultInstance;
 | 
	
		
			
				|  |  | -    private final Type defaultValue;
 | 
	
		
			
				|  |  | -    private final MessageLite messageDefaultInstance;
 | 
	
		
			
				|  |  | -    private final ExtensionDescriptor descriptor;
 | 
	
		
			
				|  |  | +    /** For use by generated code only. */
 | 
	
		
			
				|  |  | +    public void internalInitSingular(
 | 
	
		
			
				|  |  | +        final ContainingType containingTypeDefaultInstance,
 | 
	
		
			
				|  |  | +        final Type defaultValue,
 | 
	
		
			
				|  |  | +        final MessageLite messageDefaultInstance,
 | 
	
		
			
				|  |  | +        final Internal.EnumLiteMap<?> enumTypeMap,
 | 
	
		
			
				|  |  | +        final int number,
 | 
	
		
			
				|  |  | +        final WireFormat.FieldType type) {
 | 
	
		
			
				|  |  | +      internalInit(
 | 
	
		
			
				|  |  | +        containingTypeDefaultInstance, defaultValue, messageDefaultInstance,
 | 
	
		
			
				|  |  | +        new ExtensionDescriptor(enumTypeMap, number, type,
 | 
	
		
			
				|  |  | +          false /* isRepeated */, false /* isPacked */));
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    /** For use by generated code only. */
 | 
	
		
			
				|  |  | +    public void internalInitRepeated(
 | 
	
		
			
				|  |  | +        final ContainingType containingTypeDefaultInstance,
 | 
	
		
			
				|  |  | +        final MessageLite messageDefaultInstance,
 | 
	
		
			
				|  |  | +        final Internal.EnumLiteMap<?> enumTypeMap,
 | 
	
		
			
				|  |  | +        final int number,
 | 
	
		
			
				|  |  | +        final WireFormat.FieldType type,
 | 
	
		
			
				|  |  | +        final boolean isPacked) {
 | 
	
		
			
				|  |  | +      internalInit(
 | 
	
		
			
				|  |  | +        containingTypeDefaultInstance, (Type) Collections.emptyList(),
 | 
	
		
			
				|  |  | +        messageDefaultInstance,
 | 
	
		
			
				|  |  | +        new ExtensionDescriptor(
 | 
	
		
			
				|  |  | +          enumTypeMap, number, type, true /* isRepeated */, isPacked));
 | 
	
		
			
				|  |  | +    }
 | 
	
		
			
				|  |  | +
 | 
	
		
			
				|  |  | +    private ContainingType containingTypeDefaultInstance;
 | 
	
		
			
				|  |  | +    private Type defaultValue;
 | 
	
		
			
				|  |  | +    private MessageLite messageDefaultInstance;
 | 
	
		
			
				|  |  | +    private ExtensionDescriptor descriptor;
 | 
	
		
			
				|  |  |  
 | 
	
		
			
				|  |  |      /**
 | 
	
		
			
				|  |  |       * Default instance of the type being extended, used to identify that type.
 |