src/runtime/Tests/UnittestCustomOptions.pb.m
// Generated by the protocol buffer compiler.  DO NOT EDIT!

#import "UnittestCustomOptions.pb.h"

@implementation UnittestCustomOptionsRoot
static id<PBExtensionField> UnittestCustomOptionsRoot_fileOpt1 = nil;
static id<PBExtensionField> UnittestCustomOptionsRoot_messageOpt1 = nil;
static id<PBExtensionField> UnittestCustomOptionsRoot_fieldOpt1 = nil;
static id<PBExtensionField> UnittestCustomOptionsRoot_fieldOpt2 = nil;
static id<PBExtensionField> UnittestCustomOptionsRoot_enumOpt1 = nil;
static id<PBExtensionField> UnittestCustomOptionsRoot_enumValueOpt1 = nil;
static id<PBExtensionField> UnittestCustomOptionsRoot_serviceOpt1 = nil;
static id<PBExtensionField> UnittestCustomOptionsRoot_methodOpt1 = nil;
static id<PBExtensionField> UnittestCustomOptionsRoot_boolOpt = nil;
static id<PBExtensionField> UnittestCustomOptionsRoot_int32Opt = nil;
static id<PBExtensionField> UnittestCustomOptionsRoot_int64Opt = nil;
static id<PBExtensionField> UnittestCustomOptionsRoot_uint32Opt = nil;
static id<PBExtensionField> UnittestCustomOptionsRoot_uint64Opt = nil;
static id<PBExtensionField> UnittestCustomOptionsRoot_sint32Opt = nil;
static id<PBExtensionField> UnittestCustomOptionsRoot_sint64Opt = nil;
static id<PBExtensionField> UnittestCustomOptionsRoot_fixed32Opt = nil;
static id<PBExtensionField> UnittestCustomOptionsRoot_fixed64Opt = nil;
static id<PBExtensionField> UnittestCustomOptionsRoot_sfixed32Opt = nil;
static id<PBExtensionField> UnittestCustomOptionsRoot_sfixed64Opt = nil;
static id<PBExtensionField> UnittestCustomOptionsRoot_floatOpt = nil;
static id<PBExtensionField> UnittestCustomOptionsRoot_doubleOpt = nil;
static id<PBExtensionField> UnittestCustomOptionsRoot_stringOpt = nil;
static id<PBExtensionField> UnittestCustomOptionsRoot_bytesOpt = nil;
static id<PBExtensionField> UnittestCustomOptionsRoot_enumOpt = nil;
static id<PBExtensionField> UnittestCustomOptionsRoot_messageTypeOpt = nil;
static id<PBExtensionField> UnittestCustomOptionsRoot_quux = nil;
static id<PBExtensionField> UnittestCustomOptionsRoot_corge = nil;
static id<PBExtensionField> UnittestCustomOptionsRoot_grault = nil;
static id<PBExtensionField> UnittestCustomOptionsRoot_garply = nil;
static id<PBExtensionField> UnittestCustomOptionsRoot_complexOpt1 = nil;
static id<PBExtensionField> UnittestCustomOptionsRoot_complexOpt2 = nil;
static id<PBExtensionField> UnittestCustomOptionsRoot_complexOpt3 = nil;
static id<PBExtensionField> UnittestCustomOptionsRoot_complexOpt6 = nil;
static id<PBExtensionField> UnittestCustomOptionsRoot_fileopt = nil;
static id<PBExtensionField> UnittestCustomOptionsRoot_msgopt = nil;
static id<PBExtensionField> UnittestCustomOptionsRoot_fieldopt = nil;
static id<PBExtensionField> UnittestCustomOptionsRoot_enumopt = nil;
static id<PBExtensionField> UnittestCustomOptionsRoot_enumvalopt = nil;
static id<PBExtensionField> UnittestCustomOptionsRoot_serviceopt = nil;
static id<PBExtensionField> UnittestCustomOptionsRoot_methodopt = nil;
static id<PBExtensionField> ComplexOptionType2_ComplexOptionType4_complexOpt4 = nil;
static id<PBExtensionField> AggregateMessageSetElement_messageSetExtension = nil;
static id<PBExtensionField> Aggregate_nested = nil;
static PBExtensionRegistry* extensionRegistry = nil;
+ (PBExtensionRegistry*) extensionRegistry {
  return extensionRegistry;
}

+ (void) initialize {
  if (self == [UnittestCustomOptionsRoot class]) {
    UnittestCustomOptionsRoot_fileOpt1 =
      [[PBConcreteExtensionField extensionWithType:PBExtensionTypeUInt64
                                     extendedClass:[PBFileOptions class]
                                       fieldNumber:7736974
                                      defaultValue:[NSNumber numberWithLongLong:0L]
                               messageOrGroupClass:[NSNumber class]
                                        isRepeated:NO
                                          isPacked:NO
                            isMessageSetWireFormat:NO] retain];
    UnittestCustomOptionsRoot_messageOpt1 =
      [[PBConcreteExtensionField extensionWithType:PBExtensionTypeInt32
                                     extendedClass:[PBMessageOptions class]
                                       fieldNumber:7739036
                                      defaultValue:[NSNumber numberWithInt:0]
                               messageOrGroupClass:[NSNumber class]
                                        isRepeated:NO
                                          isPacked:NO
                            isMessageSetWireFormat:NO] retain];
    UnittestCustomOptionsRoot_fieldOpt1 =
      [[PBConcreteExtensionField extensionWithType:PBExtensionTypeFixed64
                                     extendedClass:[PBFieldOptions class]
                                       fieldNumber:7740936
                                      defaultValue:[NSNumber numberWithLongLong:0L]
                               messageOrGroupClass:[NSNumber class]
                                        isRepeated:NO
                                          isPacked:NO
                            isMessageSetWireFormat:NO] retain];
    UnittestCustomOptionsRoot_fieldOpt2 =
      [[PBConcreteExtensionField extensionWithType:PBExtensionTypeInt32
                                     extendedClass:[PBFieldOptions class]
                                       fieldNumber:7753913
                                      defaultValue:[NSNumber numberWithInt:42]
                               messageOrGroupClass:[NSNumber class]
                                        isRepeated:NO
                                          isPacked:NO
                            isMessageSetWireFormat:NO] retain];
    UnittestCustomOptionsRoot_enumOpt1 =
      [[PBConcreteExtensionField extensionWithType:PBExtensionTypeSFixed32
                                     extendedClass:[PBEnumOptions class]
                                       fieldNumber:7753576
                                      defaultValue:[NSNumber numberWithInt:0]
                               messageOrGroupClass:[NSNumber class]
                                        isRepeated:NO
                                          isPacked:NO
                            isMessageSetWireFormat:NO] retain];
    UnittestCustomOptionsRoot_enumValueOpt1 =
      [[PBConcreteExtensionField extensionWithType:PBExtensionTypeInt32
                                     extendedClass:[PBEnumValueOptions class]
                                       fieldNumber:1560678
                                      defaultValue:[NSNumber numberWithInt:0]
                               messageOrGroupClass:[NSNumber class]
                                        isRepeated:NO
                                          isPacked:NO
                            isMessageSetWireFormat:NO] retain];
    UnittestCustomOptionsRoot_serviceOpt1 =
      [[PBConcreteExtensionField extensionWithType:PBExtensionTypeSInt64
                                     extendedClass:[PBServiceOptions class]
                                       fieldNumber:7887650
                                      defaultValue:[NSNumber numberWithLongLong:0L]
                               messageOrGroupClass:[NSNumber class]
                                        isRepeated:NO
                                          isPacked:NO
                            isMessageSetWireFormat:NO] retain];
    UnittestCustomOptionsRoot_methodOpt1 =
      [[PBConcreteExtensionField extensionWithType:PBExtensionTypeEnum
                                     extendedClass:[PBMethodOptions class]
                                       fieldNumber:7890860
                                      defaultValue:[NSNumber numberWithInt:MethodOpt1Methodopt1Val1]
                               messageOrGroupClass:[NSNumber class]
                                        isRepeated:NO
                                          isPacked:NO
                            isMessageSetWireFormat:NO] retain];
    UnittestCustomOptionsRoot_boolOpt =
      [[PBConcreteExtensionField extensionWithType:PBExtensionTypeBool
                                     extendedClass:[PBMessageOptions class]
                                       fieldNumber:7706090
                                      defaultValue:[NSNumber numberWithBool:NO]
                               messageOrGroupClass:[NSNumber class]
                                        isRepeated:NO
                                          isPacked:NO
                            isMessageSetWireFormat:NO] retain];
    UnittestCustomOptionsRoot_int32Opt =
      [[PBConcreteExtensionField extensionWithType:PBExtensionTypeInt32
                                     extendedClass:[PBMessageOptions class]
                                       fieldNumber:7705709
                                      defaultValue:[NSNumber numberWithInt:0]
                               messageOrGroupClass:[NSNumber class]
                                        isRepeated:NO
                                          isPacked:NO
                            isMessageSetWireFormat:NO] retain];
    UnittestCustomOptionsRoot_int64Opt =
      [[PBConcreteExtensionField extensionWithType:PBExtensionTypeInt64
                                     extendedClass:[PBMessageOptions class]
                                       fieldNumber:7705542
                                      defaultValue:[NSNumber numberWithLongLong:0L]
                               messageOrGroupClass:[NSNumber class]
                                        isRepeated:NO
                                          isPacked:NO
                            isMessageSetWireFormat:NO] retain];
    UnittestCustomOptionsRoot_uint32Opt =
      [[PBConcreteExtensionField extensionWithType:PBExtensionTypeUInt32
                                     extendedClass:[PBMessageOptions class]
                                       fieldNumber:7704880
                                      defaultValue:[NSNumber numberWithInt:0]
                               messageOrGroupClass:[NSNumber class]
                                        isRepeated:NO
                                          isPacked:NO
                            isMessageSetWireFormat:NO] retain];
    UnittestCustomOptionsRoot_uint64Opt =
      [[PBConcreteExtensionField extensionWithType:PBExtensionTypeUInt64
                                     extendedClass:[PBMessageOptions class]
                                       fieldNumber:7702367
                                      defaultValue:[NSNumber numberWithLongLong:0L]
                               messageOrGroupClass:[NSNumber class]
                                        isRepeated:NO
                                          isPacked:NO
                            isMessageSetWireFormat:NO] retain];
    UnittestCustomOptionsRoot_sint32Opt =
      [[PBConcreteExtensionField extensionWithType:PBExtensionTypeSInt32
                                     extendedClass:[PBMessageOptions class]
                                       fieldNumber:7701568
                                      defaultValue:[NSNumber numberWithInt:0]
                               messageOrGroupClass:[NSNumber class]
                                        isRepeated:NO
                                          isPacked:NO
                            isMessageSetWireFormat:NO] retain];
    UnittestCustomOptionsRoot_sint64Opt =
      [[PBConcreteExtensionField extensionWithType:PBExtensionTypeSInt64
                                     extendedClass:[PBMessageOptions class]
                                       fieldNumber:7700863
                                      defaultValue:[NSNumber numberWithLongLong:0L]
                               messageOrGroupClass:[NSNumber class]
                                        isRepeated:NO
                                          isPacked:NO
                            isMessageSetWireFormat:NO] retain];
    UnittestCustomOptionsRoot_fixed32Opt =
      [[PBConcreteExtensionField extensionWithType:PBExtensionTypeFixed32
                                     extendedClass:[PBMessageOptions class]
                                       fieldNumber:7700307
                                      defaultValue:[NSNumber numberWithInt:0]
                               messageOrGroupClass:[NSNumber class]
                                        isRepeated:NO
                                          isPacked:NO
                            isMessageSetWireFormat:NO] retain];
    UnittestCustomOptionsRoot_fixed64Opt =
      [[PBConcreteExtensionField extensionWithType:PBExtensionTypeFixed64
                                     extendedClass:[PBMessageOptions class]
                                       fieldNumber:7700194
                                      defaultValue:[NSNumber numberWithLongLong:0L]
                               messageOrGroupClass:[NSNumber class]
                                        isRepeated:NO
                                          isPacked:NO
                            isMessageSetWireFormat:NO] retain];
    UnittestCustomOptionsRoot_sfixed32Opt =
      [[PBConcreteExtensionField extensionWithType:PBExtensionTypeSFixed32
                                     extendedClass:[PBMessageOptions class]
                                       fieldNumber:7698645
                                      defaultValue:[NSNumber numberWithInt:0]
                               messageOrGroupClass:[NSNumber class]
                                        isRepeated:NO
                                          isPacked:NO
                            isMessageSetWireFormat:NO] retain];
    UnittestCustomOptionsRoot_sfixed64Opt =
      [[PBConcreteExtensionField extensionWithType:PBExtensionTypeSFixed64
                                     extendedClass:[PBMessageOptions class]
                                       fieldNumber:7685475
                                      defaultValue:[NSNumber numberWithLongLong:0L]
                               messageOrGroupClass:[NSNumber class]
                                        isRepeated:NO
                                          isPacked:NO
                            isMessageSetWireFormat:NO] retain];
    UnittestCustomOptionsRoot_floatOpt =
      [[PBConcreteExtensionField extensionWithType:PBExtensionTypeFloat
                                     extendedClass:[PBMessageOptions class]
                                       fieldNumber:7675390
                                      defaultValue:[NSNumber numberWithFloat:0]
                               messageOrGroupClass:[NSNumber class]
                                        isRepeated:NO
                                          isPacked:NO
                            isMessageSetWireFormat:NO] retain];
    UnittestCustomOptionsRoot_doubleOpt =
      [[PBConcreteExtensionField extensionWithType:PBExtensionTypeDouble
                                     extendedClass:[PBMessageOptions class]
                                       fieldNumber:7673293
                                      defaultValue:[NSNumber numberWithDouble:0]
                               messageOrGroupClass:[NSNumber class]
                                        isRepeated:NO
                                          isPacked:NO
                            isMessageSetWireFormat:NO] retain];
    UnittestCustomOptionsRoot_stringOpt =
      [[PBConcreteExtensionField extensionWithType:PBExtensionTypeString
                                     extendedClass:[PBMessageOptions class]
                                       fieldNumber:7673285
                                      defaultValue:@""
                               messageOrGroupClass:[NSString class]
                                        isRepeated:NO
                                          isPacked:NO
                            isMessageSetWireFormat:NO] retain];
    UnittestCustomOptionsRoot_bytesOpt =
      [[PBConcreteExtensionField extensionWithType:PBExtensionTypeBytes
                                     extendedClass:[PBMessageOptions class]
                                       fieldNumber:7673238
                                      defaultValue:[NSData data]
                               messageOrGroupClass:[NSData class]
                                        isRepeated:NO
                                          isPacked:NO
                            isMessageSetWireFormat:NO] retain];
    UnittestCustomOptionsRoot_enumOpt =
      [[PBConcreteExtensionField extensionWithType:PBExtensionTypeEnum
                                     extendedClass:[PBMessageOptions class]
                                       fieldNumber:7673233
                                      defaultValue:[NSNumber numberWithInt:DummyMessageContainingEnum_TestEnumTypeTestOptionEnumType1]
                               messageOrGroupClass:[NSNumber class]
                                        isRepeated:NO
                                          isPacked:NO
                            isMessageSetWireFormat:NO] retain];
    UnittestCustomOptionsRoot_messageTypeOpt =
      [[PBConcreteExtensionField extensionWithType:PBExtensionTypeMessage
                                     extendedClass:[PBMessageOptions class]
                                       fieldNumber:7665967
                                      defaultValue:[DummyMessageInvalidAsOptionType defaultInstance]
                               messageOrGroupClass:[DummyMessageInvalidAsOptionType class]
                                        isRepeated:NO
                                          isPacked:NO
                            isMessageSetWireFormat:NO] retain];
    UnittestCustomOptionsRoot_quux =
      [[PBConcreteExtensionField extensionWithType:PBExtensionTypeInt32
                                     extendedClass:[ComplexOptionType1 class]
                                       fieldNumber:7663707
                                      defaultValue:[NSNumber numberWithInt:0]
                               messageOrGroupClass:[NSNumber class]
                                        isRepeated:NO
                                          isPacked:NO
                            isMessageSetWireFormat:NO] retain];
    UnittestCustomOptionsRoot_corge =
      [[PBConcreteExtensionField extensionWithType:PBExtensionTypeMessage
                                     extendedClass:[ComplexOptionType1 class]
                                       fieldNumber:7663442
                                      defaultValue:[ComplexOptionType3 defaultInstance]
                               messageOrGroupClass:[ComplexOptionType3 class]
                                        isRepeated:NO
                                          isPacked:NO
                            isMessageSetWireFormat:NO] retain];
    UnittestCustomOptionsRoot_grault =
      [[PBConcreteExtensionField extensionWithType:PBExtensionTypeInt32
                                     extendedClass:[ComplexOptionType2 class]
                                       fieldNumber:7650927
                                      defaultValue:[NSNumber numberWithInt:0]
                               messageOrGroupClass:[NSNumber class]
                                        isRepeated:NO
                                          isPacked:NO
                            isMessageSetWireFormat:NO] retain];
    UnittestCustomOptionsRoot_garply =
      [[PBConcreteExtensionField extensionWithType:PBExtensionTypeMessage
                                     extendedClass:[ComplexOptionType2 class]
                                       fieldNumber:7649992
                                      defaultValue:[ComplexOptionType1 defaultInstance]
                               messageOrGroupClass:[ComplexOptionType1 class]
                                        isRepeated:NO
                                          isPacked:NO
                            isMessageSetWireFormat:NO] retain];
    UnittestCustomOptionsRoot_complexOpt1 =
      [[PBConcreteExtensionField extensionWithType:PBExtensionTypeMessage
                                     extendedClass:[PBMessageOptions class]
                                       fieldNumber:7646756
                                      defaultValue:[ComplexOptionType1 defaultInstance]
                               messageOrGroupClass:[ComplexOptionType1 class]
                                        isRepeated:NO
                                          isPacked:NO
                            isMessageSetWireFormat:NO] retain];
    UnittestCustomOptionsRoot_complexOpt2 =
      [[PBConcreteExtensionField extensionWithType:PBExtensionTypeMessage
                                     extendedClass:[PBMessageOptions class]
                                       fieldNumber:7636949
                                      defaultValue:[ComplexOptionType2 defaultInstance]
                               messageOrGroupClass:[ComplexOptionType2 class]
                                        isRepeated:NO
                                          isPacked:NO
                            isMessageSetWireFormat:NO] retain];
    UnittestCustomOptionsRoot_complexOpt3 =
      [[PBConcreteExtensionField extensionWithType:PBExtensionTypeMessage
                                     extendedClass:[PBMessageOptions class]
                                       fieldNumber:7636463
                                      defaultValue:[ComplexOptionType3 defaultInstance]
                               messageOrGroupClass:[ComplexOptionType3 class]
                                        isRepeated:NO
                                          isPacked:NO
                            isMessageSetWireFormat:NO] retain];
    UnittestCustomOptionsRoot_complexOpt6 =
      [[PBConcreteExtensionField extensionWithType:PBExtensionTypeGroup
                                     extendedClass:[PBMessageOptions class]
                                       fieldNumber:7595468
                                      defaultValue:[ComplexOpt6 defaultInstance]
                               messageOrGroupClass:[ComplexOpt6 class]
                                        isRepeated:NO
                                          isPacked:NO
                            isMessageSetWireFormat:NO] retain];
    UnittestCustomOptionsRoot_fileopt =
      [[PBConcreteExtensionField extensionWithType:PBExtensionTypeMessage
                                     extendedClass:[PBFileOptions class]
                                       fieldNumber:15478479
                                      defaultValue:[Aggregate defaultInstance]
                               messageOrGroupClass:[Aggregate class]
                                        isRepeated:NO
                                          isPacked:NO
                            isMessageSetWireFormat:NO] retain];
    UnittestCustomOptionsRoot_msgopt =
      [[PBConcreteExtensionField extensionWithType:PBExtensionTypeMessage
                                     extendedClass:[PBMessageOptions class]
                                       fieldNumber:15480088
                                      defaultValue:[Aggregate defaultInstance]
                               messageOrGroupClass:[Aggregate class]
                                        isRepeated:NO
                                          isPacked:NO
                            isMessageSetWireFormat:NO] retain];
    UnittestCustomOptionsRoot_fieldopt =
      [[PBConcreteExtensionField extensionWithType:PBExtensionTypeMessage
                                     extendedClass:[PBFieldOptions class]
                                       fieldNumber:15481374
                                      defaultValue:[Aggregate defaultInstance]
                               messageOrGroupClass:[Aggregate class]
                                        isRepeated:NO
                                          isPacked:NO
                            isMessageSetWireFormat:NO] retain];
    UnittestCustomOptionsRoot_enumopt =
      [[PBConcreteExtensionField extensionWithType:PBExtensionTypeMessage
                                     extendedClass:[PBEnumOptions class]
                                       fieldNumber:15483218
                                      defaultValue:[Aggregate defaultInstance]
                               messageOrGroupClass:[Aggregate class]
                                        isRepeated:NO
                                          isPacked:NO
                            isMessageSetWireFormat:NO] retain];
    UnittestCustomOptionsRoot_enumvalopt =
      [[PBConcreteExtensionField extensionWithType:PBExtensionTypeMessage
                                     extendedClass:[PBEnumValueOptions class]
                                       fieldNumber:15486921
                                      defaultValue:[Aggregate defaultInstance]
                               messageOrGroupClass:[Aggregate class]
                                        isRepeated:NO
                                          isPacked:NO
                            isMessageSetWireFormat:NO] retain];
    UnittestCustomOptionsRoot_serviceopt =
      [[PBConcreteExtensionField extensionWithType:PBExtensionTypeMessage
                                     extendedClass:[PBServiceOptions class]
                                       fieldNumber:15497145
                                      defaultValue:[Aggregate defaultInstance]
                               messageOrGroupClass:[Aggregate class]
                                        isRepeated:NO
                                          isPacked:NO
                            isMessageSetWireFormat:NO] retain];
    UnittestCustomOptionsRoot_methodopt =
      [[PBConcreteExtensionField extensionWithType:PBExtensionTypeMessage
                                     extendedClass:[PBMethodOptions class]
                                       fieldNumber:15512713
                                      defaultValue:[Aggregate defaultInstance]
                               messageOrGroupClass:[Aggregate class]
                                        isRepeated:NO
                                          isPacked:NO
                            isMessageSetWireFormat:NO] retain];
    ComplexOptionType2_ComplexOptionType4_complexOpt4 =
      [[PBConcreteExtensionField extensionWithType:PBExtensionTypeMessage
                                     extendedClass:[PBMessageOptions class]
                                       fieldNumber:7633546
                                      defaultValue:[ComplexOptionType2_ComplexOptionType4 defaultInstance]
                               messageOrGroupClass:[ComplexOptionType2_ComplexOptionType4 class]
                                        isRepeated:NO
                                          isPacked:NO
                            isMessageSetWireFormat:NO] retain];
    AggregateMessageSetElement_messageSetExtension =
      [[PBConcreteExtensionField extensionWithType:PBExtensionTypeMessage
                                     extendedClass:[AggregateMessageSet class]
                                       fieldNumber:15447542
                                      defaultValue:[AggregateMessageSetElement defaultInstance]
                               messageOrGroupClass:[AggregateMessageSetElement class]
                                        isRepeated:NO
                                          isPacked:NO
                            isMessageSetWireFormat:YES] retain];
    Aggregate_nested =
      [[PBConcreteExtensionField extensionWithType:PBExtensionTypeMessage
                                     extendedClass:[PBFileOptions class]
                                       fieldNumber:15476903
                                      defaultValue:[Aggregate defaultInstance]
                               messageOrGroupClass:[Aggregate class]
                                        isRepeated:NO
                                          isPacked:NO
                            isMessageSetWireFormat:NO] retain];
    PBMutableExtensionRegistry* registry = [PBMutableExtensionRegistry registry];
    [self registerAllExtensions:registry];
    [PBDescriptorRoot registerAllExtensions:registry];
    extensionRegistry = [registry retain];
  }
}
+ (void) registerAllExtensions:(PBMutableExtensionRegistry*) registry {
  [registry addExtension:UnittestCustomOptionsRoot_fileOpt1];
  [registry addExtension:UnittestCustomOptionsRoot_messageOpt1];
  [registry addExtension:UnittestCustomOptionsRoot_fieldOpt1];
  [registry addExtension:UnittestCustomOptionsRoot_fieldOpt2];
  [registry addExtension:UnittestCustomOptionsRoot_enumOpt1];
  [registry addExtension:UnittestCustomOptionsRoot_enumValueOpt1];
  [registry addExtension:UnittestCustomOptionsRoot_serviceOpt1];
  [registry addExtension:UnittestCustomOptionsRoot_methodOpt1];
  [registry addExtension:UnittestCustomOptionsRoot_boolOpt];
  [registry addExtension:UnittestCustomOptionsRoot_int32Opt];
  [registry addExtension:UnittestCustomOptionsRoot_int64Opt];
  [registry addExtension:UnittestCustomOptionsRoot_uint32Opt];
  [registry addExtension:UnittestCustomOptionsRoot_uint64Opt];
  [registry addExtension:UnittestCustomOptionsRoot_sint32Opt];
  [registry addExtension:UnittestCustomOptionsRoot_sint64Opt];
  [registry addExtension:UnittestCustomOptionsRoot_fixed32Opt];
  [registry addExtension:UnittestCustomOptionsRoot_fixed64Opt];
  [registry addExtension:UnittestCustomOptionsRoot_sfixed32Opt];
  [registry addExtension:UnittestCustomOptionsRoot_sfixed64Opt];
  [registry addExtension:UnittestCustomOptionsRoot_floatOpt];
  [registry addExtension:UnittestCustomOptionsRoot_doubleOpt];
  [registry addExtension:UnittestCustomOptionsRoot_stringOpt];
  [registry addExtension:UnittestCustomOptionsRoot_bytesOpt];
  [registry addExtension:UnittestCustomOptionsRoot_enumOpt];
  [registry addExtension:UnittestCustomOptionsRoot_messageTypeOpt];
  [registry addExtension:UnittestCustomOptionsRoot_quux];
  [registry addExtension:UnittestCustomOptionsRoot_corge];
  [registry addExtension:UnittestCustomOptionsRoot_grault];
  [registry addExtension:UnittestCustomOptionsRoot_garply];
  [registry addExtension:UnittestCustomOptionsRoot_complexOpt1];
  [registry addExtension:UnittestCustomOptionsRoot_complexOpt2];
  [registry addExtension:UnittestCustomOptionsRoot_complexOpt3];
  [registry addExtension:UnittestCustomOptionsRoot_complexOpt6];
  [registry addExtension:UnittestCustomOptionsRoot_fileopt];
  [registry addExtension:UnittestCustomOptionsRoot_msgopt];
  [registry addExtension:UnittestCustomOptionsRoot_fieldopt];
  [registry addExtension:UnittestCustomOptionsRoot_enumopt];
  [registry addExtension:UnittestCustomOptionsRoot_enumvalopt];
  [registry addExtension:UnittestCustomOptionsRoot_serviceopt];
  [registry addExtension:UnittestCustomOptionsRoot_methodopt];
  [registry addExtension:ComplexOptionType2_ComplexOptionType4_complexOpt4];
  [registry addExtension:AggregateMessageSetElement_messageSetExtension];
  [registry addExtension:Aggregate_nested];
}
+ (id<PBExtensionField>) fileOpt1 {
  return UnittestCustomOptionsRoot_fileOpt1;
}
+ (id<PBExtensionField>) messageOpt1 {
  return UnittestCustomOptionsRoot_messageOpt1;
}
+ (id<PBExtensionField>) fieldOpt1 {
  return UnittestCustomOptionsRoot_fieldOpt1;
}
+ (id<PBExtensionField>) fieldOpt2 {
  return UnittestCustomOptionsRoot_fieldOpt2;
}
+ (id<PBExtensionField>) enumOpt1 {
  return UnittestCustomOptionsRoot_enumOpt1;
}
+ (id<PBExtensionField>) enumValueOpt1 {
  return UnittestCustomOptionsRoot_enumValueOpt1;
}
+ (id<PBExtensionField>) serviceOpt1 {
  return UnittestCustomOptionsRoot_serviceOpt1;
}
+ (id<PBExtensionField>) methodOpt1 {
  return UnittestCustomOptionsRoot_methodOpt1;
}
+ (id<PBExtensionField>) boolOpt {
  return UnittestCustomOptionsRoot_boolOpt;
}
+ (id<PBExtensionField>) int32Opt {
  return UnittestCustomOptionsRoot_int32Opt;
}
+ (id<PBExtensionField>) int64Opt {
  return UnittestCustomOptionsRoot_int64Opt;
}
+ (id<PBExtensionField>) uint32Opt {
  return UnittestCustomOptionsRoot_uint32Opt;
}
+ (id<PBExtensionField>) uint64Opt {
  return UnittestCustomOptionsRoot_uint64Opt;
}
+ (id<PBExtensionField>) sint32Opt {
  return UnittestCustomOptionsRoot_sint32Opt;
}
+ (id<PBExtensionField>) sint64Opt {
  return UnittestCustomOptionsRoot_sint64Opt;
}
+ (id<PBExtensionField>) fixed32Opt {
  return UnittestCustomOptionsRoot_fixed32Opt;
}
+ (id<PBExtensionField>) fixed64Opt {
  return UnittestCustomOptionsRoot_fixed64Opt;
}
+ (id<PBExtensionField>) sfixed32Opt {
  return UnittestCustomOptionsRoot_sfixed32Opt;
}
+ (id<PBExtensionField>) sfixed64Opt {
  return UnittestCustomOptionsRoot_sfixed64Opt;
}
+ (id<PBExtensionField>) floatOpt {
  return UnittestCustomOptionsRoot_floatOpt;
}
+ (id<PBExtensionField>) doubleOpt {
  return UnittestCustomOptionsRoot_doubleOpt;
}
+ (id<PBExtensionField>) stringOpt {
  return UnittestCustomOptionsRoot_stringOpt;
}
+ (id<PBExtensionField>) bytesOpt {
  return UnittestCustomOptionsRoot_bytesOpt;
}
+ (id<PBExtensionField>) enumOpt {
  return UnittestCustomOptionsRoot_enumOpt;
}
+ (id<PBExtensionField>) messageTypeOpt {
  return UnittestCustomOptionsRoot_messageTypeOpt;
}
+ (id<PBExtensionField>) quux {
  return UnittestCustomOptionsRoot_quux;
}
+ (id<PBExtensionField>) corge {
  return UnittestCustomOptionsRoot_corge;
}
+ (id<PBExtensionField>) grault {
  return UnittestCustomOptionsRoot_grault;
}
+ (id<PBExtensionField>) garply {
  return UnittestCustomOptionsRoot_garply;
}
+ (id<PBExtensionField>) complexOpt1 {
  return UnittestCustomOptionsRoot_complexOpt1;
}
+ (id<PBExtensionField>) complexOpt2 {
  return UnittestCustomOptionsRoot_complexOpt2;
}
+ (id<PBExtensionField>) complexOpt3 {
  return UnittestCustomOptionsRoot_complexOpt3;
}
+ (id<PBExtensionField>) complexOpt6 {
  return UnittestCustomOptionsRoot_complexOpt6;
}
+ (id<PBExtensionField>) fileopt {
  return UnittestCustomOptionsRoot_fileopt;
}
+ (id<PBExtensionField>) msgopt {
  return UnittestCustomOptionsRoot_msgopt;
}
+ (id<PBExtensionField>) fieldopt {
  return UnittestCustomOptionsRoot_fieldopt;
}
+ (id<PBExtensionField>) enumopt {
  return UnittestCustomOptionsRoot_enumopt;
}
+ (id<PBExtensionField>) enumvalopt {
  return UnittestCustomOptionsRoot_enumvalopt;
}
+ (id<PBExtensionField>) serviceopt {
  return UnittestCustomOptionsRoot_serviceopt;
}
+ (id<PBExtensionField>) methodopt {
  return UnittestCustomOptionsRoot_methodopt;
}
@end

BOOL MethodOpt1IsValidValue(MethodOpt1 value) {
  switch (value) {
    case MethodOpt1Methodopt1Val1:
    case MethodOpt1Methodopt1Val2:
      return YES;
    default:
      return NO;
  }
}
BOOL AggregateEnumIsValidValue(AggregateEnum value) {
  switch (value) {
    case AggregateEnumValue:
      return YES;
    default:
      return NO;
  }
}
@interface TestMessageWithCustomOptions ()
@property (retain) NSString* field1;
@end

@implementation TestMessageWithCustomOptions

- (BOOL) hasField1 {
  return !!hasField1_;
}
- (void) setHasField1:(BOOL) value {
  hasField1_ = !!value;
}
@synthesize field1;
- (void) dealloc {
  self.field1 = nil;
  [super dealloc];
}
- (id) init {
  if ((self = [super init])) {
    self.field1 = @"";
  }
  return self;
}
static TestMessageWithCustomOptions* defaultTestMessageWithCustomOptionsInstance = nil;
+ (void) initialize {
  if (self == [TestMessageWithCustomOptions class]) {
    defaultTestMessageWithCustomOptionsInstance = [[TestMessageWithCustomOptions alloc] init];
  }
}
+ (TestMessageWithCustomOptions*) defaultInstance {
  return defaultTestMessageWithCustomOptionsInstance;
}
- (TestMessageWithCustomOptions*) defaultInstance {
  return defaultTestMessageWithCustomOptionsInstance;
}
- (BOOL) isInitialized {
  return YES;
}
- (void) writeToCodedOutputStream:(PBCodedOutputStream*) output {
  if (self.hasField1) {
    [output writeString:1 value:self.field1];
  }
  [self.unknownFields writeToCodedOutputStream:output];
}
- (int32_t) serializedSize {
  int32_t size = memoizedSerializedSize;
  if (size != -1) {
    return size;
  }

  size = 0;
  if (self.hasField1) {
    size += computeStringSize(1, self.field1);
  }
  size += self.unknownFields.serializedSize;
  memoizedSerializedSize = size;
  return size;
}
+ (TestMessageWithCustomOptions*) parseFromData:(NSData*) data {
  return (TestMessageWithCustomOptions*)[[[TestMessageWithCustomOptions builder] mergeFromData:data] build];
}
+ (TestMessageWithCustomOptions*) parseFromData:(NSData*) data extensionRegistry:(PBExtensionRegistry*) extensionRegistry {
  return (TestMessageWithCustomOptions*)[[[TestMessageWithCustomOptions builder] mergeFromData:data extensionRegistry:extensionRegistry] build];
}
+ (TestMessageWithCustomOptions*) parseFromInputStream:(NSInputStream*) input {
  return (TestMessageWithCustomOptions*)[[[TestMessageWithCustomOptions builder] mergeFromInputStream:input] build];
}
+ (TestMessageWithCustomOptions*) parseFromInputStream:(NSInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry {
  return (TestMessageWithCustomOptions*)[[[TestMessageWithCustomOptions builder] mergeFromInputStream:input extensionRegistry:extensionRegistry] build];
}
+ (TestMessageWithCustomOptions*) parseFromCodedInputStream:(PBCodedInputStream*) input {
  return (TestMessageWithCustomOptions*)[[[TestMessageWithCustomOptions builder] mergeFromCodedInputStream:input] build];
}
+ (TestMessageWithCustomOptions*) parseFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry {
  return (TestMessageWithCustomOptions*)[[[TestMessageWithCustomOptions builder] mergeFromCodedInputStream:input extensionRegistry:extensionRegistry] build];
}
+ (TestMessageWithCustomOptions_Builder*) builder {
  return [[[TestMessageWithCustomOptions_Builder alloc] init] autorelease];
}
+ (TestMessageWithCustomOptions_Builder*) builderWithPrototype:(TestMessageWithCustomOptions*) prototype {
  return [[TestMessageWithCustomOptions builder] mergeFrom:prototype];
}
- (TestMessageWithCustomOptions_Builder*) builder {
  return [TestMessageWithCustomOptions builder];
}
- (TestMessageWithCustomOptions_Builder*) toBuilder {
  return [TestMessageWithCustomOptions builderWithPrototype:self];
}
- (void) writeDescriptionTo:(NSMutableString*) output withIndent:(NSString*) indent {
  if (self.hasField1) {
    [output appendFormat:@"%@%@: %@\n", indent, @"field1", self.field1];
  }
  [self.unknownFields writeDescriptionTo:output withIndent:indent];
}
- (BOOL) isEqual:(id)other {
  if (other == self) {
    return YES;
  }
  if (![other isKindOfClass:[TestMessageWithCustomOptions class]]) {
    return NO;
  }
  TestMessageWithCustomOptions *otherMessage = other;
  return
      self.hasField1 == otherMessage.hasField1 &&
      (!self.hasField1 || [self.field1 isEqual:otherMessage.field1]) &&
      
      (self.unknownFields == otherMessage.unknownFields || (self.unknownFields != nil && [self.unknownFields isEqual:otherMessage.unknownFields]));
}
- (NSUInteger) hash {
  NSUInteger hashCode = 7;
  if (self.hasField1) {
    hashCode = hashCode * 31 + [self.field1 hash];
  }
  hashCode = hashCode * 31 + [self.unknownFields hash];
  return hashCode;
}
@end

BOOL TestMessageWithCustomOptions_AnEnumIsValidValue(TestMessageWithCustomOptions_AnEnum value) {
  switch (value) {
    case TestMessageWithCustomOptions_AnEnumAnenumVal1:
    case TestMessageWithCustomOptions_AnEnumAnenumVal2:
      return YES;
    default:
      return NO;
  }
}
@interface TestMessageWithCustomOptions_Builder()
@property (retain) TestMessageWithCustomOptions* result;
@end

@implementation TestMessageWithCustomOptions_Builder
@synthesize result;
- (void) dealloc {
  self.result = nil;
  [super dealloc];
}
- (id) init {
  if ((self = [super init])) {
    self.result = [[[TestMessageWithCustomOptions alloc] init] autorelease];
  }
  return self;
}
- (PBGeneratedMessage*) internalGetResult {
  return result;
}
- (TestMessageWithCustomOptions_Builder*) clear {
  self.result = [[[TestMessageWithCustomOptions alloc] init] autorelease];
  return self;
}
- (TestMessageWithCustomOptions_Builder*) clone {
  return [TestMessageWithCustomOptions builderWithPrototype:result];
}
- (TestMessageWithCustomOptions*) defaultInstance {
  return [TestMessageWithCustomOptions defaultInstance];
}
- (TestMessageWithCustomOptions*) build {
  [self checkInitialized];
  return [self buildPartial];
}
- (TestMessageWithCustomOptions*) buildPartial {
  TestMessageWithCustomOptions* returnMe = [[result retain] autorelease];
  self.result = nil;
  return returnMe;
}
- (TestMessageWithCustomOptions_Builder*) mergeFrom:(TestMessageWithCustomOptions*) other {
  if (other == [TestMessageWithCustomOptions defaultInstance]) {
    return self;
  }
  if (other.hasField1) {
    [self setField1:other.field1];
  }
  [self mergeUnknownFields:other.unknownFields];
  return self;
}
- (TestMessageWithCustomOptions_Builder*) mergeFromCodedInputStream:(PBCodedInputStream*) input {
  return [self mergeFromCodedInputStream:input extensionRegistry:[PBExtensionRegistry emptyRegistry]];
}
- (TestMessageWithCustomOptions_Builder*) mergeFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry {
  PBUnknownFieldSet_Builder* unknownFields = [PBUnknownFieldSet builderWithUnknownFields:self.unknownFields];
  while (YES) {
    int32_t tag = [input readTag];
    switch (tag) {
      case 0:
        [self setUnknownFields:[unknownFields build]];
        return self;
      default: {
        if (![self parseUnknownField:input unknownFields:unknownFields extensionRegistry:extensionRegistry tag:tag]) {
          [self setUnknownFields:[unknownFields build]];
          return self;
        }
        break;
      }
      case 10: {
        [self setField1:[input readString]];
        break;
      }
    }
  }
}
- (BOOL) hasField1 {
  return result.hasField1;
}
- (NSString*) field1 {
  return result.field1;
}
- (TestMessageWithCustomOptions_Builder*) setField1:(NSString*) value {
  result.hasField1 = YES;
  result.field1 = value;
  return self;
}
- (TestMessageWithCustomOptions_Builder*) clearField1 {
  result.hasField1 = NO;
  result.field1 = @"";
  return self;
}
@end

@interface CustomOptionFooRequest ()
@end

@implementation CustomOptionFooRequest

- (void) dealloc {
  [super dealloc];
}
- (id) init {
  if ((self = [super init])) {
  }
  return self;
}
static CustomOptionFooRequest* defaultCustomOptionFooRequestInstance = nil;
+ (void) initialize {
  if (self == [CustomOptionFooRequest class]) {
    defaultCustomOptionFooRequestInstance = [[CustomOptionFooRequest alloc] init];
  }
}
+ (CustomOptionFooRequest*) defaultInstance {
  return defaultCustomOptionFooRequestInstance;
}
- (CustomOptionFooRequest*) defaultInstance {
  return defaultCustomOptionFooRequestInstance;
}
- (BOOL) isInitialized {
  return YES;
}
- (void) writeToCodedOutputStream:(PBCodedOutputStream*) output {
  [self.unknownFields writeToCodedOutputStream:output];
}
- (int32_t) serializedSize {
  int32_t size = memoizedSerializedSize;
  if (size != -1) {
    return size;
  }

  size = 0;
  size += self.unknownFields.serializedSize;
  memoizedSerializedSize = size;
  return size;
}
+ (CustomOptionFooRequest*) parseFromData:(NSData*) data {
  return (CustomOptionFooRequest*)[[[CustomOptionFooRequest builder] mergeFromData:data] build];
}
+ (CustomOptionFooRequest*) parseFromData:(NSData*) data extensionRegistry:(PBExtensionRegistry*) extensionRegistry {
  return (CustomOptionFooRequest*)[[[CustomOptionFooRequest builder] mergeFromData:data extensionRegistry:extensionRegistry] build];
}
+ (CustomOptionFooRequest*) parseFromInputStream:(NSInputStream*) input {
  return (CustomOptionFooRequest*)[[[CustomOptionFooRequest builder] mergeFromInputStream:input] build];
}
+ (CustomOptionFooRequest*) parseFromInputStream:(NSInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry {
  return (CustomOptionFooRequest*)[[[CustomOptionFooRequest builder] mergeFromInputStream:input extensionRegistry:extensionRegistry] build];
}
+ (CustomOptionFooRequest*) parseFromCodedInputStream:(PBCodedInputStream*) input {
  return (CustomOptionFooRequest*)[[[CustomOptionFooRequest builder] mergeFromCodedInputStream:input] build];
}
+ (CustomOptionFooRequest*) parseFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry {
  return (CustomOptionFooRequest*)[[[CustomOptionFooRequest builder] mergeFromCodedInputStream:input extensionRegistry:extensionRegistry] build];
}
+ (CustomOptionFooRequest_Builder*) builder {
  return [[[CustomOptionFooRequest_Builder alloc] init] autorelease];
}
+ (CustomOptionFooRequest_Builder*) builderWithPrototype:(CustomOptionFooRequest*) prototype {
  return [[CustomOptionFooRequest builder] mergeFrom:prototype];
}
- (CustomOptionFooRequest_Builder*) builder {
  return [CustomOptionFooRequest builder];
}
- (CustomOptionFooRequest_Builder*) toBuilder {
  return [CustomOptionFooRequest builderWithPrototype:self];
}
- (void) writeDescriptionTo:(NSMutableString*) output withIndent:(NSString*) indent {
  [self.unknownFields writeDescriptionTo:output withIndent:indent];
}
- (BOOL) isEqual:(id)other {
  if (other == self) {
    return YES;
  }
  if (![other isKindOfClass:[CustomOptionFooRequest class]]) {
    return NO;
  }
  CustomOptionFooRequest *otherMessage = other;
  return
      (self.unknownFields == otherMessage.unknownFields || (self.unknownFields != nil && [self.unknownFields isEqual:otherMessage.unknownFields]));
}
- (NSUInteger) hash {
  NSUInteger hashCode = 7;
  hashCode = hashCode * 31 + [self.unknownFields hash];
  return hashCode;
}
@end

@interface CustomOptionFooRequest_Builder()
@property (retain) CustomOptionFooRequest* result;
@end

@implementation CustomOptionFooRequest_Builder
@synthesize result;
- (void) dealloc {
  self.result = nil;
  [super dealloc];
}
- (id) init {
  if ((self = [super init])) {
    self.result = [[[CustomOptionFooRequest alloc] init] autorelease];
  }
  return self;
}
- (PBGeneratedMessage*) internalGetResult {
  return result;
}
- (CustomOptionFooRequest_Builder*) clear {
  self.result = [[[CustomOptionFooRequest alloc] init] autorelease];
  return self;
}
- (CustomOptionFooRequest_Builder*) clone {
  return [CustomOptionFooRequest builderWithPrototype:result];
}
- (CustomOptionFooRequest*) defaultInstance {
  return [CustomOptionFooRequest defaultInstance];
}
- (CustomOptionFooRequest*) build {
  [self checkInitialized];
  return [self buildPartial];
}
- (CustomOptionFooRequest*) buildPartial {
  CustomOptionFooRequest* returnMe = [[result retain] autorelease];
  self.result = nil;
  return returnMe;
}
- (CustomOptionFooRequest_Builder*) mergeFrom:(CustomOptionFooRequest*) other {
  if (other == [CustomOptionFooRequest defaultInstance]) {
    return self;
  }
  [self mergeUnknownFields:other.unknownFields];
  return self;
}
- (CustomOptionFooRequest_Builder*) mergeFromCodedInputStream:(PBCodedInputStream*) input {
  return [self mergeFromCodedInputStream:input extensionRegistry:[PBExtensionRegistry emptyRegistry]];
}
- (CustomOptionFooRequest_Builder*) mergeFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry {
  PBUnknownFieldSet_Builder* unknownFields = [PBUnknownFieldSet builderWithUnknownFields:self.unknownFields];
  while (YES) {
    int32_t tag = [input readTag];
    switch (tag) {
      case 0:
        [self setUnknownFields:[unknownFields build]];
        return self;
      default: {
        if (![self parseUnknownField:input unknownFields:unknownFields extensionRegistry:extensionRegistry tag:tag]) {
          [self setUnknownFields:[unknownFields build]];
          return self;
        }
        break;
      }
    }
  }
}
@end

@interface CustomOptionFooResponse ()
@end

@implementation CustomOptionFooResponse

- (void) dealloc {
  [super dealloc];
}
- (id) init {
  if ((self = [super init])) {
  }
  return self;
}
static CustomOptionFooResponse* defaultCustomOptionFooResponseInstance = nil;
+ (void) initialize {
  if (self == [CustomOptionFooResponse class]) {
    defaultCustomOptionFooResponseInstance = [[CustomOptionFooResponse alloc] init];
  }
}
+ (CustomOptionFooResponse*) defaultInstance {
  return defaultCustomOptionFooResponseInstance;
}
- (CustomOptionFooResponse*) defaultInstance {
  return defaultCustomOptionFooResponseInstance;
}
- (BOOL) isInitialized {
  return YES;
}
- (void) writeToCodedOutputStream:(PBCodedOutputStream*) output {
  [self.unknownFields writeToCodedOutputStream:output];
}
- (int32_t) serializedSize {
  int32_t size = memoizedSerializedSize;
  if (size != -1) {
    return size;
  }

  size = 0;
  size += self.unknownFields.serializedSize;
  memoizedSerializedSize = size;
  return size;
}
+ (CustomOptionFooResponse*) parseFromData:(NSData*) data {
  return (CustomOptionFooResponse*)[[[CustomOptionFooResponse builder] mergeFromData:data] build];
}
+ (CustomOptionFooResponse*) parseFromData:(NSData*) data extensionRegistry:(PBExtensionRegistry*) extensionRegistry {
  return (CustomOptionFooResponse*)[[[CustomOptionFooResponse builder] mergeFromData:data extensionRegistry:extensionRegistry] build];
}
+ (CustomOptionFooResponse*) parseFromInputStream:(NSInputStream*) input {
  return (CustomOptionFooResponse*)[[[CustomOptionFooResponse builder] mergeFromInputStream:input] build];
}
+ (CustomOptionFooResponse*) parseFromInputStream:(NSInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry {
  return (CustomOptionFooResponse*)[[[CustomOptionFooResponse builder] mergeFromInputStream:input extensionRegistry:extensionRegistry] build];
}
+ (CustomOptionFooResponse*) parseFromCodedInputStream:(PBCodedInputStream*) input {
  return (CustomOptionFooResponse*)[[[CustomOptionFooResponse builder] mergeFromCodedInputStream:input] build];
}
+ (CustomOptionFooResponse*) parseFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry {
  return (CustomOptionFooResponse*)[[[CustomOptionFooResponse builder] mergeFromCodedInputStream:input extensionRegistry:extensionRegistry] build];
}
+ (CustomOptionFooResponse_Builder*) builder {
  return [[[CustomOptionFooResponse_Builder alloc] init] autorelease];
}
+ (CustomOptionFooResponse_Builder*) builderWithPrototype:(CustomOptionFooResponse*) prototype {
  return [[CustomOptionFooResponse builder] mergeFrom:prototype];
}
- (CustomOptionFooResponse_Builder*) builder {
  return [CustomOptionFooResponse builder];
}
- (CustomOptionFooResponse_Builder*) toBuilder {
  return [CustomOptionFooResponse builderWithPrototype:self];
}
- (void) writeDescriptionTo:(NSMutableString*) output withIndent:(NSString*) indent {
  [self.unknownFields writeDescriptionTo:output withIndent:indent];
}
- (BOOL) isEqual:(id)other {
  if (other == self) {
    return YES;
  }
  if (![other isKindOfClass:[CustomOptionFooResponse class]]) {
    return NO;
  }
  CustomOptionFooResponse *otherMessage = other;
  return
      (self.unknownFields == otherMessage.unknownFields || (self.unknownFields != nil && [self.unknownFields isEqual:otherMessage.unknownFields]));
}
- (NSUInteger) hash {
  NSUInteger hashCode = 7;
  hashCode = hashCode * 31 + [self.unknownFields hash];
  return hashCode;
}
@end

@interface CustomOptionFooResponse_Builder()
@property (retain) CustomOptionFooResponse* result;
@end

@implementation CustomOptionFooResponse_Builder
@synthesize result;
- (void) dealloc {
  self.result = nil;
  [super dealloc];
}
- (id) init {
  if ((self = [super init])) {
    self.result = [[[CustomOptionFooResponse alloc] init] autorelease];
  }
  return self;
}
- (PBGeneratedMessage*) internalGetResult {
  return result;
}
- (CustomOptionFooResponse_Builder*) clear {
  self.result = [[[CustomOptionFooResponse alloc] init] autorelease];
  return self;
}
- (CustomOptionFooResponse_Builder*) clone {
  return [CustomOptionFooResponse builderWithPrototype:result];
}
- (CustomOptionFooResponse*) defaultInstance {
  return [CustomOptionFooResponse defaultInstance];
}
- (CustomOptionFooResponse*) build {
  [self checkInitialized];
  return [self buildPartial];
}
- (CustomOptionFooResponse*) buildPartial {
  CustomOptionFooResponse* returnMe = [[result retain] autorelease];
  self.result = nil;
  return returnMe;
}
- (CustomOptionFooResponse_Builder*) mergeFrom:(CustomOptionFooResponse*) other {
  if (other == [CustomOptionFooResponse defaultInstance]) {
    return self;
  }
  [self mergeUnknownFields:other.unknownFields];
  return self;
}
- (CustomOptionFooResponse_Builder*) mergeFromCodedInputStream:(PBCodedInputStream*) input {
  return [self mergeFromCodedInputStream:input extensionRegistry:[PBExtensionRegistry emptyRegistry]];
}
- (CustomOptionFooResponse_Builder*) mergeFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry {
  PBUnknownFieldSet_Builder* unknownFields = [PBUnknownFieldSet builderWithUnknownFields:self.unknownFields];
  while (YES) {
    int32_t tag = [input readTag];
    switch (tag) {
      case 0:
        [self setUnknownFields:[unknownFields build]];
        return self;
      default: {
        if (![self parseUnknownField:input unknownFields:unknownFields extensionRegistry:extensionRegistry tag:tag]) {
          [self setUnknownFields:[unknownFields build]];
          return self;
        }
        break;
      }
    }
  }
}
@end

@interface DummyMessageContainingEnum ()
@end

@implementation DummyMessageContainingEnum

- (void) dealloc {
  [super dealloc];
}
- (id) init {
  if ((self = [super init])) {
  }
  return self;
}
static DummyMessageContainingEnum* defaultDummyMessageContainingEnumInstance = nil;
+ (void) initialize {
  if (self == [DummyMessageContainingEnum class]) {
    defaultDummyMessageContainingEnumInstance = [[DummyMessageContainingEnum alloc] init];
  }
}
+ (DummyMessageContainingEnum*) defaultInstance {
  return defaultDummyMessageContainingEnumInstance;
}
- (DummyMessageContainingEnum*) defaultInstance {
  return defaultDummyMessageContainingEnumInstance;
}
- (BOOL) isInitialized {
  return YES;
}
- (void) writeToCodedOutputStream:(PBCodedOutputStream*) output {
  [self.unknownFields writeToCodedOutputStream:output];
}
- (int32_t) serializedSize {
  int32_t size = memoizedSerializedSize;
  if (size != -1) {
    return size;
  }

  size = 0;
  size += self.unknownFields.serializedSize;
  memoizedSerializedSize = size;
  return size;
}
+ (DummyMessageContainingEnum*) parseFromData:(NSData*) data {
  return (DummyMessageContainingEnum*)[[[DummyMessageContainingEnum builder] mergeFromData:data] build];
}
+ (DummyMessageContainingEnum*) parseFromData:(NSData*) data extensionRegistry:(PBExtensionRegistry*) extensionRegistry {
  return (DummyMessageContainingEnum*)[[[DummyMessageContainingEnum builder] mergeFromData:data extensionRegistry:extensionRegistry] build];
}
+ (DummyMessageContainingEnum*) parseFromInputStream:(NSInputStream*) input {
  return (DummyMessageContainingEnum*)[[[DummyMessageContainingEnum builder] mergeFromInputStream:input] build];
}
+ (DummyMessageContainingEnum*) parseFromInputStream:(NSInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry {
  return (DummyMessageContainingEnum*)[[[DummyMessageContainingEnum builder] mergeFromInputStream:input extensionRegistry:extensionRegistry] build];
}
+ (DummyMessageContainingEnum*) parseFromCodedInputStream:(PBCodedInputStream*) input {
  return (DummyMessageContainingEnum*)[[[DummyMessageContainingEnum builder] mergeFromCodedInputStream:input] build];
}
+ (DummyMessageContainingEnum*) parseFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry {
  return (DummyMessageContainingEnum*)[[[DummyMessageContainingEnum builder] mergeFromCodedInputStream:input extensionRegistry:extensionRegistry] build];
}
+ (DummyMessageContainingEnum_Builder*) builder {
  return [[[DummyMessageContainingEnum_Builder alloc] init] autorelease];
}
+ (DummyMessageContainingEnum_Builder*) builderWithPrototype:(DummyMessageContainingEnum*) prototype {
  return [[DummyMessageContainingEnum builder] mergeFrom:prototype];
}
- (DummyMessageContainingEnum_Builder*) builder {
  return [DummyMessageContainingEnum builder];
}
- (DummyMessageContainingEnum_Builder*) toBuilder {
  return [DummyMessageContainingEnum builderWithPrototype:self];
}
- (void) writeDescriptionTo:(NSMutableString*) output withIndent:(NSString*) indent {
  [self.unknownFields writeDescriptionTo:output withIndent:indent];
}
- (BOOL) isEqual:(id)other {
  if (other == self) {
    return YES;
  }
  if (![other isKindOfClass:[DummyMessageContainingEnum class]]) {
    return NO;
  }
  DummyMessageContainingEnum *otherMessage = other;
  return
      (self.unknownFields == otherMessage.unknownFields || (self.unknownFields != nil && [self.unknownFields isEqual:otherMessage.unknownFields]));
}
- (NSUInteger) hash {
  NSUInteger hashCode = 7;
  hashCode = hashCode * 31 + [self.unknownFields hash];
  return hashCode;
}
@end

BOOL DummyMessageContainingEnum_TestEnumTypeIsValidValue(DummyMessageContainingEnum_TestEnumType value) {
  switch (value) {
    case DummyMessageContainingEnum_TestEnumTypeTestOptionEnumType1:
    case DummyMessageContainingEnum_TestEnumTypeTestOptionEnumType2:
      return YES;
    default:
      return NO;
  }
}
@interface DummyMessageContainingEnum_Builder()
@property (retain) DummyMessageContainingEnum* result;
@end

@implementation DummyMessageContainingEnum_Builder
@synthesize result;
- (void) dealloc {
  self.result = nil;
  [super dealloc];
}
- (id) init {
  if ((self = [super init])) {
    self.result = [[[DummyMessageContainingEnum alloc] init] autorelease];
  }
  return self;
}
- (PBGeneratedMessage*) internalGetResult {
  return result;
}
- (DummyMessageContainingEnum_Builder*) clear {
  self.result = [[[DummyMessageContainingEnum alloc] init] autorelease];
  return self;
}
- (DummyMessageContainingEnum_Builder*) clone {
  return [DummyMessageContainingEnum builderWithPrototype:result];
}
- (DummyMessageContainingEnum*) defaultInstance {
  return [DummyMessageContainingEnum defaultInstance];
}
- (DummyMessageContainingEnum*) build {
  [self checkInitialized];
  return [self buildPartial];
}
- (DummyMessageContainingEnum*) buildPartial {
  DummyMessageContainingEnum* returnMe = [[result retain] autorelease];
  self.result = nil;
  return returnMe;
}
- (DummyMessageContainingEnum_Builder*) mergeFrom:(DummyMessageContainingEnum*) other {
  if (other == [DummyMessageContainingEnum defaultInstance]) {
    return self;
  }
  [self mergeUnknownFields:other.unknownFields];
  return self;
}
- (DummyMessageContainingEnum_Builder*) mergeFromCodedInputStream:(PBCodedInputStream*) input {
  return [self mergeFromCodedInputStream:input extensionRegistry:[PBExtensionRegistry emptyRegistry]];
}
- (DummyMessageContainingEnum_Builder*) mergeFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry {
  PBUnknownFieldSet_Builder* unknownFields = [PBUnknownFieldSet builderWithUnknownFields:self.unknownFields];
  while (YES) {
    int32_t tag = [input readTag];
    switch (tag) {
      case 0:
        [self setUnknownFields:[unknownFields build]];
        return self;
      default: {
        if (![self parseUnknownField:input unknownFields:unknownFields extensionRegistry:extensionRegistry tag:tag]) {
          [self setUnknownFields:[unknownFields build]];
          return self;
        }
        break;
      }
    }
  }
}
@end

@interface DummyMessageInvalidAsOptionType ()
@end

@implementation DummyMessageInvalidAsOptionType

- (void) dealloc {
  [super dealloc];
}
- (id) init {
  if ((self = [super init])) {
  }
  return self;
}
static DummyMessageInvalidAsOptionType* defaultDummyMessageInvalidAsOptionTypeInstance = nil;
+ (void) initialize {
  if (self == [DummyMessageInvalidAsOptionType class]) {
    defaultDummyMessageInvalidAsOptionTypeInstance = [[DummyMessageInvalidAsOptionType alloc] init];
  }
}
+ (DummyMessageInvalidAsOptionType*) defaultInstance {
  return defaultDummyMessageInvalidAsOptionTypeInstance;
}
- (DummyMessageInvalidAsOptionType*) defaultInstance {
  return defaultDummyMessageInvalidAsOptionTypeInstance;
}
- (BOOL) isInitialized {
  return YES;
}
- (void) writeToCodedOutputStream:(PBCodedOutputStream*) output {
  [self.unknownFields writeToCodedOutputStream:output];
}
- (int32_t) serializedSize {
  int32_t size = memoizedSerializedSize;
  if (size != -1) {
    return size;
  }

  size = 0;
  size += self.unknownFields.serializedSize;
  memoizedSerializedSize = size;
  return size;
}
+ (DummyMessageInvalidAsOptionType*) parseFromData:(NSData*) data {
  return (DummyMessageInvalidAsOptionType*)[[[DummyMessageInvalidAsOptionType builder] mergeFromData:data] build];
}
+ (DummyMessageInvalidAsOptionType*) parseFromData:(NSData*) data extensionRegistry:(PBExtensionRegistry*) extensionRegistry {
  return (DummyMessageInvalidAsOptionType*)[[[DummyMessageInvalidAsOptionType builder] mergeFromData:data extensionRegistry:extensionRegistry] build];
}
+ (DummyMessageInvalidAsOptionType*) parseFromInputStream:(NSInputStream*) input {
  return (DummyMessageInvalidAsOptionType*)[[[DummyMessageInvalidAsOptionType builder] mergeFromInputStream:input] build];
}
+ (DummyMessageInvalidAsOptionType*) parseFromInputStream:(NSInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry {
  return (DummyMessageInvalidAsOptionType*)[[[DummyMessageInvalidAsOptionType builder] mergeFromInputStream:input extensionRegistry:extensionRegistry] build];
}
+ (DummyMessageInvalidAsOptionType*) parseFromCodedInputStream:(PBCodedInputStream*) input {
  return (DummyMessageInvalidAsOptionType*)[[[DummyMessageInvalidAsOptionType builder] mergeFromCodedInputStream:input] build];
}
+ (DummyMessageInvalidAsOptionType*) parseFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry {
  return (DummyMessageInvalidAsOptionType*)[[[DummyMessageInvalidAsOptionType builder] mergeFromCodedInputStream:input extensionRegistry:extensionRegistry] build];
}
+ (DummyMessageInvalidAsOptionType_Builder*) builder {
  return [[[DummyMessageInvalidAsOptionType_Builder alloc] init] autorelease];
}
+ (DummyMessageInvalidAsOptionType_Builder*) builderWithPrototype:(DummyMessageInvalidAsOptionType*) prototype {
  return [[DummyMessageInvalidAsOptionType builder] mergeFrom:prototype];
}
- (DummyMessageInvalidAsOptionType_Builder*) builder {
  return [DummyMessageInvalidAsOptionType builder];
}
- (DummyMessageInvalidAsOptionType_Builder*) toBuilder {
  return [DummyMessageInvalidAsOptionType builderWithPrototype:self];
}
- (void) writeDescriptionTo:(NSMutableString*) output withIndent:(NSString*) indent {
  [self.unknownFields writeDescriptionTo:output withIndent:indent];
}
- (BOOL) isEqual:(id)other {
  if (other == self) {
    return YES;
  }
  if (![other isKindOfClass:[DummyMessageInvalidAsOptionType class]]) {
    return NO;
  }
  DummyMessageInvalidAsOptionType *otherMessage = other;
  return
      (self.unknownFields == otherMessage.unknownFields || (self.unknownFields != nil && [self.unknownFields isEqual:otherMessage.unknownFields]));
}
- (NSUInteger) hash {
  NSUInteger hashCode = 7;
  hashCode = hashCode * 31 + [self.unknownFields hash];
  return hashCode;
}
@end

@interface DummyMessageInvalidAsOptionType_Builder()
@property (retain) DummyMessageInvalidAsOptionType* result;
@end

@implementation DummyMessageInvalidAsOptionType_Builder
@synthesize result;
- (void) dealloc {
  self.result = nil;
  [super dealloc];
}
- (id) init {
  if ((self = [super init])) {
    self.result = [[[DummyMessageInvalidAsOptionType alloc] init] autorelease];
  }
  return self;
}
- (PBGeneratedMessage*) internalGetResult {
  return result;
}
- (DummyMessageInvalidAsOptionType_Builder*) clear {
  self.result = [[[DummyMessageInvalidAsOptionType alloc] init] autorelease];
  return self;
}
- (DummyMessageInvalidAsOptionType_Builder*) clone {
  return [DummyMessageInvalidAsOptionType builderWithPrototype:result];
}
- (DummyMessageInvalidAsOptionType*) defaultInstance {
  return [DummyMessageInvalidAsOptionType defaultInstance];
}
- (DummyMessageInvalidAsOptionType*) build {
  [self checkInitialized];
  return [self buildPartial];
}
- (DummyMessageInvalidAsOptionType*) buildPartial {
  DummyMessageInvalidAsOptionType* returnMe = [[result retain] autorelease];
  self.result = nil;
  return returnMe;
}
- (DummyMessageInvalidAsOptionType_Builder*) mergeFrom:(DummyMessageInvalidAsOptionType*) other {
  if (other == [DummyMessageInvalidAsOptionType defaultInstance]) {
    return self;
  }
  [self mergeUnknownFields:other.unknownFields];
  return self;
}
- (DummyMessageInvalidAsOptionType_Builder*) mergeFromCodedInputStream:(PBCodedInputStream*) input {
  return [self mergeFromCodedInputStream:input extensionRegistry:[PBExtensionRegistry emptyRegistry]];
}
- (DummyMessageInvalidAsOptionType_Builder*) mergeFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry {
  PBUnknownFieldSet_Builder* unknownFields = [PBUnknownFieldSet builderWithUnknownFields:self.unknownFields];
  while (YES) {
    int32_t tag = [input readTag];
    switch (tag) {
      case 0:
        [self setUnknownFields:[unknownFields build]];
        return self;
      default: {
        if (![self parseUnknownField:input unknownFields:unknownFields extensionRegistry:extensionRegistry tag:tag]) {
          [self setUnknownFields:[unknownFields build]];
          return self;
        }
        break;
      }
    }
  }
}
@end

@interface CustomOptionMinIntegerValues ()
@end

@implementation CustomOptionMinIntegerValues

- (void) dealloc {
  [super dealloc];
}
- (id) init {
  if ((self = [super init])) {
  }
  return self;
}
static CustomOptionMinIntegerValues* defaultCustomOptionMinIntegerValuesInstance = nil;
+ (void) initialize {
  if (self == [CustomOptionMinIntegerValues class]) {
    defaultCustomOptionMinIntegerValuesInstance = [[CustomOptionMinIntegerValues alloc] init];
  }
}
+ (CustomOptionMinIntegerValues*) defaultInstance {
  return defaultCustomOptionMinIntegerValuesInstance;
}
- (CustomOptionMinIntegerValues*) defaultInstance {
  return defaultCustomOptionMinIntegerValuesInstance;
}
- (BOOL) isInitialized {
  return YES;
}
- (void) writeToCodedOutputStream:(PBCodedOutputStream*) output {
  [self.unknownFields writeToCodedOutputStream:output];
}
- (int32_t) serializedSize {
  int32_t size = memoizedSerializedSize;
  if (size != -1) {
    return size;
  }

  size = 0;
  size += self.unknownFields.serializedSize;
  memoizedSerializedSize = size;
  return size;
}
+ (CustomOptionMinIntegerValues*) parseFromData:(NSData*) data {
  return (CustomOptionMinIntegerValues*)[[[CustomOptionMinIntegerValues builder] mergeFromData:data] build];
}
+ (CustomOptionMinIntegerValues*) parseFromData:(NSData*) data extensionRegistry:(PBExtensionRegistry*) extensionRegistry {
  return (CustomOptionMinIntegerValues*)[[[CustomOptionMinIntegerValues builder] mergeFromData:data extensionRegistry:extensionRegistry] build];
}
+ (CustomOptionMinIntegerValues*) parseFromInputStream:(NSInputStream*) input {
  return (CustomOptionMinIntegerValues*)[[[CustomOptionMinIntegerValues builder] mergeFromInputStream:input] build];
}
+ (CustomOptionMinIntegerValues*) parseFromInputStream:(NSInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry {
  return (CustomOptionMinIntegerValues*)[[[CustomOptionMinIntegerValues builder] mergeFromInputStream:input extensionRegistry:extensionRegistry] build];
}
+ (CustomOptionMinIntegerValues*) parseFromCodedInputStream:(PBCodedInputStream*) input {
  return (CustomOptionMinIntegerValues*)[[[CustomOptionMinIntegerValues builder] mergeFromCodedInputStream:input] build];
}
+ (CustomOptionMinIntegerValues*) parseFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry {
  return (CustomOptionMinIntegerValues*)[[[CustomOptionMinIntegerValues builder] mergeFromCodedInputStream:input extensionRegistry:extensionRegistry] build];
}
+ (CustomOptionMinIntegerValues_Builder*) builder {
  return [[[CustomOptionMinIntegerValues_Builder alloc] init] autorelease];
}
+ (CustomOptionMinIntegerValues_Builder*) builderWithPrototype:(CustomOptionMinIntegerValues*) prototype {
  return [[CustomOptionMinIntegerValues builder] mergeFrom:prototype];
}
- (CustomOptionMinIntegerValues_Builder*) builder {
  return [CustomOptionMinIntegerValues builder];
}
- (CustomOptionMinIntegerValues_Builder*) toBuilder {
  return [CustomOptionMinIntegerValues builderWithPrototype:self];
}
- (void) writeDescriptionTo:(NSMutableString*) output withIndent:(NSString*) indent {
  [self.unknownFields writeDescriptionTo:output withIndent:indent];
}
- (BOOL) isEqual:(id)other {
  if (other == self) {
    return YES;
  }
  if (![other isKindOfClass:[CustomOptionMinIntegerValues class]]) {
    return NO;
  }
  CustomOptionMinIntegerValues *otherMessage = other;
  return
      (self.unknownFields == otherMessage.unknownFields || (self.unknownFields != nil && [self.unknownFields isEqual:otherMessage.unknownFields]));
}
- (NSUInteger) hash {
  NSUInteger hashCode = 7;
  hashCode = hashCode * 31 + [self.unknownFields hash];
  return hashCode;
}
@end

@interface CustomOptionMinIntegerValues_Builder()
@property (retain) CustomOptionMinIntegerValues* result;
@end

@implementation CustomOptionMinIntegerValues_Builder
@synthesize result;
- (void) dealloc {
  self.result = nil;
  [super dealloc];
}
- (id) init {
  if ((self = [super init])) {
    self.result = [[[CustomOptionMinIntegerValues alloc] init] autorelease];
  }
  return self;
}
- (PBGeneratedMessage*) internalGetResult {
  return result;
}
- (CustomOptionMinIntegerValues_Builder*) clear {
  self.result = [[[CustomOptionMinIntegerValues alloc] init] autorelease];
  return self;
}
- (CustomOptionMinIntegerValues_Builder*) clone {
  return [CustomOptionMinIntegerValues builderWithPrototype:result];
}
- (CustomOptionMinIntegerValues*) defaultInstance {
  return [CustomOptionMinIntegerValues defaultInstance];
}
- (CustomOptionMinIntegerValues*) build {
  [self checkInitialized];
  return [self buildPartial];
}
- (CustomOptionMinIntegerValues*) buildPartial {
  CustomOptionMinIntegerValues* returnMe = [[result retain] autorelease];
  self.result = nil;
  return returnMe;
}
- (CustomOptionMinIntegerValues_Builder*) mergeFrom:(CustomOptionMinIntegerValues*) other {
  if (other == [CustomOptionMinIntegerValues defaultInstance]) {
    return self;
  }
  [self mergeUnknownFields:other.unknownFields];
  return self;
}
- (CustomOptionMinIntegerValues_Builder*) mergeFromCodedInputStream:(PBCodedInputStream*) input {
  return [self mergeFromCodedInputStream:input extensionRegistry:[PBExtensionRegistry emptyRegistry]];
}
- (CustomOptionMinIntegerValues_Builder*) mergeFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry {
  PBUnknownFieldSet_Builder* unknownFields = [PBUnknownFieldSet builderWithUnknownFields:self.unknownFields];
  while (YES) {
    int32_t tag = [input readTag];
    switch (tag) {
      case 0:
        [self setUnknownFields:[unknownFields build]];
        return self;
      default: {
        if (![self parseUnknownField:input unknownFields:unknownFields extensionRegistry:extensionRegistry tag:tag]) {
          [self setUnknownFields:[unknownFields build]];
          return self;
        }
        break;
      }
    }
  }
}
@end

@interface CustomOptionMaxIntegerValues ()
@end

@implementation CustomOptionMaxIntegerValues

- (void) dealloc {
  [super dealloc];
}
- (id) init {
  if ((self = [super init])) {
  }
  return self;
}
static CustomOptionMaxIntegerValues* defaultCustomOptionMaxIntegerValuesInstance = nil;
+ (void) initialize {
  if (self == [CustomOptionMaxIntegerValues class]) {
    defaultCustomOptionMaxIntegerValuesInstance = [[CustomOptionMaxIntegerValues alloc] init];
  }
}
+ (CustomOptionMaxIntegerValues*) defaultInstance {
  return defaultCustomOptionMaxIntegerValuesInstance;
}
- (CustomOptionMaxIntegerValues*) defaultInstance {
  return defaultCustomOptionMaxIntegerValuesInstance;
}
- (BOOL) isInitialized {
  return YES;
}
- (void) writeToCodedOutputStream:(PBCodedOutputStream*) output {
  [self.unknownFields writeToCodedOutputStream:output];
}
- (int32_t) serializedSize {
  int32_t size = memoizedSerializedSize;
  if (size != -1) {
    return size;
  }

  size = 0;
  size += self.unknownFields.serializedSize;
  memoizedSerializedSize = size;
  return size;
}
+ (CustomOptionMaxIntegerValues*) parseFromData:(NSData*) data {
  return (CustomOptionMaxIntegerValues*)[[[CustomOptionMaxIntegerValues builder] mergeFromData:data] build];
}
+ (CustomOptionMaxIntegerValues*) parseFromData:(NSData*) data extensionRegistry:(PBExtensionRegistry*) extensionRegistry {
  return (CustomOptionMaxIntegerValues*)[[[CustomOptionMaxIntegerValues builder] mergeFromData:data extensionRegistry:extensionRegistry] build];
}
+ (CustomOptionMaxIntegerValues*) parseFromInputStream:(NSInputStream*) input {
  return (CustomOptionMaxIntegerValues*)[[[CustomOptionMaxIntegerValues builder] mergeFromInputStream:input] build];
}
+ (CustomOptionMaxIntegerValues*) parseFromInputStream:(NSInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry {
  return (CustomOptionMaxIntegerValues*)[[[CustomOptionMaxIntegerValues builder] mergeFromInputStream:input extensionRegistry:extensionRegistry] build];
}
+ (CustomOptionMaxIntegerValues*) parseFromCodedInputStream:(PBCodedInputStream*) input {
  return (CustomOptionMaxIntegerValues*)[[[CustomOptionMaxIntegerValues builder] mergeFromCodedInputStream:input] build];
}
+ (CustomOptionMaxIntegerValues*) parseFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry {
  return (CustomOptionMaxIntegerValues*)[[[CustomOptionMaxIntegerValues builder] mergeFromCodedInputStream:input extensionRegistry:extensionRegistry] build];
}
+ (CustomOptionMaxIntegerValues_Builder*) builder {
  return [[[CustomOptionMaxIntegerValues_Builder alloc] init] autorelease];
}
+ (CustomOptionMaxIntegerValues_Builder*) builderWithPrototype:(CustomOptionMaxIntegerValues*) prototype {
  return [[CustomOptionMaxIntegerValues builder] mergeFrom:prototype];
}
- (CustomOptionMaxIntegerValues_Builder*) builder {
  return [CustomOptionMaxIntegerValues builder];
}
- (CustomOptionMaxIntegerValues_Builder*) toBuilder {
  return [CustomOptionMaxIntegerValues builderWithPrototype:self];
}
- (void) writeDescriptionTo:(NSMutableString*) output withIndent:(NSString*) indent {
  [self.unknownFields writeDescriptionTo:output withIndent:indent];
}
- (BOOL) isEqual:(id)other {
  if (other == self) {
    return YES;
  }
  if (![other isKindOfClass:[CustomOptionMaxIntegerValues class]]) {
    return NO;
  }
  CustomOptionMaxIntegerValues *otherMessage = other;
  return
      (self.unknownFields == otherMessage.unknownFields || (self.unknownFields != nil && [self.unknownFields isEqual:otherMessage.unknownFields]));
}
- (NSUInteger) hash {
  NSUInteger hashCode = 7;
  hashCode = hashCode * 31 + [self.unknownFields hash];
  return hashCode;
}
@end

@interface CustomOptionMaxIntegerValues_Builder()
@property (retain) CustomOptionMaxIntegerValues* result;
@end

@implementation CustomOptionMaxIntegerValues_Builder
@synthesize result;
- (void) dealloc {
  self.result = nil;
  [super dealloc];
}
- (id) init {
  if ((self = [super init])) {
    self.result = [[[CustomOptionMaxIntegerValues alloc] init] autorelease];
  }
  return self;
}
- (PBGeneratedMessage*) internalGetResult {
  return result;
}
- (CustomOptionMaxIntegerValues_Builder*) clear {
  self.result = [[[CustomOptionMaxIntegerValues alloc] init] autorelease];
  return self;
}
- (CustomOptionMaxIntegerValues_Builder*) clone {
  return [CustomOptionMaxIntegerValues builderWithPrototype:result];
}
- (CustomOptionMaxIntegerValues*) defaultInstance {
  return [CustomOptionMaxIntegerValues defaultInstance];
}
- (CustomOptionMaxIntegerValues*) build {
  [self checkInitialized];
  return [self buildPartial];
}
- (CustomOptionMaxIntegerValues*) buildPartial {
  CustomOptionMaxIntegerValues* returnMe = [[result retain] autorelease];
  self.result = nil;
  return returnMe;
}
- (CustomOptionMaxIntegerValues_Builder*) mergeFrom:(CustomOptionMaxIntegerValues*) other {
  if (other == [CustomOptionMaxIntegerValues defaultInstance]) {
    return self;
  }
  [self mergeUnknownFields:other.unknownFields];
  return self;
}
- (CustomOptionMaxIntegerValues_Builder*) mergeFromCodedInputStream:(PBCodedInputStream*) input {
  return [self mergeFromCodedInputStream:input extensionRegistry:[PBExtensionRegistry emptyRegistry]];
}
- (CustomOptionMaxIntegerValues_Builder*) mergeFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry {
  PBUnknownFieldSet_Builder* unknownFields = [PBUnknownFieldSet builderWithUnknownFields:self.unknownFields];
  while (YES) {
    int32_t tag = [input readTag];
    switch (tag) {
      case 0:
        [self setUnknownFields:[unknownFields build]];
        return self;
      default: {
        if (![self parseUnknownField:input unknownFields:unknownFields extensionRegistry:extensionRegistry tag:tag]) {
          [self setUnknownFields:[unknownFields build]];
          return self;
        }
        break;
      }
    }
  }
}
@end

@interface CustomOptionOtherValues ()
@end

@implementation CustomOptionOtherValues

- (void) dealloc {
  [super dealloc];
}
- (id) init {
  if ((self = [super init])) {
  }
  return self;
}
static CustomOptionOtherValues* defaultCustomOptionOtherValuesInstance = nil;
+ (void) initialize {
  if (self == [CustomOptionOtherValues class]) {
    defaultCustomOptionOtherValuesInstance = [[CustomOptionOtherValues alloc] init];
  }
}
+ (CustomOptionOtherValues*) defaultInstance {
  return defaultCustomOptionOtherValuesInstance;
}
- (CustomOptionOtherValues*) defaultInstance {
  return defaultCustomOptionOtherValuesInstance;
}
- (BOOL) isInitialized {
  return YES;
}
- (void) writeToCodedOutputStream:(PBCodedOutputStream*) output {
  [self.unknownFields writeToCodedOutputStream:output];
}
- (int32_t) serializedSize {
  int32_t size = memoizedSerializedSize;
  if (size != -1) {
    return size;
  }

  size = 0;
  size += self.unknownFields.serializedSize;
  memoizedSerializedSize = size;
  return size;
}
+ (CustomOptionOtherValues*) parseFromData:(NSData*) data {
  return (CustomOptionOtherValues*)[[[CustomOptionOtherValues builder] mergeFromData:data] build];
}
+ (CustomOptionOtherValues*) parseFromData:(NSData*) data extensionRegistry:(PBExtensionRegistry*) extensionRegistry {
  return (CustomOptionOtherValues*)[[[CustomOptionOtherValues builder] mergeFromData:data extensionRegistry:extensionRegistry] build];
}
+ (CustomOptionOtherValues*) parseFromInputStream:(NSInputStream*) input {
  return (CustomOptionOtherValues*)[[[CustomOptionOtherValues builder] mergeFromInputStream:input] build];
}
+ (CustomOptionOtherValues*) parseFromInputStream:(NSInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry {
  return (CustomOptionOtherValues*)[[[CustomOptionOtherValues builder] mergeFromInputStream:input extensionRegistry:extensionRegistry] build];
}
+ (CustomOptionOtherValues*) parseFromCodedInputStream:(PBCodedInputStream*) input {
  return (CustomOptionOtherValues*)[[[CustomOptionOtherValues builder] mergeFromCodedInputStream:input] build];
}
+ (CustomOptionOtherValues*) parseFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry {
  return (CustomOptionOtherValues*)[[[CustomOptionOtherValues builder] mergeFromCodedInputStream:input extensionRegistry:extensionRegistry] build];
}
+ (CustomOptionOtherValues_Builder*) builder {
  return [[[CustomOptionOtherValues_Builder alloc] init] autorelease];
}
+ (CustomOptionOtherValues_Builder*) builderWithPrototype:(CustomOptionOtherValues*) prototype {
  return [[CustomOptionOtherValues builder] mergeFrom:prototype];
}
- (CustomOptionOtherValues_Builder*) builder {
  return [CustomOptionOtherValues builder];
}
- (CustomOptionOtherValues_Builder*) toBuilder {
  return [CustomOptionOtherValues builderWithPrototype:self];
}
- (void) writeDescriptionTo:(NSMutableString*) output withIndent:(NSString*) indent {
  [self.unknownFields writeDescriptionTo:output withIndent:indent];
}
- (BOOL) isEqual:(id)other {
  if (other == self) {
    return YES;
  }
  if (![other isKindOfClass:[CustomOptionOtherValues class]]) {
    return NO;
  }
  CustomOptionOtherValues *otherMessage = other;
  return
      (self.unknownFields == otherMessage.unknownFields || (self.unknownFields != nil && [self.unknownFields isEqual:otherMessage.unknownFields]));
}
- (NSUInteger) hash {
  NSUInteger hashCode = 7;
  hashCode = hashCode * 31 + [self.unknownFields hash];
  return hashCode;
}
@end

@interface CustomOptionOtherValues_Builder()
@property (retain) CustomOptionOtherValues* result;
@end

@implementation CustomOptionOtherValues_Builder
@synthesize result;
- (void) dealloc {
  self.result = nil;
  [super dealloc];
}
- (id) init {
  if ((self = [super init])) {
    self.result = [[[CustomOptionOtherValues alloc] init] autorelease];
  }
  return self;
}
- (PBGeneratedMessage*) internalGetResult {
  return result;
}
- (CustomOptionOtherValues_Builder*) clear {
  self.result = [[[CustomOptionOtherValues alloc] init] autorelease];
  return self;
}
- (CustomOptionOtherValues_Builder*) clone {
  return [CustomOptionOtherValues builderWithPrototype:result];
}
- (CustomOptionOtherValues*) defaultInstance {
  return [CustomOptionOtherValues defaultInstance];
}
- (CustomOptionOtherValues*) build {
  [self checkInitialized];
  return [self buildPartial];
}
- (CustomOptionOtherValues*) buildPartial {
  CustomOptionOtherValues* returnMe = [[result retain] autorelease];
  self.result = nil;
  return returnMe;
}
- (CustomOptionOtherValues_Builder*) mergeFrom:(CustomOptionOtherValues*) other {
  if (other == [CustomOptionOtherValues defaultInstance]) {
    return self;
  }
  [self mergeUnknownFields:other.unknownFields];
  return self;
}
- (CustomOptionOtherValues_Builder*) mergeFromCodedInputStream:(PBCodedInputStream*) input {
  return [self mergeFromCodedInputStream:input extensionRegistry:[PBExtensionRegistry emptyRegistry]];
}
- (CustomOptionOtherValues_Builder*) mergeFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry {
  PBUnknownFieldSet_Builder* unknownFields = [PBUnknownFieldSet builderWithUnknownFields:self.unknownFields];
  while (YES) {
    int32_t tag = [input readTag];
    switch (tag) {
      case 0:
        [self setUnknownFields:[unknownFields build]];
        return self;
      default: {
        if (![self parseUnknownField:input unknownFields:unknownFields extensionRegistry:extensionRegistry tag:tag]) {
          [self setUnknownFields:[unknownFields build]];
          return self;
        }
        break;
      }
    }
  }
}
@end

@interface SettingRealsFromPositiveInts ()
@end

@implementation SettingRealsFromPositiveInts

- (void) dealloc {
  [super dealloc];
}
- (id) init {
  if ((self = [super init])) {
  }
  return self;
}
static SettingRealsFromPositiveInts* defaultSettingRealsFromPositiveIntsInstance = nil;
+ (void) initialize {
  if (self == [SettingRealsFromPositiveInts class]) {
    defaultSettingRealsFromPositiveIntsInstance = [[SettingRealsFromPositiveInts alloc] init];
  }
}
+ (SettingRealsFromPositiveInts*) defaultInstance {
  return defaultSettingRealsFromPositiveIntsInstance;
}
- (SettingRealsFromPositiveInts*) defaultInstance {
  return defaultSettingRealsFromPositiveIntsInstance;
}
- (BOOL) isInitialized {
  return YES;
}
- (void) writeToCodedOutputStream:(PBCodedOutputStream*) output {
  [self.unknownFields writeToCodedOutputStream:output];
}
- (int32_t) serializedSize {
  int32_t size = memoizedSerializedSize;
  if (size != -1) {
    return size;
  }

  size = 0;
  size += self.unknownFields.serializedSize;
  memoizedSerializedSize = size;
  return size;
}
+ (SettingRealsFromPositiveInts*) parseFromData:(NSData*) data {
  return (SettingRealsFromPositiveInts*)[[[SettingRealsFromPositiveInts builder] mergeFromData:data] build];
}
+ (SettingRealsFromPositiveInts*) parseFromData:(NSData*) data extensionRegistry:(PBExtensionRegistry*) extensionRegistry {
  return (SettingRealsFromPositiveInts*)[[[SettingRealsFromPositiveInts builder] mergeFromData:data extensionRegistry:extensionRegistry] build];
}
+ (SettingRealsFromPositiveInts*) parseFromInputStream:(NSInputStream*) input {
  return (SettingRealsFromPositiveInts*)[[[SettingRealsFromPositiveInts builder] mergeFromInputStream:input] build];
}
+ (SettingRealsFromPositiveInts*) parseFromInputStream:(NSInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry {
  return (SettingRealsFromPositiveInts*)[[[SettingRealsFromPositiveInts builder] mergeFromInputStream:input extensionRegistry:extensionRegistry] build];
}
+ (SettingRealsFromPositiveInts*) parseFromCodedInputStream:(PBCodedInputStream*) input {
  return (SettingRealsFromPositiveInts*)[[[SettingRealsFromPositiveInts builder] mergeFromCodedInputStream:input] build];
}
+ (SettingRealsFromPositiveInts*) parseFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry {
  return (SettingRealsFromPositiveInts*)[[[SettingRealsFromPositiveInts builder] mergeFromCodedInputStream:input extensionRegistry:extensionRegistry] build];
}
+ (SettingRealsFromPositiveInts_Builder*) builder {
  return [[[SettingRealsFromPositiveInts_Builder alloc] init] autorelease];
}
+ (SettingRealsFromPositiveInts_Builder*) builderWithPrototype:(SettingRealsFromPositiveInts*) prototype {
  return [[SettingRealsFromPositiveInts builder] mergeFrom:prototype];
}
- (SettingRealsFromPositiveInts_Builder*) builder {
  return [SettingRealsFromPositiveInts builder];
}
- (SettingRealsFromPositiveInts_Builder*) toBuilder {
  return [SettingRealsFromPositiveInts builderWithPrototype:self];
}
- (void) writeDescriptionTo:(NSMutableString*) output withIndent:(NSString*) indent {
  [self.unknownFields writeDescriptionTo:output withIndent:indent];
}
- (BOOL) isEqual:(id)other {
  if (other == self) {
    return YES;
  }
  if (![other isKindOfClass:[SettingRealsFromPositiveInts class]]) {
    return NO;
  }
  SettingRealsFromPositiveInts *otherMessage = other;
  return
      (self.unknownFields == otherMessage.unknownFields || (self.unknownFields != nil && [self.unknownFields isEqual:otherMessage.unknownFields]));
}
- (NSUInteger) hash {
  NSUInteger hashCode = 7;
  hashCode = hashCode * 31 + [self.unknownFields hash];
  return hashCode;
}
@end

@interface SettingRealsFromPositiveInts_Builder()
@property (retain) SettingRealsFromPositiveInts* result;
@end

@implementation SettingRealsFromPositiveInts_Builder
@synthesize result;
- (void) dealloc {
  self.result = nil;
  [super dealloc];
}
- (id) init {
  if ((self = [super init])) {
    self.result = [[[SettingRealsFromPositiveInts alloc] init] autorelease];
  }
  return self;
}
- (PBGeneratedMessage*) internalGetResult {
  return result;
}
- (SettingRealsFromPositiveInts_Builder*) clear {
  self.result = [[[SettingRealsFromPositiveInts alloc] init] autorelease];
  return self;
}
- (SettingRealsFromPositiveInts_Builder*) clone {
  return [SettingRealsFromPositiveInts builderWithPrototype:result];
}
- (SettingRealsFromPositiveInts*) defaultInstance {
  return [SettingRealsFromPositiveInts defaultInstance];
}
- (SettingRealsFromPositiveInts*) build {
  [self checkInitialized];
  return [self buildPartial];
}
- (SettingRealsFromPositiveInts*) buildPartial {
  SettingRealsFromPositiveInts* returnMe = [[result retain] autorelease];
  self.result = nil;
  return returnMe;
}
- (SettingRealsFromPositiveInts_Builder*) mergeFrom:(SettingRealsFromPositiveInts*) other {
  if (other == [SettingRealsFromPositiveInts defaultInstance]) {
    return self;
  }
  [self mergeUnknownFields:other.unknownFields];
  return self;
}
- (SettingRealsFromPositiveInts_Builder*) mergeFromCodedInputStream:(PBCodedInputStream*) input {
  return [self mergeFromCodedInputStream:input extensionRegistry:[PBExtensionRegistry emptyRegistry]];
}
- (SettingRealsFromPositiveInts_Builder*) mergeFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry {
  PBUnknownFieldSet_Builder* unknownFields = [PBUnknownFieldSet builderWithUnknownFields:self.unknownFields];
  while (YES) {
    int32_t tag = [input readTag];
    switch (tag) {
      case 0:
        [self setUnknownFields:[unknownFields build]];
        return self;
      default: {
        if (![self parseUnknownField:input unknownFields:unknownFields extensionRegistry:extensionRegistry tag:tag]) {
          [self setUnknownFields:[unknownFields build]];
          return self;
        }
        break;
      }
    }
  }
}
@end

@interface SettingRealsFromNegativeInts ()
@end

@implementation SettingRealsFromNegativeInts

- (void) dealloc {
  [super dealloc];
}
- (id) init {
  if ((self = [super init])) {
  }
  return self;
}
static SettingRealsFromNegativeInts* defaultSettingRealsFromNegativeIntsInstance = nil;
+ (void) initialize {
  if (self == [SettingRealsFromNegativeInts class]) {
    defaultSettingRealsFromNegativeIntsInstance = [[SettingRealsFromNegativeInts alloc] init];
  }
}
+ (SettingRealsFromNegativeInts*) defaultInstance {
  return defaultSettingRealsFromNegativeIntsInstance;
}
- (SettingRealsFromNegativeInts*) defaultInstance {
  return defaultSettingRealsFromNegativeIntsInstance;
}
- (BOOL) isInitialized {
  return YES;
}
- (void) writeToCodedOutputStream:(PBCodedOutputStream*) output {
  [self.unknownFields writeToCodedOutputStream:output];
}
- (int32_t) serializedSize {
  int32_t size = memoizedSerializedSize;
  if (size != -1) {
    return size;
  }

  size = 0;
  size += self.unknownFields.serializedSize;
  memoizedSerializedSize = size;
  return size;
}
+ (SettingRealsFromNegativeInts*) parseFromData:(NSData*) data {
  return (SettingRealsFromNegativeInts*)[[[SettingRealsFromNegativeInts builder] mergeFromData:data] build];
}
+ (SettingRealsFromNegativeInts*) parseFromData:(NSData*) data extensionRegistry:(PBExtensionRegistry*) extensionRegistry {
  return (SettingRealsFromNegativeInts*)[[[SettingRealsFromNegativeInts builder] mergeFromData:data extensionRegistry:extensionRegistry] build];
}
+ (SettingRealsFromNegativeInts*) parseFromInputStream:(NSInputStream*) input {
  return (SettingRealsFromNegativeInts*)[[[SettingRealsFromNegativeInts builder] mergeFromInputStream:input] build];
}
+ (SettingRealsFromNegativeInts*) parseFromInputStream:(NSInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry {
  return (SettingRealsFromNegativeInts*)[[[SettingRealsFromNegativeInts builder] mergeFromInputStream:input extensionRegistry:extensionRegistry] build];
}
+ (SettingRealsFromNegativeInts*) parseFromCodedInputStream:(PBCodedInputStream*) input {
  return (SettingRealsFromNegativeInts*)[[[SettingRealsFromNegativeInts builder] mergeFromCodedInputStream:input] build];
}
+ (SettingRealsFromNegativeInts*) parseFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry {
  return (SettingRealsFromNegativeInts*)[[[SettingRealsFromNegativeInts builder] mergeFromCodedInputStream:input extensionRegistry:extensionRegistry] build];
}
+ (SettingRealsFromNegativeInts_Builder*) builder {
  return [[[SettingRealsFromNegativeInts_Builder alloc] init] autorelease];
}
+ (SettingRealsFromNegativeInts_Builder*) builderWithPrototype:(SettingRealsFromNegativeInts*) prototype {
  return [[SettingRealsFromNegativeInts builder] mergeFrom:prototype];
}
- (SettingRealsFromNegativeInts_Builder*) builder {
  return [SettingRealsFromNegativeInts builder];
}
- (SettingRealsFromNegativeInts_Builder*) toBuilder {
  return [SettingRealsFromNegativeInts builderWithPrototype:self];
}
- (void) writeDescriptionTo:(NSMutableString*) output withIndent:(NSString*) indent {
  [self.unknownFields writeDescriptionTo:output withIndent:indent];
}
- (BOOL) isEqual:(id)other {
  if (other == self) {
    return YES;
  }
  if (![other isKindOfClass:[SettingRealsFromNegativeInts class]]) {
    return NO;
  }
  SettingRealsFromNegativeInts *otherMessage = other;
  return
      (self.unknownFields == otherMessage.unknownFields || (self.unknownFields != nil && [self.unknownFields isEqual:otherMessage.unknownFields]));
}
- (NSUInteger) hash {
  NSUInteger hashCode = 7;
  hashCode = hashCode * 31 + [self.unknownFields hash];
  return hashCode;
}
@end

@interface SettingRealsFromNegativeInts_Builder()
@property (retain) SettingRealsFromNegativeInts* result;
@end

@implementation SettingRealsFromNegativeInts_Builder
@synthesize result;
- (void) dealloc {
  self.result = nil;
  [super dealloc];
}
- (id) init {
  if ((self = [super init])) {
    self.result = [[[SettingRealsFromNegativeInts alloc] init] autorelease];
  }
  return self;
}
- (PBGeneratedMessage*) internalGetResult {
  return result;
}
- (SettingRealsFromNegativeInts_Builder*) clear {
  self.result = [[[SettingRealsFromNegativeInts alloc] init] autorelease];
  return self;
}
- (SettingRealsFromNegativeInts_Builder*) clone {
  return [SettingRealsFromNegativeInts builderWithPrototype:result];
}
- (SettingRealsFromNegativeInts*) defaultInstance {
  return [SettingRealsFromNegativeInts defaultInstance];
}
- (SettingRealsFromNegativeInts*) build {
  [self checkInitialized];
  return [self buildPartial];
}
- (SettingRealsFromNegativeInts*) buildPartial {
  SettingRealsFromNegativeInts* returnMe = [[result retain] autorelease];
  self.result = nil;
  return returnMe;
}
- (SettingRealsFromNegativeInts_Builder*) mergeFrom:(SettingRealsFromNegativeInts*) other {
  if (other == [SettingRealsFromNegativeInts defaultInstance]) {
    return self;
  }
  [self mergeUnknownFields:other.unknownFields];
  return self;
}
- (SettingRealsFromNegativeInts_Builder*) mergeFromCodedInputStream:(PBCodedInputStream*) input {
  return [self mergeFromCodedInputStream:input extensionRegistry:[PBExtensionRegistry emptyRegistry]];
}
- (SettingRealsFromNegativeInts_Builder*) mergeFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry {
  PBUnknownFieldSet_Builder* unknownFields = [PBUnknownFieldSet builderWithUnknownFields:self.unknownFields];
  while (YES) {
    int32_t tag = [input readTag];
    switch (tag) {
      case 0:
        [self setUnknownFields:[unknownFields build]];
        return self;
      default: {
        if (![self parseUnknownField:input unknownFields:unknownFields extensionRegistry:extensionRegistry tag:tag]) {
          [self setUnknownFields:[unknownFields build]];
          return self;
        }
        break;
      }
    }
  }
}
@end

@interface ComplexOptionType1 ()
@property int32_t foo;
@property int32_t foo2;
@property int32_t foo3;
@end

@implementation ComplexOptionType1

- (BOOL) hasFoo {
  return !!hasFoo_;
}
- (void) setHasFoo:(BOOL) value {
  hasFoo_ = !!value;
}
@synthesize foo;
- (BOOL) hasFoo2 {
  return !!hasFoo2_;
}
- (void) setHasFoo2:(BOOL) value {
  hasFoo2_ = !!value;
}
@synthesize foo2;
- (BOOL) hasFoo3 {
  return !!hasFoo3_;
}
- (void) setHasFoo3:(BOOL) value {
  hasFoo3_ = !!value;
}
@synthesize foo3;
- (void) dealloc {
  [super dealloc];
}
- (id) init {
  if ((self = [super init])) {
    self.foo = 0;
    self.foo2 = 0;
    self.foo3 = 0;
  }
  return self;
}
static ComplexOptionType1* defaultComplexOptionType1Instance = nil;
+ (void) initialize {
  if (self == [ComplexOptionType1 class]) {
    defaultComplexOptionType1Instance = [[ComplexOptionType1 alloc] init];
  }
}
+ (ComplexOptionType1*) defaultInstance {
  return defaultComplexOptionType1Instance;
}
- (ComplexOptionType1*) defaultInstance {
  return defaultComplexOptionType1Instance;
}
- (BOOL) isInitialized {
  if (!self.extensionsAreInitialized) {
    return NO;
  }
  return YES;
}
- (void) writeToCodedOutputStream:(PBCodedOutputStream*) output {
  if (self.hasFoo) {
    [output writeInt32:1 value:self.foo];
  }
  if (self.hasFoo2) {
    [output writeInt32:2 value:self.foo2];
  }
  if (self.hasFoo3) {
    [output writeInt32:3 value:self.foo3];
  }
  [self writeExtensionsToCodedOutputStream:output
                                      from:100
                                        to:536870912];
  [self.unknownFields writeToCodedOutputStream:output];
}
- (int32_t) serializedSize {
  int32_t size = memoizedSerializedSize;
  if (size != -1) {
    return size;
  }

  size = 0;
  if (self.hasFoo) {
    size += computeInt32Size(1, self.foo);
  }
  if (self.hasFoo2) {
    size += computeInt32Size(2, self.foo2);
  }
  if (self.hasFoo3) {
    size += computeInt32Size(3, self.foo3);
  }
  size += [self extensionsSerializedSize];
  size += self.unknownFields.serializedSize;
  memoizedSerializedSize = size;
  return size;
}
+ (ComplexOptionType1*) parseFromData:(NSData*) data {
  return (ComplexOptionType1*)[[[ComplexOptionType1 builder] mergeFromData:data] build];
}
+ (ComplexOptionType1*) parseFromData:(NSData*) data extensionRegistry:(PBExtensionRegistry*) extensionRegistry {
  return (ComplexOptionType1*)[[[ComplexOptionType1 builder] mergeFromData:data extensionRegistry:extensionRegistry] build];
}
+ (ComplexOptionType1*) parseFromInputStream:(NSInputStream*) input {
  return (ComplexOptionType1*)[[[ComplexOptionType1 builder] mergeFromInputStream:input] build];
}
+ (ComplexOptionType1*) parseFromInputStream:(NSInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry {
  return (ComplexOptionType1*)[[[ComplexOptionType1 builder] mergeFromInputStream:input extensionRegistry:extensionRegistry] build];
}
+ (ComplexOptionType1*) parseFromCodedInputStream:(PBCodedInputStream*) input {
  return (ComplexOptionType1*)[[[ComplexOptionType1 builder] mergeFromCodedInputStream:input] build];
}
+ (ComplexOptionType1*) parseFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry {
  return (ComplexOptionType1*)[[[ComplexOptionType1 builder] mergeFromCodedInputStream:input extensionRegistry:extensionRegistry] build];
}
+ (ComplexOptionType1_Builder*) builder {
  return [[[ComplexOptionType1_Builder alloc] init] autorelease];
}
+ (ComplexOptionType1_Builder*) builderWithPrototype:(ComplexOptionType1*) prototype {
  return [[ComplexOptionType1 builder] mergeFrom:prototype];
}
- (ComplexOptionType1_Builder*) builder {
  return [ComplexOptionType1 builder];
}
- (ComplexOptionType1_Builder*) toBuilder {
  return [ComplexOptionType1 builderWithPrototype:self];
}
- (void) writeDescriptionTo:(NSMutableString*) output withIndent:(NSString*) indent {
  if (self.hasFoo) {
    [output appendFormat:@"%@%@: %@\n", indent, @"foo", [NSNumber numberWithInt:self.foo]];
  }
  if (self.hasFoo2) {
    [output appendFormat:@"%@%@: %@\n", indent, @"foo2", [NSNumber numberWithInt:self.foo2]];
  }
  if (self.hasFoo3) {
    [output appendFormat:@"%@%@: %@\n", indent, @"foo3", [NSNumber numberWithInt:self.foo3]];
  }
  [self writeExtensionDescriptionToMutableString:(NSMutableString*)output
                                            from:100
                                              to:536870912
                                      withIndent:indent];
  [self.unknownFields writeDescriptionTo:output withIndent:indent];
}
- (BOOL) isEqual:(id)other {
  if (other == self) {
    return YES;
  }
  if (![other isKindOfClass:[ComplexOptionType1 class]]) {
    return NO;
  }
  ComplexOptionType1 *otherMessage = other;
  return
      self.hasFoo == otherMessage.hasFoo &&
      (!self.hasFoo || self.foo == otherMessage.foo) &&
      
      self.hasFoo2 == otherMessage.hasFoo2 &&
      (!self.hasFoo2 || self.foo2 == otherMessage.foo2) &&
      
      self.hasFoo3 == otherMessage.hasFoo3 &&
      (!self.hasFoo3 || self.foo3 == otherMessage.foo3) &&
      
      [self isEqualExtensionsInOther:otherMessage from:100 to:536870912] &&
      
      (self.unknownFields == otherMessage.unknownFields || (self.unknownFields != nil && [self.unknownFields isEqual:otherMessage.unknownFields]));
}
- (NSUInteger) hash {
  NSUInteger hashCode = 7;
  if (self.hasFoo) {
    hashCode = hashCode * 31 + [[NSNumber numberWithInt:self.foo] hash];
  }
  if (self.hasFoo2) {
    hashCode = hashCode * 31 + [[NSNumber numberWithInt:self.foo2] hash];
  }
  if (self.hasFoo3) {
    hashCode = hashCode * 31 + [[NSNumber numberWithInt:self.foo3] hash];
  }
  hashCode = hashCode * 31 + [self hashExtensionsFrom:100 to:536870912];
  hashCode = hashCode * 31 + [self.unknownFields hash];
  return hashCode;
}
@end

@interface ComplexOptionType1_Builder()
@property (retain) ComplexOptionType1* result;
@end

@implementation ComplexOptionType1_Builder
@synthesize result;
- (void) dealloc {
  self.result = nil;
  [super dealloc];
}
- (id) init {
  if ((self = [super init])) {
    self.result = [[[ComplexOptionType1 alloc] init] autorelease];
  }
  return self;
}
- (PBExtendableMessage*) internalGetResult {
  return result;
}
- (ComplexOptionType1_Builder*) clear {
  self.result = [[[ComplexOptionType1 alloc] init] autorelease];
  return self;
}
- (ComplexOptionType1_Builder*) clone {
  return [ComplexOptionType1 builderWithPrototype:result];
}
- (ComplexOptionType1*) defaultInstance {
  return [ComplexOptionType1 defaultInstance];
}
- (ComplexOptionType1*) build {
  [self checkInitialized];
  return [self buildPartial];
}
- (ComplexOptionType1*) buildPartial {
  ComplexOptionType1* returnMe = [[result retain] autorelease];
  self.result = nil;
  return returnMe;
}
- (ComplexOptionType1_Builder*) mergeFrom:(ComplexOptionType1*) other {
  if (other == [ComplexOptionType1 defaultInstance]) {
    return self;
  }
  if (other.hasFoo) {
    [self setFoo:other.foo];
  }
  if (other.hasFoo2) {
    [self setFoo2:other.foo2];
  }
  if (other.hasFoo3) {
    [self setFoo3:other.foo3];
  }
  [self mergeExtensionFields:other];
  [self mergeUnknownFields:other.unknownFields];
  return self;
}
- (ComplexOptionType1_Builder*) mergeFromCodedInputStream:(PBCodedInputStream*) input {
  return [self mergeFromCodedInputStream:input extensionRegistry:[PBExtensionRegistry emptyRegistry]];
}
- (ComplexOptionType1_Builder*) mergeFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry {
  PBUnknownFieldSet_Builder* unknownFields = [PBUnknownFieldSet builderWithUnknownFields:self.unknownFields];
  while (YES) {
    int32_t tag = [input readTag];
    switch (tag) {
      case 0:
        [self setUnknownFields:[unknownFields build]];
        return self;
      default: {
        if (![self parseUnknownField:input unknownFields:unknownFields extensionRegistry:extensionRegistry tag:tag]) {
          [self setUnknownFields:[unknownFields build]];
          return self;
        }
        break;
      }
      case 8: {
        [self setFoo:[input readInt32]];
        break;
      }
      case 16: {
        [self setFoo2:[input readInt32]];
        break;
      }
      case 24: {
        [self setFoo3:[input readInt32]];
        break;
      }
    }
  }
}
- (BOOL) hasFoo {
  return result.hasFoo;
}
- (int32_t) foo {
  return result.foo;
}
- (ComplexOptionType1_Builder*) setFoo:(int32_t) value {
  result.hasFoo = YES;
  result.foo = value;
  return self;
}
- (ComplexOptionType1_Builder*) clearFoo {
  result.hasFoo = NO;
  result.foo = 0;
  return self;
}
- (BOOL) hasFoo2 {
  return result.hasFoo2;
}
- (int32_t) foo2 {
  return result.foo2;
}
- (ComplexOptionType1_Builder*) setFoo2:(int32_t) value {
  result.hasFoo2 = YES;
  result.foo2 = value;
  return self;
}
- (ComplexOptionType1_Builder*) clearFoo2 {
  result.hasFoo2 = NO;
  result.foo2 = 0;
  return self;
}
- (BOOL) hasFoo3 {
  return result.hasFoo3;
}
- (int32_t) foo3 {
  return result.foo3;
}
- (ComplexOptionType1_Builder*) setFoo3:(int32_t) value {
  result.hasFoo3 = YES;
  result.foo3 = value;
  return self;
}
- (ComplexOptionType1_Builder*) clearFoo3 {
  result.hasFoo3 = NO;
  result.foo3 = 0;
  return self;
}
@end

@interface ComplexOptionType2 ()
@property (retain) ComplexOptionType1* bar;
@property int32_t baz;
@property (retain) ComplexOptionType2_ComplexOptionType4* fred;
@end

@implementation ComplexOptionType2

- (BOOL) hasBar {
  return !!hasBar_;
}
- (void) setHasBar:(BOOL) value {
  hasBar_ = !!value;
}
@synthesize bar;
- (BOOL) hasBaz {
  return !!hasBaz_;
}
- (void) setHasBaz:(BOOL) value {
  hasBaz_ = !!value;
}
@synthesize baz;
- (BOOL) hasFred {
  return !!hasFred_;
}
- (void) setHasFred:(BOOL) value {
  hasFred_ = !!value;
}
@synthesize fred;
- (void) dealloc {
  self.bar = nil;
  self.fred = nil;
  [super dealloc];
}
- (id) init {
  if ((self = [super init])) {
    self.bar = [ComplexOptionType1 defaultInstance];
    self.baz = 0;
    self.fred = [ComplexOptionType2_ComplexOptionType4 defaultInstance];
  }
  return self;
}
static ComplexOptionType2* defaultComplexOptionType2Instance = nil;
+ (void) initialize {
  if (self == [ComplexOptionType2 class]) {
    defaultComplexOptionType2Instance = [[ComplexOptionType2 alloc] init];
  }
}
+ (ComplexOptionType2*) defaultInstance {
  return defaultComplexOptionType2Instance;
}
- (ComplexOptionType2*) defaultInstance {
  return defaultComplexOptionType2Instance;
}
- (BOOL) isInitialized {
  if (self.hasBar) {
    if (!self.bar.isInitialized) {
      return NO;
    }
  }
  if (!self.extensionsAreInitialized) {
    return NO;
  }
  return YES;
}
- (void) writeToCodedOutputStream:(PBCodedOutputStream*) output {
  if (self.hasBar) {
    [output writeMessage:1 value:self.bar];
  }
  if (self.hasBaz) {
    [output writeInt32:2 value:self.baz];
  }
  if (self.hasFred) {
    [output writeMessage:3 value:self.fred];
  }
  [self writeExtensionsToCodedOutputStream:output
                                      from:100
                                        to:536870912];
  [self.unknownFields writeToCodedOutputStream:output];
}
- (int32_t) serializedSize {
  int32_t size = memoizedSerializedSize;
  if (size != -1) {
    return size;
  }

  size = 0;
  if (self.hasBar) {
    size += computeMessageSize(1, self.bar);
  }
  if (self.hasBaz) {
    size += computeInt32Size(2, self.baz);
  }
  if (self.hasFred) {
    size += computeMessageSize(3, self.fred);
  }
  size += [self extensionsSerializedSize];
  size += self.unknownFields.serializedSize;
  memoizedSerializedSize = size;
  return size;
}
+ (ComplexOptionType2*) parseFromData:(NSData*) data {
  return (ComplexOptionType2*)[[[ComplexOptionType2 builder] mergeFromData:data] build];
}
+ (ComplexOptionType2*) parseFromData:(NSData*) data extensionRegistry:(PBExtensionRegistry*) extensionRegistry {
  return (ComplexOptionType2*)[[[ComplexOptionType2 builder] mergeFromData:data extensionRegistry:extensionRegistry] build];
}
+ (ComplexOptionType2*) parseFromInputStream:(NSInputStream*) input {
  return (ComplexOptionType2*)[[[ComplexOptionType2 builder] mergeFromInputStream:input] build];
}
+ (ComplexOptionType2*) parseFromInputStream:(NSInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry {
  return (ComplexOptionType2*)[[[ComplexOptionType2 builder] mergeFromInputStream:input extensionRegistry:extensionRegistry] build];
}
+ (ComplexOptionType2*) parseFromCodedInputStream:(PBCodedInputStream*) input {
  return (ComplexOptionType2*)[[[ComplexOptionType2 builder] mergeFromCodedInputStream:input] build];
}
+ (ComplexOptionType2*) parseFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry {
  return (ComplexOptionType2*)[[[ComplexOptionType2 builder] mergeFromCodedInputStream:input extensionRegistry:extensionRegistry] build];
}
+ (ComplexOptionType2_Builder*) builder {
  return [[[ComplexOptionType2_Builder alloc] init] autorelease];
}
+ (ComplexOptionType2_Builder*) builderWithPrototype:(ComplexOptionType2*) prototype {
  return [[ComplexOptionType2 builder] mergeFrom:prototype];
}
- (ComplexOptionType2_Builder*) builder {
  return [ComplexOptionType2 builder];
}
- (ComplexOptionType2_Builder*) toBuilder {
  return [ComplexOptionType2 builderWithPrototype:self];
}
- (void) writeDescriptionTo:(NSMutableString*) output withIndent:(NSString*) indent {
  if (self.hasBar) {
    [output appendFormat:@"%@%@ {\n", indent, @"bar"];
    [self.bar writeDescriptionTo:output
                         withIndent:[NSString stringWithFormat:@"%@  ", indent]];
    [output appendFormat:@"%@}\n", indent];
  }
  if (self.hasBaz) {
    [output appendFormat:@"%@%@: %@\n", indent, @"baz", [NSNumber numberWithInt:self.baz]];
  }
  if (self.hasFred) {
    [output appendFormat:@"%@%@ {\n", indent, @"fred"];
    [self.fred writeDescriptionTo:output
                         withIndent:[NSString stringWithFormat:@"%@  ", indent]];
    [output appendFormat:@"%@}\n", indent];
  }
  [self writeExtensionDescriptionToMutableString:(NSMutableString*)output
                                            from:100
                                              to:536870912
                                      withIndent:indent];
  [self.unknownFields writeDescriptionTo:output withIndent:indent];
}
- (BOOL) isEqual:(id)other {
  if (other == self) {
    return YES;
  }
  if (![other isKindOfClass:[ComplexOptionType2 class]]) {
    return NO;
  }
  ComplexOptionType2 *otherMessage = other;
  return
      self.hasBar == otherMessage.hasBar &&
      (!self.hasBar || [self.bar isEqual:otherMessage.bar]) &&
      
      self.hasBaz == otherMessage.hasBaz &&
      (!self.hasBaz || self.baz == otherMessage.baz) &&
      
      self.hasFred == otherMessage.hasFred &&
      (!self.hasFred || [self.fred isEqual:otherMessage.fred]) &&
      
      [self isEqualExtensionsInOther:otherMessage from:100 to:536870912] &&
      
      (self.unknownFields == otherMessage.unknownFields || (self.unknownFields != nil && [self.unknownFields isEqual:otherMessage.unknownFields]));
}
- (NSUInteger) hash {
  NSUInteger hashCode = 7;
  if (self.hasBar) {
    hashCode = hashCode * 31 + [self.bar hash];
  }
  if (self.hasBaz) {
    hashCode = hashCode * 31 + [[NSNumber numberWithInt:self.baz] hash];
  }
  if (self.hasFred) {
    hashCode = hashCode * 31 + [self.fred hash];
  }
  hashCode = hashCode * 31 + [self hashExtensionsFrom:100 to:536870912];
  hashCode = hashCode * 31 + [self.unknownFields hash];
  return hashCode;
}
@end

@interface ComplexOptionType2_ComplexOptionType4 ()
@property int32_t waldo;
@end

@implementation ComplexOptionType2_ComplexOptionType4

- (BOOL) hasWaldo {
  return !!hasWaldo_;
}
- (void) setHasWaldo:(BOOL) value {
  hasWaldo_ = !!value;
}
@synthesize waldo;
- (void) dealloc {
  [super dealloc];
}
- (id) init {
  if ((self = [super init])) {
    self.waldo = 0;
  }
  return self;
}
+ (id<PBExtensionField>) complexOpt4 {
  return ComplexOptionType2_ComplexOptionType4_complexOpt4;
}
static ComplexOptionType2_ComplexOptionType4* defaultComplexOptionType2_ComplexOptionType4Instance = nil;
+ (void) initialize {
  if (self == [ComplexOptionType2_ComplexOptionType4 class]) {
    defaultComplexOptionType2_ComplexOptionType4Instance = [[ComplexOptionType2_ComplexOptionType4 alloc] init];
  }
}
+ (ComplexOptionType2_ComplexOptionType4*) defaultInstance {
  return defaultComplexOptionType2_ComplexOptionType4Instance;
}
- (ComplexOptionType2_ComplexOptionType4*) defaultInstance {
  return defaultComplexOptionType2_ComplexOptionType4Instance;
}
- (BOOL) isInitialized {
  return YES;
}
- (void) writeToCodedOutputStream:(PBCodedOutputStream*) output {
  if (self.hasWaldo) {
    [output writeInt32:1 value:self.waldo];
  }
  [self.unknownFields writeToCodedOutputStream:output];
}
- (int32_t) serializedSize {
  int32_t size = memoizedSerializedSize;
  if (size != -1) {
    return size;
  }

  size = 0;
  if (self.hasWaldo) {
    size += computeInt32Size(1, self.waldo);
  }
  size += self.unknownFields.serializedSize;
  memoizedSerializedSize = size;
  return size;
}
+ (ComplexOptionType2_ComplexOptionType4*) parseFromData:(NSData*) data {
  return (ComplexOptionType2_ComplexOptionType4*)[[[ComplexOptionType2_ComplexOptionType4 builder] mergeFromData:data] build];
}
+ (ComplexOptionType2_ComplexOptionType4*) parseFromData:(NSData*) data extensionRegistry:(PBExtensionRegistry*) extensionRegistry {
  return (ComplexOptionType2_ComplexOptionType4*)[[[ComplexOptionType2_ComplexOptionType4 builder] mergeFromData:data extensionRegistry:extensionRegistry] build];
}
+ (ComplexOptionType2_ComplexOptionType4*) parseFromInputStream:(NSInputStream*) input {
  return (ComplexOptionType2_ComplexOptionType4*)[[[ComplexOptionType2_ComplexOptionType4 builder] mergeFromInputStream:input] build];
}
+ (ComplexOptionType2_ComplexOptionType4*) parseFromInputStream:(NSInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry {
  return (ComplexOptionType2_ComplexOptionType4*)[[[ComplexOptionType2_ComplexOptionType4 builder] mergeFromInputStream:input extensionRegistry:extensionRegistry] build];
}
+ (ComplexOptionType2_ComplexOptionType4*) parseFromCodedInputStream:(PBCodedInputStream*) input {
  return (ComplexOptionType2_ComplexOptionType4*)[[[ComplexOptionType2_ComplexOptionType4 builder] mergeFromCodedInputStream:input] build];
}
+ (ComplexOptionType2_ComplexOptionType4*) parseFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry {
  return (ComplexOptionType2_ComplexOptionType4*)[[[ComplexOptionType2_ComplexOptionType4 builder] mergeFromCodedInputStream:input extensionRegistry:extensionRegistry] build];
}
+ (ComplexOptionType2_ComplexOptionType4_Builder*) builder {
  return [[[ComplexOptionType2_ComplexOptionType4_Builder alloc] init] autorelease];
}
+ (ComplexOptionType2_ComplexOptionType4_Builder*) builderWithPrototype:(ComplexOptionType2_ComplexOptionType4*) prototype {
  return [[ComplexOptionType2_ComplexOptionType4 builder] mergeFrom:prototype];
}
- (ComplexOptionType2_ComplexOptionType4_Builder*) builder {
  return [ComplexOptionType2_ComplexOptionType4 builder];
}
- (ComplexOptionType2_ComplexOptionType4_Builder*) toBuilder {
  return [ComplexOptionType2_ComplexOptionType4 builderWithPrototype:self];
}
- (void) writeDescriptionTo:(NSMutableString*) output withIndent:(NSString*) indent {
  if (self.hasWaldo) {
    [output appendFormat:@"%@%@: %@\n", indent, @"waldo", [NSNumber numberWithInt:self.waldo]];
  }
  [self.unknownFields writeDescriptionTo:output withIndent:indent];
}
- (BOOL) isEqual:(id)other {
  if (other == self) {
    return YES;
  }
  if (![other isKindOfClass:[ComplexOptionType2_ComplexOptionType4 class]]) {
    return NO;
  }
  ComplexOptionType2_ComplexOptionType4 *otherMessage = other;
  return
      self.hasWaldo == otherMessage.hasWaldo &&
      (!self.hasWaldo || self.waldo == otherMessage.waldo) &&
      
      (self.unknownFields == otherMessage.unknownFields || (self.unknownFields != nil && [self.unknownFields isEqual:otherMessage.unknownFields]));
}
- (NSUInteger) hash {
  NSUInteger hashCode = 7;
  if (self.hasWaldo) {
    hashCode = hashCode * 31 + [[NSNumber numberWithInt:self.waldo] hash];
  }
  hashCode = hashCode * 31 + [self.unknownFields hash];
  return hashCode;
}
@end

@interface ComplexOptionType2_ComplexOptionType4_Builder()
@property (retain) ComplexOptionType2_ComplexOptionType4* result;
@end

@implementation ComplexOptionType2_ComplexOptionType4_Builder
@synthesize result;
- (void) dealloc {
  self.result = nil;
  [super dealloc];
}
- (id) init {
  if ((self = [super init])) {
    self.result = [[[ComplexOptionType2_ComplexOptionType4 alloc] init] autorelease];
  }
  return self;
}
- (PBGeneratedMessage*) internalGetResult {
  return result;
}
- (ComplexOptionType2_ComplexOptionType4_Builder*) clear {
  self.result = [[[ComplexOptionType2_ComplexOptionType4 alloc] init] autorelease];
  return self;
}
- (ComplexOptionType2_ComplexOptionType4_Builder*) clone {
  return [ComplexOptionType2_ComplexOptionType4 builderWithPrototype:result];
}
- (ComplexOptionType2_ComplexOptionType4*) defaultInstance {
  return [ComplexOptionType2_ComplexOptionType4 defaultInstance];
}
- (ComplexOptionType2_ComplexOptionType4*) build {
  [self checkInitialized];
  return [self buildPartial];
}
- (ComplexOptionType2_ComplexOptionType4*) buildPartial {
  ComplexOptionType2_ComplexOptionType4* returnMe = [[result retain] autorelease];
  self.result = nil;
  return returnMe;
}
- (ComplexOptionType2_ComplexOptionType4_Builder*) mergeFrom:(ComplexOptionType2_ComplexOptionType4*) other {
  if (other == [ComplexOptionType2_ComplexOptionType4 defaultInstance]) {
    return self;
  }
  if (other.hasWaldo) {
    [self setWaldo:other.waldo];
  }
  [self mergeUnknownFields:other.unknownFields];
  return self;
}
- (ComplexOptionType2_ComplexOptionType4_Builder*) mergeFromCodedInputStream:(PBCodedInputStream*) input {
  return [self mergeFromCodedInputStream:input extensionRegistry:[PBExtensionRegistry emptyRegistry]];
}
- (ComplexOptionType2_ComplexOptionType4_Builder*) mergeFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry {
  PBUnknownFieldSet_Builder* unknownFields = [PBUnknownFieldSet builderWithUnknownFields:self.unknownFields];
  while (YES) {
    int32_t tag = [input readTag];
    switch (tag) {
      case 0:
        [self setUnknownFields:[unknownFields build]];
        return self;
      default: {
        if (![self parseUnknownField:input unknownFields:unknownFields extensionRegistry:extensionRegistry tag:tag]) {
          [self setUnknownFields:[unknownFields build]];
          return self;
        }
        break;
      }
      case 8: {
        [self setWaldo:[input readInt32]];
        break;
      }
    }
  }
}
- (BOOL) hasWaldo {
  return result.hasWaldo;
}
- (int32_t) waldo {
  return result.waldo;
}
- (ComplexOptionType2_ComplexOptionType4_Builder*) setWaldo:(int32_t) value {
  result.hasWaldo = YES;
  result.waldo = value;
  return self;
}
- (ComplexOptionType2_ComplexOptionType4_Builder*) clearWaldo {
  result.hasWaldo = NO;
  result.waldo = 0;
  return self;
}
@end

@interface ComplexOptionType2_Builder()
@property (retain) ComplexOptionType2* result;
@end

@implementation ComplexOptionType2_Builder
@synthesize result;
- (void) dealloc {
  self.result = nil;
  [super dealloc];
}
- (id) init {
  if ((self = [super init])) {
    self.result = [[[ComplexOptionType2 alloc] init] autorelease];
  }
  return self;
}
- (PBExtendableMessage*) internalGetResult {
  return result;
}
- (ComplexOptionType2_Builder*) clear {
  self.result = [[[ComplexOptionType2 alloc] init] autorelease];
  return self;
}
- (ComplexOptionType2_Builder*) clone {
  return [ComplexOptionType2 builderWithPrototype:result];
}
- (ComplexOptionType2*) defaultInstance {
  return [ComplexOptionType2 defaultInstance];
}
- (ComplexOptionType2*) build {
  [self checkInitialized];
  return [self buildPartial];
}
- (ComplexOptionType2*) buildPartial {
  ComplexOptionType2* returnMe = [[result retain] autorelease];
  self.result = nil;
  return returnMe;
}
- (ComplexOptionType2_Builder*) mergeFrom:(ComplexOptionType2*) other {
  if (other == [ComplexOptionType2 defaultInstance]) {
    return self;
  }
  if (other.hasBar) {
    [self mergeBar:other.bar];
  }
  if (other.hasBaz) {
    [self setBaz:other.baz];
  }
  if (other.hasFred) {
    [self mergeFred:other.fred];
  }
  [self mergeExtensionFields:other];
  [self mergeUnknownFields:other.unknownFields];
  return self;
}
- (ComplexOptionType2_Builder*) mergeFromCodedInputStream:(PBCodedInputStream*) input {
  return [self mergeFromCodedInputStream:input extensionRegistry:[PBExtensionRegistry emptyRegistry]];
}
- (ComplexOptionType2_Builder*) mergeFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry {
  PBUnknownFieldSet_Builder* unknownFields = [PBUnknownFieldSet builderWithUnknownFields:self.unknownFields];
  while (YES) {
    int32_t tag = [input readTag];
    switch (tag) {
      case 0:
        [self setUnknownFields:[unknownFields build]];
        return self;
      default: {
        if (![self parseUnknownField:input unknownFields:unknownFields extensionRegistry:extensionRegistry tag:tag]) {
          [self setUnknownFields:[unknownFields build]];
          return self;
        }
        break;
      }
      case 10: {
        ComplexOptionType1_Builder* subBuilder = [ComplexOptionType1 builder];
        if (self.hasBar) {
          [subBuilder mergeFrom:self.bar];
        }
        [input readMessage:subBuilder extensionRegistry:extensionRegistry];
        [self setBar:[subBuilder buildPartial]];
        break;
      }
      case 16: {
        [self setBaz:[input readInt32]];
        break;
      }
      case 26: {
        ComplexOptionType2_ComplexOptionType4_Builder* subBuilder = [ComplexOptionType2_ComplexOptionType4 builder];
        if (self.hasFred) {
          [subBuilder mergeFrom:self.fred];
        }
        [input readMessage:subBuilder extensionRegistry:extensionRegistry];
        [self setFred:[subBuilder buildPartial]];
        break;
      }
    }
  }
}
- (BOOL) hasBar {
  return result.hasBar;
}
- (ComplexOptionType1*) bar {
  return result.bar;
}
- (ComplexOptionType2_Builder*) setBar:(ComplexOptionType1*) value {
  result.hasBar = YES;
  result.bar = value;
  return self;
}
- (ComplexOptionType2_Builder*) setBarBuilder:(ComplexOptionType1_Builder*) builderForValue {
  return [self setBar:[builderForValue build]];
}
- (ComplexOptionType2_Builder*) mergeBar:(ComplexOptionType1*) value {
  if (result.hasBar &&
      result.bar != [ComplexOptionType1 defaultInstance]) {
    result.bar =
      [[[ComplexOptionType1 builderWithPrototype:result.bar] mergeFrom:value] buildPartial];
  } else {
    result.bar = value;
  }
  result.hasBar = YES;
  return self;
}
- (ComplexOptionType2_Builder*) clearBar {
  result.hasBar = NO;
  result.bar = [ComplexOptionType1 defaultInstance];
  return self;
}
- (BOOL) hasBaz {
  return result.hasBaz;
}
- (int32_t) baz {
  return result.baz;
}
- (ComplexOptionType2_Builder*) setBaz:(int32_t) value {
  result.hasBaz = YES;
  result.baz = value;
  return self;
}
- (ComplexOptionType2_Builder*) clearBaz {
  result.hasBaz = NO;
  result.baz = 0;
  return self;
}
- (BOOL) hasFred {
  return result.hasFred;
}
- (ComplexOptionType2_ComplexOptionType4*) fred {
  return result.fred;
}
- (ComplexOptionType2_Builder*) setFred:(ComplexOptionType2_ComplexOptionType4*) value {
  result.hasFred = YES;
  result.fred = value;
  return self;
}
- (ComplexOptionType2_Builder*) setFredBuilder:(ComplexOptionType2_ComplexOptionType4_Builder*) builderForValue {
  return [self setFred:[builderForValue build]];
}
- (ComplexOptionType2_Builder*) mergeFred:(ComplexOptionType2_ComplexOptionType4*) value {
  if (result.hasFred &&
      result.fred != [ComplexOptionType2_ComplexOptionType4 defaultInstance]) {
    result.fred =
      [[[ComplexOptionType2_ComplexOptionType4 builderWithPrototype:result.fred] mergeFrom:value] buildPartial];
  } else {
    result.fred = value;
  }
  result.hasFred = YES;
  return self;
}
- (ComplexOptionType2_Builder*) clearFred {
  result.hasFred = NO;
  result.fred = [ComplexOptionType2_ComplexOptionType4 defaultInstance];
  return self;
}
@end

@interface ComplexOptionType3 ()
@property int32_t qux;
@property (retain) ComplexOptionType3_ComplexOptionType5* complexOptionType5;
@end

@implementation ComplexOptionType3

- (BOOL) hasQux {
  return !!hasQux_;
}
- (void) setHasQux:(BOOL) value {
  hasQux_ = !!value;
}
@synthesize qux;
- (BOOL) hasComplexOptionType5 {
  return !!hasComplexOptionType5_;
}
- (void) setHasComplexOptionType5:(BOOL) value {
  hasComplexOptionType5_ = !!value;
}
@synthesize complexOptionType5;
- (void) dealloc {
  self.complexOptionType5 = nil;
  [super dealloc];
}
- (id) init {
  if ((self = [super init])) {
    self.qux = 0;
    self.complexOptionType5 = [ComplexOptionType3_ComplexOptionType5 defaultInstance];
  }
  return self;
}
static ComplexOptionType3* defaultComplexOptionType3Instance = nil;
+ (void) initialize {
  if (self == [ComplexOptionType3 class]) {
    defaultComplexOptionType3Instance = [[ComplexOptionType3 alloc] init];
  }
}
+ (ComplexOptionType3*) defaultInstance {
  return defaultComplexOptionType3Instance;
}
- (ComplexOptionType3*) defaultInstance {
  return defaultComplexOptionType3Instance;
}
- (BOOL) isInitialized {
  return YES;
}
- (void) writeToCodedOutputStream:(PBCodedOutputStream*) output {
  if (self.hasQux) {
    [output writeInt32:1 value:self.qux];
  }
  if (self.hasComplexOptionType5) {
    [output writeGroup:2 value:self.complexOptionType5];
  }
  [self.unknownFields writeToCodedOutputStream:output];
}
- (int32_t) serializedSize {
  int32_t size = memoizedSerializedSize;
  if (size != -1) {
    return size;
  }

  size = 0;
  if (self.hasQux) {
    size += computeInt32Size(1, self.qux);
  }
  if (self.hasComplexOptionType5) {
    size += computeGroupSize(2, self.complexOptionType5);
  }
  size += self.unknownFields.serializedSize;
  memoizedSerializedSize = size;
  return size;
}
+ (ComplexOptionType3*) parseFromData:(NSData*) data {
  return (ComplexOptionType3*)[[[ComplexOptionType3 builder] mergeFromData:data] build];
}
+ (ComplexOptionType3*) parseFromData:(NSData*) data extensionRegistry:(PBExtensionRegistry*) extensionRegistry {
  return (ComplexOptionType3*)[[[ComplexOptionType3 builder] mergeFromData:data extensionRegistry:extensionRegistry] build];
}
+ (ComplexOptionType3*) parseFromInputStream:(NSInputStream*) input {
  return (ComplexOptionType3*)[[[ComplexOptionType3 builder] mergeFromInputStream:input] build];
}
+ (ComplexOptionType3*) parseFromInputStream:(NSInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry {
  return (ComplexOptionType3*)[[[ComplexOptionType3 builder] mergeFromInputStream:input extensionRegistry:extensionRegistry] build];
}
+ (ComplexOptionType3*) parseFromCodedInputStream:(PBCodedInputStream*) input {
  return (ComplexOptionType3*)[[[ComplexOptionType3 builder] mergeFromCodedInputStream:input] build];
}
+ (ComplexOptionType3*) parseFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry {
  return (ComplexOptionType3*)[[[ComplexOptionType3 builder] mergeFromCodedInputStream:input extensionRegistry:extensionRegistry] build];
}
+ (ComplexOptionType3_Builder*) builder {
  return [[[ComplexOptionType3_Builder alloc] init] autorelease];
}
+ (ComplexOptionType3_Builder*) builderWithPrototype:(ComplexOptionType3*) prototype {
  return [[ComplexOptionType3 builder] mergeFrom:prototype];
}
- (ComplexOptionType3_Builder*) builder {
  return [ComplexOptionType3 builder];
}
- (ComplexOptionType3_Builder*) toBuilder {
  return [ComplexOptionType3 builderWithPrototype:self];
}
- (void) writeDescriptionTo:(NSMutableString*) output withIndent:(NSString*) indent {
  if (self.hasQux) {
    [output appendFormat:@"%@%@: %@\n", indent, @"qux", [NSNumber numberWithInt:self.qux]];
  }
  if (self.hasComplexOptionType5) {
    [output appendFormat:@"%@%@ {\n", indent, @"complexOptionType5"];
    [self.complexOptionType5 writeDescriptionTo:output
                         withIndent:[NSString stringWithFormat:@"%@  ", indent]];
    [output appendFormat:@"%@}\n", indent];
  }
  [self.unknownFields writeDescriptionTo:output withIndent:indent];
}
- (BOOL) isEqual:(id)other {
  if (other == self) {
    return YES;
  }
  if (![other isKindOfClass:[ComplexOptionType3 class]]) {
    return NO;
  }
  ComplexOptionType3 *otherMessage = other;
  return
      self.hasQux == otherMessage.hasQux &&
      (!self.hasQux || self.qux == otherMessage.qux) &&
      
      self.hasComplexOptionType5 == otherMessage.hasComplexOptionType5 &&
      (!self.hasComplexOptionType5 || [self.complexOptionType5 isEqual:otherMessage.complexOptionType5]) &&
      
      (self.unknownFields == otherMessage.unknownFields || (self.unknownFields != nil && [self.unknownFields isEqual:otherMessage.unknownFields]));
}
- (NSUInteger) hash {
  NSUInteger hashCode = 7;
  if (self.hasQux) {
    hashCode = hashCode * 31 + [[NSNumber numberWithInt:self.qux] hash];
  }
  if (self.hasComplexOptionType5) {
    hashCode = hashCode * 31 + [self.complexOptionType5 hash];
  }
  hashCode = hashCode * 31 + [self.unknownFields hash];
  return hashCode;
}
@end

@interface ComplexOptionType3_ComplexOptionType5 ()
@property int32_t plugh;
@end

@implementation ComplexOptionType3_ComplexOptionType5

- (BOOL) hasPlugh {
  return !!hasPlugh_;
}
- (void) setHasPlugh:(BOOL) value {
  hasPlugh_ = !!value;
}
@synthesize plugh;
- (void) dealloc {
  [super dealloc];
}
- (id) init {
  if ((self = [super init])) {
    self.plugh = 0;
  }
  return self;
}
static ComplexOptionType3_ComplexOptionType5* defaultComplexOptionType3_ComplexOptionType5Instance = nil;
+ (void) initialize {
  if (self == [ComplexOptionType3_ComplexOptionType5 class]) {
    defaultComplexOptionType3_ComplexOptionType5Instance = [[ComplexOptionType3_ComplexOptionType5 alloc] init];
  }
}
+ (ComplexOptionType3_ComplexOptionType5*) defaultInstance {
  return defaultComplexOptionType3_ComplexOptionType5Instance;
}
- (ComplexOptionType3_ComplexOptionType5*) defaultInstance {
  return defaultComplexOptionType3_ComplexOptionType5Instance;
}
- (BOOL) isInitialized {
  return YES;
}
- (void) writeToCodedOutputStream:(PBCodedOutputStream*) output {
  if (self.hasPlugh) {
    [output writeInt32:3 value:self.plugh];
  }
  [self.unknownFields writeToCodedOutputStream:output];
}
- (int32_t) serializedSize {
  int32_t size = memoizedSerializedSize;
  if (size != -1) {
    return size;
  }

  size = 0;
  if (self.hasPlugh) {
    size += computeInt32Size(3, self.plugh);
  }
  size += self.unknownFields.serializedSize;
  memoizedSerializedSize = size;
  return size;
}
+ (ComplexOptionType3_ComplexOptionType5*) parseFromData:(NSData*) data {
  return (ComplexOptionType3_ComplexOptionType5*)[[[ComplexOptionType3_ComplexOptionType5 builder] mergeFromData:data] build];
}
+ (ComplexOptionType3_ComplexOptionType5*) parseFromData:(NSData*) data extensionRegistry:(PBExtensionRegistry*) extensionRegistry {
  return (ComplexOptionType3_ComplexOptionType5*)[[[ComplexOptionType3_ComplexOptionType5 builder] mergeFromData:data extensionRegistry:extensionRegistry] build];
}
+ (ComplexOptionType3_ComplexOptionType5*) parseFromInputStream:(NSInputStream*) input {
  return (ComplexOptionType3_ComplexOptionType5*)[[[ComplexOptionType3_ComplexOptionType5 builder] mergeFromInputStream:input] build];
}
+ (ComplexOptionType3_ComplexOptionType5*) parseFromInputStream:(NSInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry {
  return (ComplexOptionType3_ComplexOptionType5*)[[[ComplexOptionType3_ComplexOptionType5 builder] mergeFromInputStream:input extensionRegistry:extensionRegistry] build];
}
+ (ComplexOptionType3_ComplexOptionType5*) parseFromCodedInputStream:(PBCodedInputStream*) input {
  return (ComplexOptionType3_ComplexOptionType5*)[[[ComplexOptionType3_ComplexOptionType5 builder] mergeFromCodedInputStream:input] build];
}
+ (ComplexOptionType3_ComplexOptionType5*) parseFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry {
  return (ComplexOptionType3_ComplexOptionType5*)[[[ComplexOptionType3_ComplexOptionType5 builder] mergeFromCodedInputStream:input extensionRegistry:extensionRegistry] build];
}
+ (ComplexOptionType3_ComplexOptionType5_Builder*) builder {
  return [[[ComplexOptionType3_ComplexOptionType5_Builder alloc] init] autorelease];
}
+ (ComplexOptionType3_ComplexOptionType5_Builder*) builderWithPrototype:(ComplexOptionType3_ComplexOptionType5*) prototype {
  return [[ComplexOptionType3_ComplexOptionType5 builder] mergeFrom:prototype];
}
- (ComplexOptionType3_ComplexOptionType5_Builder*) builder {
  return [ComplexOptionType3_ComplexOptionType5 builder];
}
- (ComplexOptionType3_ComplexOptionType5_Builder*) toBuilder {
  return [ComplexOptionType3_ComplexOptionType5 builderWithPrototype:self];
}
- (void) writeDescriptionTo:(NSMutableString*) output withIndent:(NSString*) indent {
  if (self.hasPlugh) {
    [output appendFormat:@"%@%@: %@\n", indent, @"plugh", [NSNumber numberWithInt:self.plugh]];
  }
  [self.unknownFields writeDescriptionTo:output withIndent:indent];
}
- (BOOL) isEqual:(id)other {
  if (other == self) {
    return YES;
  }
  if (![other isKindOfClass:[ComplexOptionType3_ComplexOptionType5 class]]) {
    return NO;
  }
  ComplexOptionType3_ComplexOptionType5 *otherMessage = other;
  return
      self.hasPlugh == otherMessage.hasPlugh &&
      (!self.hasPlugh || self.plugh == otherMessage.plugh) &&
      
      (self.unknownFields == otherMessage.unknownFields || (self.unknownFields != nil && [self.unknownFields isEqual:otherMessage.unknownFields]));
}
- (NSUInteger) hash {
  NSUInteger hashCode = 7;
  if (self.hasPlugh) {
    hashCode = hashCode * 31 + [[NSNumber numberWithInt:self.plugh] hash];
  }
  hashCode = hashCode * 31 + [self.unknownFields hash];
  return hashCode;
}
@end

@interface ComplexOptionType3_ComplexOptionType5_Builder()
@property (retain) ComplexOptionType3_ComplexOptionType5* result;
@end

@implementation ComplexOptionType3_ComplexOptionType5_Builder
@synthesize result;
- (void) dealloc {
  self.result = nil;
  [super dealloc];
}
- (id) init {
  if ((self = [super init])) {
    self.result = [[[ComplexOptionType3_ComplexOptionType5 alloc] init] autorelease];
  }
  return self;
}
- (PBGeneratedMessage*) internalGetResult {
  return result;
}
- (ComplexOptionType3_ComplexOptionType5_Builder*) clear {
  self.result = [[[ComplexOptionType3_ComplexOptionType5 alloc] init] autorelease];
  return self;
}
- (ComplexOptionType3_ComplexOptionType5_Builder*) clone {
  return [ComplexOptionType3_ComplexOptionType5 builderWithPrototype:result];
}
- (ComplexOptionType3_ComplexOptionType5*) defaultInstance {
  return [ComplexOptionType3_ComplexOptionType5 defaultInstance];
}
- (ComplexOptionType3_ComplexOptionType5*) build {
  [self checkInitialized];
  return [self buildPartial];
}
- (ComplexOptionType3_ComplexOptionType5*) buildPartial {
  ComplexOptionType3_ComplexOptionType5* returnMe = [[result retain] autorelease];
  self.result = nil;
  return returnMe;
}
- (ComplexOptionType3_ComplexOptionType5_Builder*) mergeFrom:(ComplexOptionType3_ComplexOptionType5*) other {
  if (other == [ComplexOptionType3_ComplexOptionType5 defaultInstance]) {
    return self;
  }
  if (other.hasPlugh) {
    [self setPlugh:other.plugh];
  }
  [self mergeUnknownFields:other.unknownFields];
  return self;
}
- (ComplexOptionType3_ComplexOptionType5_Builder*) mergeFromCodedInputStream:(PBCodedInputStream*) input {
  return [self mergeFromCodedInputStream:input extensionRegistry:[PBExtensionRegistry emptyRegistry]];
}
- (ComplexOptionType3_ComplexOptionType5_Builder*) mergeFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry {
  PBUnknownFieldSet_Builder* unknownFields = [PBUnknownFieldSet builderWithUnknownFields:self.unknownFields];
  while (YES) {
    int32_t tag = [input readTag];
    switch (tag) {
      case 0:
        [self setUnknownFields:[unknownFields build]];
        return self;
      default: {
        if (![self parseUnknownField:input unknownFields:unknownFields extensionRegistry:extensionRegistry tag:tag]) {
          [self setUnknownFields:[unknownFields build]];
          return self;
        }
        break;
      }
      case 24: {
        [self setPlugh:[input readInt32]];
        break;
      }
    }
  }
}
- (BOOL) hasPlugh {
  return result.hasPlugh;
}
- (int32_t) plugh {
  return result.plugh;
}
- (ComplexOptionType3_ComplexOptionType5_Builder*) setPlugh:(int32_t) value {
  result.hasPlugh = YES;
  result.plugh = value;
  return self;
}
- (ComplexOptionType3_ComplexOptionType5_Builder*) clearPlugh {
  result.hasPlugh = NO;
  result.plugh = 0;
  return self;
}
@end

@interface ComplexOptionType3_Builder()
@property (retain) ComplexOptionType3* result;
@end

@implementation ComplexOptionType3_Builder
@synthesize result;
- (void) dealloc {
  self.result = nil;
  [super dealloc];
}
- (id) init {
  if ((self = [super init])) {
    self.result = [[[ComplexOptionType3 alloc] init] autorelease];
  }
  return self;
}
- (PBGeneratedMessage*) internalGetResult {
  return result;
}
- (ComplexOptionType3_Builder*) clear {
  self.result = [[[ComplexOptionType3 alloc] init] autorelease];
  return self;
}
- (ComplexOptionType3_Builder*) clone {
  return [ComplexOptionType3 builderWithPrototype:result];
}
- (ComplexOptionType3*) defaultInstance {
  return [ComplexOptionType3 defaultInstance];
}
- (ComplexOptionType3*) build {
  [self checkInitialized];
  return [self buildPartial];
}
- (ComplexOptionType3*) buildPartial {
  ComplexOptionType3* returnMe = [[result retain] autorelease];
  self.result = nil;
  return returnMe;
}
- (ComplexOptionType3_Builder*) mergeFrom:(ComplexOptionType3*) other {
  if (other == [ComplexOptionType3 defaultInstance]) {
    return self;
  }
  if (other.hasQux) {
    [self setQux:other.qux];
  }
  if (other.hasComplexOptionType5) {
    [self mergeComplexOptionType5:other.complexOptionType5];
  }
  [self mergeUnknownFields:other.unknownFields];
  return self;
}
- (ComplexOptionType3_Builder*) mergeFromCodedInputStream:(PBCodedInputStream*) input {
  return [self mergeFromCodedInputStream:input extensionRegistry:[PBExtensionRegistry emptyRegistry]];
}
- (ComplexOptionType3_Builder*) mergeFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry {
  PBUnknownFieldSet_Builder* unknownFields = [PBUnknownFieldSet builderWithUnknownFields:self.unknownFields];
  while (YES) {
    int32_t tag = [input readTag];
    switch (tag) {
      case 0:
        [self setUnknownFields:[unknownFields build]];
        return self;
      default: {
        if (![self parseUnknownField:input unknownFields:unknownFields extensionRegistry:extensionRegistry tag:tag]) {
          [self setUnknownFields:[unknownFields build]];
          return self;
        }
        break;
      }
      case 8: {
        [self setQux:[input readInt32]];
        break;
      }
      case 19: {
        ComplexOptionType3_ComplexOptionType5_Builder* subBuilder = [ComplexOptionType3_ComplexOptionType5 builder];
        if (self.hasComplexOptionType5) {
          [subBuilder mergeFrom:self.complexOptionType5];
        }
        [input readGroup:2 builder:subBuilder extensionRegistry:extensionRegistry];
        [self setComplexOptionType5:[subBuilder buildPartial]];
        break;
      }
    }
  }
}
- (BOOL) hasQux {
  return result.hasQux;
}
- (int32_t) qux {
  return result.qux;
}
- (ComplexOptionType3_Builder*) setQux:(int32_t) value {
  result.hasQux = YES;
  result.qux = value;
  return self;
}
- (ComplexOptionType3_Builder*) clearQux {
  result.hasQux = NO;
  result.qux = 0;
  return self;
}
- (BOOL) hasComplexOptionType5 {
  return result.hasComplexOptionType5;
}
- (ComplexOptionType3_ComplexOptionType5*) complexOptionType5 {
  return result.complexOptionType5;
}
- (ComplexOptionType3_Builder*) setComplexOptionType5:(ComplexOptionType3_ComplexOptionType5*) value {
  result.hasComplexOptionType5 = YES;
  result.complexOptionType5 = value;
  return self;
}
- (ComplexOptionType3_Builder*) setComplexOptionType5Builder:(ComplexOptionType3_ComplexOptionType5_Builder*) builderForValue {
  return [self setComplexOptionType5:[builderForValue build]];
}
- (ComplexOptionType3_Builder*) mergeComplexOptionType5:(ComplexOptionType3_ComplexOptionType5*) value {
  if (result.hasComplexOptionType5 &&
      result.complexOptionType5 != [ComplexOptionType3_ComplexOptionType5 defaultInstance]) {
    result.complexOptionType5 =
      [[[ComplexOptionType3_ComplexOptionType5 builderWithPrototype:result.complexOptionType5] mergeFrom:value] buildPartial];
  } else {
    result.complexOptionType5 = value;
  }
  result.hasComplexOptionType5 = YES;
  return self;
}
- (ComplexOptionType3_Builder*) clearComplexOptionType5 {
  result.hasComplexOptionType5 = NO;
  result.complexOptionType5 = [ComplexOptionType3_ComplexOptionType5 defaultInstance];
  return self;
}
@end

@interface ComplexOpt6 ()
@property int32_t xyzzy;
@end

@implementation ComplexOpt6

- (BOOL) hasXyzzy {
  return !!hasXyzzy_;
}
- (void) setHasXyzzy:(BOOL) value {
  hasXyzzy_ = !!value;
}
@synthesize xyzzy;
- (void) dealloc {
  [super dealloc];
}
- (id) init {
  if ((self = [super init])) {
    self.xyzzy = 0;
  }
  return self;
}
static ComplexOpt6* defaultComplexOpt6Instance = nil;
+ (void) initialize {
  if (self == [ComplexOpt6 class]) {
    defaultComplexOpt6Instance = [[ComplexOpt6 alloc] init];
  }
}
+ (ComplexOpt6*) defaultInstance {
  return defaultComplexOpt6Instance;
}
- (ComplexOpt6*) defaultInstance {
  return defaultComplexOpt6Instance;
}
- (BOOL) isInitialized {
  return YES;
}
- (void) writeToCodedOutputStream:(PBCodedOutputStream*) output {
  if (self.hasXyzzy) {
    [output writeInt32:7593951 value:self.xyzzy];
  }
  [self.unknownFields writeToCodedOutputStream:output];
}
- (int32_t) serializedSize {
  int32_t size = memoizedSerializedSize;
  if (size != -1) {
    return size;
  }

  size = 0;
  if (self.hasXyzzy) {
    size += computeInt32Size(7593951, self.xyzzy);
  }
  size += self.unknownFields.serializedSize;
  memoizedSerializedSize = size;
  return size;
}
+ (ComplexOpt6*) parseFromData:(NSData*) data {
  return (ComplexOpt6*)[[[ComplexOpt6 builder] mergeFromData:data] build];
}
+ (ComplexOpt6*) parseFromData:(NSData*) data extensionRegistry:(PBExtensionRegistry*) extensionRegistry {
  return (ComplexOpt6*)[[[ComplexOpt6 builder] mergeFromData:data extensionRegistry:extensionRegistry] build];
}
+ (ComplexOpt6*) parseFromInputStream:(NSInputStream*) input {
  return (ComplexOpt6*)[[[ComplexOpt6 builder] mergeFromInputStream:input] build];
}
+ (ComplexOpt6*) parseFromInputStream:(NSInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry {
  return (ComplexOpt6*)[[[ComplexOpt6 builder] mergeFromInputStream:input extensionRegistry:extensionRegistry] build];
}
+ (ComplexOpt6*) parseFromCodedInputStream:(PBCodedInputStream*) input {
  return (ComplexOpt6*)[[[ComplexOpt6 builder] mergeFromCodedInputStream:input] build];
}
+ (ComplexOpt6*) parseFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry {
  return (ComplexOpt6*)[[[ComplexOpt6 builder] mergeFromCodedInputStream:input extensionRegistry:extensionRegistry] build];
}
+ (ComplexOpt6_Builder*) builder {
  return [[[ComplexOpt6_Builder alloc] init] autorelease];
}
+ (ComplexOpt6_Builder*) builderWithPrototype:(ComplexOpt6*) prototype {
  return [[ComplexOpt6 builder] mergeFrom:prototype];
}
- (ComplexOpt6_Builder*) builder {
  return [ComplexOpt6 builder];
}
- (ComplexOpt6_Builder*) toBuilder {
  return [ComplexOpt6 builderWithPrototype:self];
}
- (void) writeDescriptionTo:(NSMutableString*) output withIndent:(NSString*) indent {
  if (self.hasXyzzy) {
    [output appendFormat:@"%@%@: %@\n", indent, @"xyzzy", [NSNumber numberWithInt:self.xyzzy]];
  }
  [self.unknownFields writeDescriptionTo:output withIndent:indent];
}
- (BOOL) isEqual:(id)other {
  if (other == self) {
    return YES;
  }
  if (![other isKindOfClass:[ComplexOpt6 class]]) {
    return NO;
  }
  ComplexOpt6 *otherMessage = other;
  return
      self.hasXyzzy == otherMessage.hasXyzzy &&
      (!self.hasXyzzy || self.xyzzy == otherMessage.xyzzy) &&
      
      (self.unknownFields == otherMessage.unknownFields || (self.unknownFields != nil && [self.unknownFields isEqual:otherMessage.unknownFields]));
}
- (NSUInteger) hash {
  NSUInteger hashCode = 7;
  if (self.hasXyzzy) {
    hashCode = hashCode * 31 + [[NSNumber numberWithInt:self.xyzzy] hash];
  }
  hashCode = hashCode * 31 + [self.unknownFields hash];
  return hashCode;
}
@end

@interface ComplexOpt6_Builder()
@property (retain) ComplexOpt6* result;
@end

@implementation ComplexOpt6_Builder
@synthesize result;
- (void) dealloc {
  self.result = nil;
  [super dealloc];
}
- (id) init {
  if ((self = [super init])) {
    self.result = [[[ComplexOpt6 alloc] init] autorelease];
  }
  return self;
}
- (PBGeneratedMessage*) internalGetResult {
  return result;
}
- (ComplexOpt6_Builder*) clear {
  self.result = [[[ComplexOpt6 alloc] init] autorelease];
  return self;
}
- (ComplexOpt6_Builder*) clone {
  return [ComplexOpt6 builderWithPrototype:result];
}
- (ComplexOpt6*) defaultInstance {
  return [ComplexOpt6 defaultInstance];
}
- (ComplexOpt6*) build {
  [self checkInitialized];
  return [self buildPartial];
}
- (ComplexOpt6*) buildPartial {
  ComplexOpt6* returnMe = [[result retain] autorelease];
  self.result = nil;
  return returnMe;
}
- (ComplexOpt6_Builder*) mergeFrom:(ComplexOpt6*) other {
  if (other == [ComplexOpt6 defaultInstance]) {
    return self;
  }
  if (other.hasXyzzy) {
    [self setXyzzy:other.xyzzy];
  }
  [self mergeUnknownFields:other.unknownFields];
  return self;
}
- (ComplexOpt6_Builder*) mergeFromCodedInputStream:(PBCodedInputStream*) input {
  return [self mergeFromCodedInputStream:input extensionRegistry:[PBExtensionRegistry emptyRegistry]];
}
- (ComplexOpt6_Builder*) mergeFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry {
  PBUnknownFieldSet_Builder* unknownFields = [PBUnknownFieldSet builderWithUnknownFields:self.unknownFields];
  while (YES) {
    int32_t tag = [input readTag];
    switch (tag) {
      case 0:
        [self setUnknownFields:[unknownFields build]];
        return self;
      default: {
        if (![self parseUnknownField:input unknownFields:unknownFields extensionRegistry:extensionRegistry tag:tag]) {
          [self setUnknownFields:[unknownFields build]];
          return self;
        }
        break;
      }
      case 60751608: {
        [self setXyzzy:[input readInt32]];
        break;
      }
    }
  }
}
- (BOOL) hasXyzzy {
  return result.hasXyzzy;
}
- (int32_t) xyzzy {
  return result.xyzzy;
}
- (ComplexOpt6_Builder*) setXyzzy:(int32_t) value {
  result.hasXyzzy = YES;
  result.xyzzy = value;
  return self;
}
- (ComplexOpt6_Builder*) clearXyzzy {
  result.hasXyzzy = NO;
  result.xyzzy = 0;
  return self;
}
@end

@interface VariousComplexOptions ()
@end

@implementation VariousComplexOptions

- (void) dealloc {
  [super dealloc];
}
- (id) init {
  if ((self = [super init])) {
  }
  return self;
}
static VariousComplexOptions* defaultVariousComplexOptionsInstance = nil;
+ (void) initialize {
  if (self == [VariousComplexOptions class]) {
    defaultVariousComplexOptionsInstance = [[VariousComplexOptions alloc] init];
  }
}
+ (VariousComplexOptions*) defaultInstance {
  return defaultVariousComplexOptionsInstance;
}
- (VariousComplexOptions*) defaultInstance {
  return defaultVariousComplexOptionsInstance;
}
- (BOOL) isInitialized {
  return YES;
}
- (void) writeToCodedOutputStream:(PBCodedOutputStream*) output {
  [self.unknownFields writeToCodedOutputStream:output];
}
- (int32_t) serializedSize {
  int32_t size = memoizedSerializedSize;
  if (size != -1) {
    return size;
  }

  size = 0;
  size += self.unknownFields.serializedSize;
  memoizedSerializedSize = size;
  return size;
}
+ (VariousComplexOptions*) parseFromData:(NSData*) data {
  return (VariousComplexOptions*)[[[VariousComplexOptions builder] mergeFromData:data] build];
}
+ (VariousComplexOptions*) parseFromData:(NSData*) data extensionRegistry:(PBExtensionRegistry*) extensionRegistry {
  return (VariousComplexOptions*)[[[VariousComplexOptions builder] mergeFromData:data extensionRegistry:extensionRegistry] build];
}
+ (VariousComplexOptions*) parseFromInputStream:(NSInputStream*) input {
  return (VariousComplexOptions*)[[[VariousComplexOptions builder] mergeFromInputStream:input] build];
}
+ (VariousComplexOptions*) parseFromInputStream:(NSInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry {
  return (VariousComplexOptions*)[[[VariousComplexOptions builder] mergeFromInputStream:input extensionRegistry:extensionRegistry] build];
}
+ (VariousComplexOptions*) parseFromCodedInputStream:(PBCodedInputStream*) input {
  return (VariousComplexOptions*)[[[VariousComplexOptions builder] mergeFromCodedInputStream:input] build];
}
+ (VariousComplexOptions*) parseFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry {
  return (VariousComplexOptions*)[[[VariousComplexOptions builder] mergeFromCodedInputStream:input extensionRegistry:extensionRegistry] build];
}
+ (VariousComplexOptions_Builder*) builder {
  return [[[VariousComplexOptions_Builder alloc] init] autorelease];
}
+ (VariousComplexOptions_Builder*) builderWithPrototype:(VariousComplexOptions*) prototype {
  return [[VariousComplexOptions builder] mergeFrom:prototype];
}
- (VariousComplexOptions_Builder*) builder {
  return [VariousComplexOptions builder];
}
- (VariousComplexOptions_Builder*) toBuilder {
  return [VariousComplexOptions builderWithPrototype:self];
}
- (void) writeDescriptionTo:(NSMutableString*) output withIndent:(NSString*) indent {
  [self.unknownFields writeDescriptionTo:output withIndent:indent];
}
- (BOOL) isEqual:(id)other {
  if (other == self) {
    return YES;
  }
  if (![other isKindOfClass:[VariousComplexOptions class]]) {
    return NO;
  }
  VariousComplexOptions *otherMessage = other;
  return
      (self.unknownFields == otherMessage.unknownFields || (self.unknownFields != nil && [self.unknownFields isEqual:otherMessage.unknownFields]));
}
- (NSUInteger) hash {
  NSUInteger hashCode = 7;
  hashCode = hashCode * 31 + [self.unknownFields hash];
  return hashCode;
}
@end

@interface VariousComplexOptions_Builder()
@property (retain) VariousComplexOptions* result;
@end

@implementation VariousComplexOptions_Builder
@synthesize result;
- (void) dealloc {
  self.result = nil;
  [super dealloc];
}
- (id) init {
  if ((self = [super init])) {
    self.result = [[[VariousComplexOptions alloc] init] autorelease];
  }
  return self;
}
- (PBGeneratedMessage*) internalGetResult {
  return result;
}
- (VariousComplexOptions_Builder*) clear {
  self.result = [[[VariousComplexOptions alloc] init] autorelease];
  return self;
}
- (VariousComplexOptions_Builder*) clone {
  return [VariousComplexOptions builderWithPrototype:result];
}
- (VariousComplexOptions*) defaultInstance {
  return [VariousComplexOptions defaultInstance];
}
- (VariousComplexOptions*) build {
  [self checkInitialized];
  return [self buildPartial];
}
- (VariousComplexOptions*) buildPartial {
  VariousComplexOptions* returnMe = [[result retain] autorelease];
  self.result = nil;
  return returnMe;
}
- (VariousComplexOptions_Builder*) mergeFrom:(VariousComplexOptions*) other {
  if (other == [VariousComplexOptions defaultInstance]) {
    return self;
  }
  [self mergeUnknownFields:other.unknownFields];
  return self;
}
- (VariousComplexOptions_Builder*) mergeFromCodedInputStream:(PBCodedInputStream*) input {
  return [self mergeFromCodedInputStream:input extensionRegistry:[PBExtensionRegistry emptyRegistry]];
}
- (VariousComplexOptions_Builder*) mergeFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry {
  PBUnknownFieldSet_Builder* unknownFields = [PBUnknownFieldSet builderWithUnknownFields:self.unknownFields];
  while (YES) {
    int32_t tag = [input readTag];
    switch (tag) {
      case 0:
        [self setUnknownFields:[unknownFields build]];
        return self;
      default: {
        if (![self parseUnknownField:input unknownFields:unknownFields extensionRegistry:extensionRegistry tag:tag]) {
          [self setUnknownFields:[unknownFields build]];
          return self;
        }
        break;
      }
    }
  }
}
@end

@interface AggregateMessageSet ()
@end

@implementation AggregateMessageSet

- (void) dealloc {
  [super dealloc];
}
- (id) init {
  if ((self = [super init])) {
  }
  return self;
}
static AggregateMessageSet* defaultAggregateMessageSetInstance = nil;
+ (void) initialize {
  if (self == [AggregateMessageSet class]) {
    defaultAggregateMessageSetInstance = [[AggregateMessageSet alloc] init];
  }
}
+ (AggregateMessageSet*) defaultInstance {
  return defaultAggregateMessageSetInstance;
}
- (AggregateMessageSet*) defaultInstance {
  return defaultAggregateMessageSetInstance;
}
- (BOOL) isInitialized {
  if (!self.extensionsAreInitialized) {
    return NO;
  }
  return YES;
}
- (void) writeToCodedOutputStream:(PBCodedOutputStream*) output {
  [self writeExtensionsToCodedOutputStream:output
                                      from:4
                                        to:536870912];
  [self.unknownFields writeAsMessageSetTo:output];
}
- (int32_t) serializedSize {
  int32_t size = memoizedSerializedSize;
  if (size != -1) {
    return size;
  }

  size = 0;
  size += [self extensionsSerializedSize];
  size += self.unknownFields.serializedSizeAsMessageSet;
  memoizedSerializedSize = size;
  return size;
}
+ (AggregateMessageSet*) parseFromData:(NSData*) data {
  return (AggregateMessageSet*)[[[AggregateMessageSet builder] mergeFromData:data] build];
}
+ (AggregateMessageSet*) parseFromData:(NSData*) data extensionRegistry:(PBExtensionRegistry*) extensionRegistry {
  return (AggregateMessageSet*)[[[AggregateMessageSet builder] mergeFromData:data extensionRegistry:extensionRegistry] build];
}
+ (AggregateMessageSet*) parseFromInputStream:(NSInputStream*) input {
  return (AggregateMessageSet*)[[[AggregateMessageSet builder] mergeFromInputStream:input] build];
}
+ (AggregateMessageSet*) parseFromInputStream:(NSInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry {
  return (AggregateMessageSet*)[[[AggregateMessageSet builder] mergeFromInputStream:input extensionRegistry:extensionRegistry] build];
}
+ (AggregateMessageSet*) parseFromCodedInputStream:(PBCodedInputStream*) input {
  return (AggregateMessageSet*)[[[AggregateMessageSet builder] mergeFromCodedInputStream:input] build];
}
+ (AggregateMessageSet*) parseFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry {
  return (AggregateMessageSet*)[[[AggregateMessageSet builder] mergeFromCodedInputStream:input extensionRegistry:extensionRegistry] build];
}
+ (AggregateMessageSet_Builder*) builder {
  return [[[AggregateMessageSet_Builder alloc] init] autorelease];
}
+ (AggregateMessageSet_Builder*) builderWithPrototype:(AggregateMessageSet*) prototype {
  return [[AggregateMessageSet builder] mergeFrom:prototype];
}
- (AggregateMessageSet_Builder*) builder {
  return [AggregateMessageSet builder];
}
- (AggregateMessageSet_Builder*) toBuilder {
  return [AggregateMessageSet builderWithPrototype:self];
}
- (void) writeDescriptionTo:(NSMutableString*) output withIndent:(NSString*) indent {
  [self writeExtensionDescriptionToMutableString:(NSMutableString*)output
                                            from:4
                                              to:536870912
                                      withIndent:indent];
  [self.unknownFields writeDescriptionTo:output withIndent:indent];
}
- (BOOL) isEqual:(id)other {
  if (other == self) {
    return YES;
  }
  if (![other isKindOfClass:[AggregateMessageSet class]]) {
    return NO;
  }
  AggregateMessageSet *otherMessage = other;
  return
      [self isEqualExtensionsInOther:otherMessage from:4 to:536870912] &&
      
      (self.unknownFields == otherMessage.unknownFields || (self.unknownFields != nil && [self.unknownFields isEqual:otherMessage.unknownFields]));
}
- (NSUInteger) hash {
  NSUInteger hashCode = 7;
  hashCode = hashCode * 31 + [self hashExtensionsFrom:4 to:536870912];
  hashCode = hashCode * 31 + [self.unknownFields hash];
  return hashCode;
}
@end

@interface AggregateMessageSet_Builder()
@property (retain) AggregateMessageSet* result;
@end

@implementation AggregateMessageSet_Builder
@synthesize result;
- (void) dealloc {
  self.result = nil;
  [super dealloc];
}
- (id) init {
  if ((self = [super init])) {
    self.result = [[[AggregateMessageSet alloc] init] autorelease];
  }
  return self;
}
- (PBExtendableMessage*) internalGetResult {
  return result;
}
- (AggregateMessageSet_Builder*) clear {
  self.result = [[[AggregateMessageSet alloc] init] autorelease];
  return self;
}
- (AggregateMessageSet_Builder*) clone {
  return [AggregateMessageSet builderWithPrototype:result];
}
- (AggregateMessageSet*) defaultInstance {
  return [AggregateMessageSet defaultInstance];
}
- (AggregateMessageSet*) build {
  [self checkInitialized];
  return [self buildPartial];
}
- (AggregateMessageSet*) buildPartial {
  AggregateMessageSet* returnMe = [[result retain] autorelease];
  self.result = nil;
  return returnMe;
}
- (AggregateMessageSet_Builder*) mergeFrom:(AggregateMessageSet*) other {
  if (other == [AggregateMessageSet defaultInstance]) {
    return self;
  }
  [self mergeExtensionFields:other];
  [self mergeUnknownFields:other.unknownFields];
  return self;
}
- (AggregateMessageSet_Builder*) mergeFromCodedInputStream:(PBCodedInputStream*) input {
  return [self mergeFromCodedInputStream:input extensionRegistry:[PBExtensionRegistry emptyRegistry]];
}
- (AggregateMessageSet_Builder*) mergeFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry {
  PBUnknownFieldSet_Builder* unknownFields = [PBUnknownFieldSet builderWithUnknownFields:self.unknownFields];
  while (YES) {
    int32_t tag = [input readTag];
    switch (tag) {
      case 0:
        [self setUnknownFields:[unknownFields build]];
        return self;
      default: {
        if (![self parseUnknownField:input unknownFields:unknownFields extensionRegistry:extensionRegistry tag:tag]) {
          [self setUnknownFields:[unknownFields build]];
          return self;
        }
        break;
      }
    }
  }
}
@end

@interface AggregateMessageSetElement ()
@property (retain) NSString* s;
@end

@implementation AggregateMessageSetElement

- (BOOL) hasS {
  return !!hasS_;
}
- (void) setHasS:(BOOL) value {
  hasS_ = !!value;
}
@synthesize s;
- (void) dealloc {
  self.s = nil;
  [super dealloc];
}
- (id) init {
  if ((self = [super init])) {
    self.s = @"";
  }
  return self;
}
+ (id<PBExtensionField>) messageSetExtension {
  return AggregateMessageSetElement_messageSetExtension;
}
static AggregateMessageSetElement* defaultAggregateMessageSetElementInstance = nil;
+ (void) initialize {
  if (self == [AggregateMessageSetElement class]) {
    defaultAggregateMessageSetElementInstance = [[AggregateMessageSetElement alloc] init];
  }
}
+ (AggregateMessageSetElement*) defaultInstance {
  return defaultAggregateMessageSetElementInstance;
}
- (AggregateMessageSetElement*) defaultInstance {
  return defaultAggregateMessageSetElementInstance;
}
- (BOOL) isInitialized {
  return YES;
}
- (void) writeToCodedOutputStream:(PBCodedOutputStream*) output {
  if (self.hasS) {
    [output writeString:1 value:self.s];
  }
  [self.unknownFields writeToCodedOutputStream:output];
}
- (int32_t) serializedSize {
  int32_t size = memoizedSerializedSize;
  if (size != -1) {
    return size;
  }

  size = 0;
  if (self.hasS) {
    size += computeStringSize(1, self.s);
  }
  size += self.unknownFields.serializedSize;
  memoizedSerializedSize = size;
  return size;
}
+ (AggregateMessageSetElement*) parseFromData:(NSData*) data {
  return (AggregateMessageSetElement*)[[[AggregateMessageSetElement builder] mergeFromData:data] build];
}
+ (AggregateMessageSetElement*) parseFromData:(NSData*) data extensionRegistry:(PBExtensionRegistry*) extensionRegistry {
  return (AggregateMessageSetElement*)[[[AggregateMessageSetElement builder] mergeFromData:data extensionRegistry:extensionRegistry] build];
}
+ (AggregateMessageSetElement*) parseFromInputStream:(NSInputStream*) input {
  return (AggregateMessageSetElement*)[[[AggregateMessageSetElement builder] mergeFromInputStream:input] build];
}
+ (AggregateMessageSetElement*) parseFromInputStream:(NSInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry {
  return (AggregateMessageSetElement*)[[[AggregateMessageSetElement builder] mergeFromInputStream:input extensionRegistry:extensionRegistry] build];
}
+ (AggregateMessageSetElement*) parseFromCodedInputStream:(PBCodedInputStream*) input {
  return (AggregateMessageSetElement*)[[[AggregateMessageSetElement builder] mergeFromCodedInputStream:input] build];
}
+ (AggregateMessageSetElement*) parseFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry {
  return (AggregateMessageSetElement*)[[[AggregateMessageSetElement builder] mergeFromCodedInputStream:input extensionRegistry:extensionRegistry] build];
}
+ (AggregateMessageSetElement_Builder*) builder {
  return [[[AggregateMessageSetElement_Builder alloc] init] autorelease];
}
+ (AggregateMessageSetElement_Builder*) builderWithPrototype:(AggregateMessageSetElement*) prototype {
  return [[AggregateMessageSetElement builder] mergeFrom:prototype];
}
- (AggregateMessageSetElement_Builder*) builder {
  return [AggregateMessageSetElement builder];
}
- (AggregateMessageSetElement_Builder*) toBuilder {
  return [AggregateMessageSetElement builderWithPrototype:self];
}
- (void) writeDescriptionTo:(NSMutableString*) output withIndent:(NSString*) indent {
  if (self.hasS) {
    [output appendFormat:@"%@%@: %@\n", indent, @"s", self.s];
  }
  [self.unknownFields writeDescriptionTo:output withIndent:indent];
}
- (BOOL) isEqual:(id)other {
  if (other == self) {
    return YES;
  }
  if (![other isKindOfClass:[AggregateMessageSetElement class]]) {
    return NO;
  }
  AggregateMessageSetElement *otherMessage = other;
  return
      self.hasS == otherMessage.hasS &&
      (!self.hasS || [self.s isEqual:otherMessage.s]) &&
      
      (self.unknownFields == otherMessage.unknownFields || (self.unknownFields != nil && [self.unknownFields isEqual:otherMessage.unknownFields]));
}
- (NSUInteger) hash {
  NSUInteger hashCode = 7;
  if (self.hasS) {
    hashCode = hashCode * 31 + [self.s hash];
  }
  hashCode = hashCode * 31 + [self.unknownFields hash];
  return hashCode;
}
@end

@interface AggregateMessageSetElement_Builder()
@property (retain) AggregateMessageSetElement* result;
@end

@implementation AggregateMessageSetElement_Builder
@synthesize result;
- (void) dealloc {
  self.result = nil;
  [super dealloc];
}
- (id) init {
  if ((self = [super init])) {
    self.result = [[[AggregateMessageSetElement alloc] init] autorelease];
  }
  return self;
}
- (PBGeneratedMessage*) internalGetResult {
  return result;
}
- (AggregateMessageSetElement_Builder*) clear {
  self.result = [[[AggregateMessageSetElement alloc] init] autorelease];
  return self;
}
- (AggregateMessageSetElement_Builder*) clone {
  return [AggregateMessageSetElement builderWithPrototype:result];
}
- (AggregateMessageSetElement*) defaultInstance {
  return [AggregateMessageSetElement defaultInstance];
}
- (AggregateMessageSetElement*) build {
  [self checkInitialized];
  return [self buildPartial];
}
- (AggregateMessageSetElement*) buildPartial {
  AggregateMessageSetElement* returnMe = [[result retain] autorelease];
  self.result = nil;
  return returnMe;
}
- (AggregateMessageSetElement_Builder*) mergeFrom:(AggregateMessageSetElement*) other {
  if (other == [AggregateMessageSetElement defaultInstance]) {
    return self;
  }
  if (other.hasS) {
    [self setS:other.s];
  }
  [self mergeUnknownFields:other.unknownFields];
  return self;
}
- (AggregateMessageSetElement_Builder*) mergeFromCodedInputStream:(PBCodedInputStream*) input {
  return [self mergeFromCodedInputStream:input extensionRegistry:[PBExtensionRegistry emptyRegistry]];
}
- (AggregateMessageSetElement_Builder*) mergeFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry {
  PBUnknownFieldSet_Builder* unknownFields = [PBUnknownFieldSet builderWithUnknownFields:self.unknownFields];
  while (YES) {
    int32_t tag = [input readTag];
    switch (tag) {
      case 0:
        [self setUnknownFields:[unknownFields build]];
        return self;
      default: {
        if (![self parseUnknownField:input unknownFields:unknownFields extensionRegistry:extensionRegistry tag:tag]) {
          [self setUnknownFields:[unknownFields build]];
          return self;
        }
        break;
      }
      case 10: {
        [self setS:[input readString]];
        break;
      }
    }
  }
}
- (BOOL) hasS {
  return result.hasS;
}
- (NSString*) s {
  return result.s;
}
- (AggregateMessageSetElement_Builder*) setS:(NSString*) value {
  result.hasS = YES;
  result.s = value;
  return self;
}
- (AggregateMessageSetElement_Builder*) clearS {
  result.hasS = NO;
  result.s = @"";
  return self;
}
@end

@interface Aggregate ()
@property int32_t i;
@property (retain) NSString* s;
@property (retain) Aggregate* sub;
@property (retain) PBFileOptions* file;
@property (retain) AggregateMessageSet* mset;
@end

@implementation Aggregate

- (BOOL) hasI {
  return !!hasI_;
}
- (void) setHasI:(BOOL) value {
  hasI_ = !!value;
}
@synthesize i;
- (BOOL) hasS {
  return !!hasS_;
}
- (void) setHasS:(BOOL) value {
  hasS_ = !!value;
}
@synthesize s;
- (BOOL) hasSub {
  return !!hasSub_;
}
- (void) setHasSub:(BOOL) value {
  hasSub_ = !!value;
}
@synthesize sub;
- (BOOL) hasFile {
  return !!hasFile_;
}
- (void) setHasFile:(BOOL) value {
  hasFile_ = !!value;
}
@synthesize file;
- (BOOL) hasMset {
  return !!hasMset_;
}
- (void) setHasMset:(BOOL) value {
  hasMset_ = !!value;
}
@synthesize mset;
- (void) dealloc {
  self.s = nil;
  self.sub = nil;
  self.file = nil;
  self.mset = nil;
  [super dealloc];
}
- (id) init {
  if ((self = [super init])) {
    self.i = 0;
    self.s = @"";
    self.sub = [Aggregate defaultInstance];
    self.file = [PBFileOptions defaultInstance];
    self.mset = [AggregateMessageSet defaultInstance];
  }
  return self;
}
+ (id<PBExtensionField>) nested {
  return Aggregate_nested;
}
static Aggregate* defaultAggregateInstance = nil;
+ (void) initialize {
  if (self == [Aggregate class]) {
    defaultAggregateInstance = [[Aggregate alloc] init];
  }
}
+ (Aggregate*) defaultInstance {
  return defaultAggregateInstance;
}
- (Aggregate*) defaultInstance {
  return defaultAggregateInstance;
}
- (BOOL) isInitialized {
  if (self.hasSub) {
    if (!self.sub.isInitialized) {
      return NO;
    }
  }
  if (self.hasFile) {
    if (!self.file.isInitialized) {
      return NO;
    }
  }
  if (self.hasMset) {
    if (!self.mset.isInitialized) {
      return NO;
    }
  }
  return YES;
}
- (void) writeToCodedOutputStream:(PBCodedOutputStream*) output {
  if (self.hasI) {
    [output writeInt32:1 value:self.i];
  }
  if (self.hasS) {
    [output writeString:2 value:self.s];
  }
  if (self.hasSub) {
    [output writeMessage:3 value:self.sub];
  }
  if (self.hasFile) {
    [output writeMessage:4 value:self.file];
  }
  if (self.hasMset) {
    [output writeMessage:5 value:self.mset];
  }
  [self.unknownFields writeToCodedOutputStream:output];
}
- (int32_t) serializedSize {
  int32_t size = memoizedSerializedSize;
  if (size != -1) {
    return size;
  }

  size = 0;
  if (self.hasI) {
    size += computeInt32Size(1, self.i);
  }
  if (self.hasS) {
    size += computeStringSize(2, self.s);
  }
  if (self.hasSub) {
    size += computeMessageSize(3, self.sub);
  }
  if (self.hasFile) {
    size += computeMessageSize(4, self.file);
  }
  if (self.hasMset) {
    size += computeMessageSize(5, self.mset);
  }
  size += self.unknownFields.serializedSize;
  memoizedSerializedSize = size;
  return size;
}
+ (Aggregate*) parseFromData:(NSData*) data {
  return (Aggregate*)[[[Aggregate builder] mergeFromData:data] build];
}
+ (Aggregate*) parseFromData:(NSData*) data extensionRegistry:(PBExtensionRegistry*) extensionRegistry {
  return (Aggregate*)[[[Aggregate builder] mergeFromData:data extensionRegistry:extensionRegistry] build];
}
+ (Aggregate*) parseFromInputStream:(NSInputStream*) input {
  return (Aggregate*)[[[Aggregate builder] mergeFromInputStream:input] build];
}
+ (Aggregate*) parseFromInputStream:(NSInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry {
  return (Aggregate*)[[[Aggregate builder] mergeFromInputStream:input extensionRegistry:extensionRegistry] build];
}
+ (Aggregate*) parseFromCodedInputStream:(PBCodedInputStream*) input {
  return (Aggregate*)[[[Aggregate builder] mergeFromCodedInputStream:input] build];
}
+ (Aggregate*) parseFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry {
  return (Aggregate*)[[[Aggregate builder] mergeFromCodedInputStream:input extensionRegistry:extensionRegistry] build];
}
+ (Aggregate_Builder*) builder {
  return [[[Aggregate_Builder alloc] init] autorelease];
}
+ (Aggregate_Builder*) builderWithPrototype:(Aggregate*) prototype {
  return [[Aggregate builder] mergeFrom:prototype];
}
- (Aggregate_Builder*) builder {
  return [Aggregate builder];
}
- (Aggregate_Builder*) toBuilder {
  return [Aggregate builderWithPrototype:self];
}
- (void) writeDescriptionTo:(NSMutableString*) output withIndent:(NSString*) indent {
  if (self.hasI) {
    [output appendFormat:@"%@%@: %@\n", indent, @"i", [NSNumber numberWithInt:self.i]];
  }
  if (self.hasS) {
    [output appendFormat:@"%@%@: %@\n", indent, @"s", self.s];
  }
  if (self.hasSub) {
    [output appendFormat:@"%@%@ {\n", indent, @"sub"];
    [self.sub writeDescriptionTo:output
                         withIndent:[NSString stringWithFormat:@"%@  ", indent]];
    [output appendFormat:@"%@}\n", indent];
  }
  if (self.hasFile) {
    [output appendFormat:@"%@%@ {\n", indent, @"file"];
    [self.file writeDescriptionTo:output
                         withIndent:[NSString stringWithFormat:@"%@  ", indent]];
    [output appendFormat:@"%@}\n", indent];
  }
  if (self.hasMset) {
    [output appendFormat:@"%@%@ {\n", indent, @"mset"];
    [self.mset writeDescriptionTo:output
                         withIndent:[NSString stringWithFormat:@"%@  ", indent]];
    [output appendFormat:@"%@}\n", indent];
  }
  [self.unknownFields writeDescriptionTo:output withIndent:indent];
}
- (BOOL) isEqual:(id)other {
  if (other == self) {
    return YES;
  }
  if (![other isKindOfClass:[Aggregate class]]) {
    return NO;
  }
  Aggregate *otherMessage = other;
  return
      self.hasI == otherMessage.hasI &&
      (!self.hasI || self.i == otherMessage.i) &&
      
      self.hasS == otherMessage.hasS &&
      (!self.hasS || [self.s isEqual:otherMessage.s]) &&
      
      self.hasSub == otherMessage.hasSub &&
      (!self.hasSub || [self.sub isEqual:otherMessage.sub]) &&
      
      self.hasFile == otherMessage.hasFile &&
      (!self.hasFile || [self.file isEqual:otherMessage.file]) &&
      
      self.hasMset == otherMessage.hasMset &&
      (!self.hasMset || [self.mset isEqual:otherMessage.mset]) &&
      
      (self.unknownFields == otherMessage.unknownFields || (self.unknownFields != nil && [self.unknownFields isEqual:otherMessage.unknownFields]));
}
- (NSUInteger) hash {
  NSUInteger hashCode = 7;
  if (self.hasI) {
    hashCode = hashCode * 31 + [[NSNumber numberWithInt:self.i] hash];
  }
  if (self.hasS) {
    hashCode = hashCode * 31 + [self.s hash];
  }
  if (self.hasSub) {
    hashCode = hashCode * 31 + [self.sub hash];
  }
  if (self.hasFile) {
    hashCode = hashCode * 31 + [self.file hash];
  }
  if (self.hasMset) {
    hashCode = hashCode * 31 + [self.mset hash];
  }
  hashCode = hashCode * 31 + [self.unknownFields hash];
  return hashCode;
}
@end

@interface Aggregate_Builder()
@property (retain) Aggregate* result;
@end

@implementation Aggregate_Builder
@synthesize result;
- (void) dealloc {
  self.result = nil;
  [super dealloc];
}
- (id) init {
  if ((self = [super init])) {
    self.result = [[[Aggregate alloc] init] autorelease];
  }
  return self;
}
- (PBGeneratedMessage*) internalGetResult {
  return result;
}
- (Aggregate_Builder*) clear {
  self.result = [[[Aggregate alloc] init] autorelease];
  return self;
}
- (Aggregate_Builder*) clone {
  return [Aggregate builderWithPrototype:result];
}
- (Aggregate*) defaultInstance {
  return [Aggregate defaultInstance];
}
- (Aggregate*) build {
  [self checkInitialized];
  return [self buildPartial];
}
- (Aggregate*) buildPartial {
  Aggregate* returnMe = [[result retain] autorelease];
  self.result = nil;
  return returnMe;
}
- (Aggregate_Builder*) mergeFrom:(Aggregate*) other {
  if (other == [Aggregate defaultInstance]) {
    return self;
  }
  if (other.hasI) {
    [self setI:other.i];
  }
  if (other.hasS) {
    [self setS:other.s];
  }
  if (other.hasSub) {
    [self mergeSub:other.sub];
  }
  if (other.hasFile) {
    [self mergeFile:other.file];
  }
  if (other.hasMset) {
    [self mergeMset:other.mset];
  }
  [self mergeUnknownFields:other.unknownFields];
  return self;
}
- (Aggregate_Builder*) mergeFromCodedInputStream:(PBCodedInputStream*) input {
  return [self mergeFromCodedInputStream:input extensionRegistry:[PBExtensionRegistry emptyRegistry]];
}
- (Aggregate_Builder*) mergeFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry {
  PBUnknownFieldSet_Builder* unknownFields = [PBUnknownFieldSet builderWithUnknownFields:self.unknownFields];
  while (YES) {
    int32_t tag = [input readTag];
    switch (tag) {
      case 0:
        [self setUnknownFields:[unknownFields build]];
        return self;
      default: {
        if (![self parseUnknownField:input unknownFields:unknownFields extensionRegistry:extensionRegistry tag:tag]) {
          [self setUnknownFields:[unknownFields build]];
          return self;
        }
        break;
      }
      case 8: {
        [self setI:[input readInt32]];
        break;
      }
      case 18: {
        [self setS:[input readString]];
        break;
      }
      case 26: {
        Aggregate_Builder* subBuilder = [Aggregate builder];
        if (self.hasSub) {
          [subBuilder mergeFrom:self.sub];
        }
        [input readMessage:subBuilder extensionRegistry:extensionRegistry];
        [self setSub:[subBuilder buildPartial]];
        break;
      }
      case 34: {
        PBFileOptions_Builder* subBuilder = [PBFileOptions builder];
        if (self.hasFile) {
          [subBuilder mergeFrom:self.file];
        }
        [input readMessage:subBuilder extensionRegistry:extensionRegistry];
        [self setFile:[subBuilder buildPartial]];
        break;
      }
      case 42: {
        AggregateMessageSet_Builder* subBuilder = [AggregateMessageSet builder];
        if (self.hasMset) {
          [subBuilder mergeFrom:self.mset];
        }
        [input readMessage:subBuilder extensionRegistry:extensionRegistry];
        [self setMset:[subBuilder buildPartial]];
        break;
      }
    }
  }
}
- (BOOL) hasI {
  return result.hasI;
}
- (int32_t) i {
  return result.i;
}
- (Aggregate_Builder*) setI:(int32_t) value {
  result.hasI = YES;
  result.i = value;
  return self;
}
- (Aggregate_Builder*) clearI {
  result.hasI = NO;
  result.i = 0;
  return self;
}
- (BOOL) hasS {
  return result.hasS;
}
- (NSString*) s {
  return result.s;
}
- (Aggregate_Builder*) setS:(NSString*) value {
  result.hasS = YES;
  result.s = value;
  return self;
}
- (Aggregate_Builder*) clearS {
  result.hasS = NO;
  result.s = @"";
  return self;
}
- (BOOL) hasSub {
  return result.hasSub;
}
- (Aggregate*) sub {
  return result.sub;
}
- (Aggregate_Builder*) setSub:(Aggregate*) value {
  result.hasSub = YES;
  result.sub = value;
  return self;
}
- (Aggregate_Builder*) setSubBuilder:(Aggregate_Builder*) builderForValue {
  return [self setSub:[builderForValue build]];
}
- (Aggregate_Builder*) mergeSub:(Aggregate*) value {
  if (result.hasSub &&
      result.sub != [Aggregate defaultInstance]) {
    result.sub =
      [[[Aggregate builderWithPrototype:result.sub] mergeFrom:value] buildPartial];
  } else {
    result.sub = value;
  }
  result.hasSub = YES;
  return self;
}
- (Aggregate_Builder*) clearSub {
  result.hasSub = NO;
  result.sub = [Aggregate defaultInstance];
  return self;
}
- (BOOL) hasFile {
  return result.hasFile;
}
- (PBFileOptions*) file {
  return result.file;
}
- (Aggregate_Builder*) setFile:(PBFileOptions*) value {
  result.hasFile = YES;
  result.file = value;
  return self;
}
- (Aggregate_Builder*) setFileBuilder:(PBFileOptions_Builder*) builderForValue {
  return [self setFile:[builderForValue build]];
}
- (Aggregate_Builder*) mergeFile:(PBFileOptions*) value {
  if (result.hasFile &&
      result.file != [PBFileOptions defaultInstance]) {
    result.file =
      [[[PBFileOptions builderWithPrototype:result.file] mergeFrom:value] buildPartial];
  } else {
    result.file = value;
  }
  result.hasFile = YES;
  return self;
}
- (Aggregate_Builder*) clearFile {
  result.hasFile = NO;
  result.file = [PBFileOptions defaultInstance];
  return self;
}
- (BOOL) hasMset {
  return result.hasMset;
}
- (AggregateMessageSet*) mset {
  return result.mset;
}
- (Aggregate_Builder*) setMset:(AggregateMessageSet*) value {
  result.hasMset = YES;
  result.mset = value;
  return self;
}
- (Aggregate_Builder*) setMsetBuilder:(AggregateMessageSet_Builder*) builderForValue {
  return [self setMset:[builderForValue build]];
}
- (Aggregate_Builder*) mergeMset:(AggregateMessageSet*) value {
  if (result.hasMset &&
      result.mset != [AggregateMessageSet defaultInstance]) {
    result.mset =
      [[[AggregateMessageSet builderWithPrototype:result.mset] mergeFrom:value] buildPartial];
  } else {
    result.mset = value;
  }
  result.hasMset = YES;
  return self;
}
- (Aggregate_Builder*) clearMset {
  result.hasMset = NO;
  result.mset = [AggregateMessageSet defaultInstance];
  return self;
}
@end

@interface AggregateMessage ()
@property int32_t fieldname;
@end

@implementation AggregateMessage

- (BOOL) hasFieldname {
  return !!hasFieldname_;
}
- (void) setHasFieldname:(BOOL) value {
  hasFieldname_ = !!value;
}
@synthesize fieldname;
- (void) dealloc {
  [super dealloc];
}
- (id) init {
  if ((self = [super init])) {
    self.fieldname = 0;
  }
  return self;
}
static AggregateMessage* defaultAggregateMessageInstance = nil;
+ (void) initialize {
  if (self == [AggregateMessage class]) {
    defaultAggregateMessageInstance = [[AggregateMessage alloc] init];
  }
}
+ (AggregateMessage*) defaultInstance {
  return defaultAggregateMessageInstance;
}
- (AggregateMessage*) defaultInstance {
  return defaultAggregateMessageInstance;
}
- (BOOL) isInitialized {
  return YES;
}
- (void) writeToCodedOutputStream:(PBCodedOutputStream*) output {
  if (self.hasFieldname) {
    [output writeInt32:1 value:self.fieldname];
  }
  [self.unknownFields writeToCodedOutputStream:output];
}
- (int32_t) serializedSize {
  int32_t size = memoizedSerializedSize;
  if (size != -1) {
    return size;
  }

  size = 0;
  if (self.hasFieldname) {
    size += computeInt32Size(1, self.fieldname);
  }
  size += self.unknownFields.serializedSize;
  memoizedSerializedSize = size;
  return size;
}
+ (AggregateMessage*) parseFromData:(NSData*) data {
  return (AggregateMessage*)[[[AggregateMessage builder] mergeFromData:data] build];
}
+ (AggregateMessage*) parseFromData:(NSData*) data extensionRegistry:(PBExtensionRegistry*) extensionRegistry {
  return (AggregateMessage*)[[[AggregateMessage builder] mergeFromData:data extensionRegistry:extensionRegistry] build];
}
+ (AggregateMessage*) parseFromInputStream:(NSInputStream*) input {
  return (AggregateMessage*)[[[AggregateMessage builder] mergeFromInputStream:input] build];
}
+ (AggregateMessage*) parseFromInputStream:(NSInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry {
  return (AggregateMessage*)[[[AggregateMessage builder] mergeFromInputStream:input extensionRegistry:extensionRegistry] build];
}
+ (AggregateMessage*) parseFromCodedInputStream:(PBCodedInputStream*) input {
  return (AggregateMessage*)[[[AggregateMessage builder] mergeFromCodedInputStream:input] build];
}
+ (AggregateMessage*) parseFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry {
  return (AggregateMessage*)[[[AggregateMessage builder] mergeFromCodedInputStream:input extensionRegistry:extensionRegistry] build];
}
+ (AggregateMessage_Builder*) builder {
  return [[[AggregateMessage_Builder alloc] init] autorelease];
}
+ (AggregateMessage_Builder*) builderWithPrototype:(AggregateMessage*) prototype {
  return [[AggregateMessage builder] mergeFrom:prototype];
}
- (AggregateMessage_Builder*) builder {
  return [AggregateMessage builder];
}
- (AggregateMessage_Builder*) toBuilder {
  return [AggregateMessage builderWithPrototype:self];
}
- (void) writeDescriptionTo:(NSMutableString*) output withIndent:(NSString*) indent {
  if (self.hasFieldname) {
    [output appendFormat:@"%@%@: %@\n", indent, @"fieldname", [NSNumber numberWithInt:self.fieldname]];
  }
  [self.unknownFields writeDescriptionTo:output withIndent:indent];
}
- (BOOL) isEqual:(id)other {
  if (other == self) {
    return YES;
  }
  if (![other isKindOfClass:[AggregateMessage class]]) {
    return NO;
  }
  AggregateMessage *otherMessage = other;
  return
      self.hasFieldname == otherMessage.hasFieldname &&
      (!self.hasFieldname || self.fieldname == otherMessage.fieldname) &&
      
      (self.unknownFields == otherMessage.unknownFields || (self.unknownFields != nil && [self.unknownFields isEqual:otherMessage.unknownFields]));
}
- (NSUInteger) hash {
  NSUInteger hashCode = 7;
  if (self.hasFieldname) {
    hashCode = hashCode * 31 + [[NSNumber numberWithInt:self.fieldname] hash];
  }
  hashCode = hashCode * 31 + [self.unknownFields hash];
  return hashCode;
}
@end

@interface AggregateMessage_Builder()
@property (retain) AggregateMessage* result;
@end

@implementation AggregateMessage_Builder
@synthesize result;
- (void) dealloc {
  self.result = nil;
  [super dealloc];
}
- (id) init {
  if ((self = [super init])) {
    self.result = [[[AggregateMessage alloc] init] autorelease];
  }
  return self;
}
- (PBGeneratedMessage*) internalGetResult {
  return result;
}
- (AggregateMessage_Builder*) clear {
  self.result = [[[AggregateMessage alloc] init] autorelease];
  return self;
}
- (AggregateMessage_Builder*) clone {
  return [AggregateMessage builderWithPrototype:result];
}
- (AggregateMessage*) defaultInstance {
  return [AggregateMessage defaultInstance];
}
- (AggregateMessage*) build {
  [self checkInitialized];
  return [self buildPartial];
}
- (AggregateMessage*) buildPartial {
  AggregateMessage* returnMe = [[result retain] autorelease];
  self.result = nil;
  return returnMe;
}
- (AggregateMessage_Builder*) mergeFrom:(AggregateMessage*) other {
  if (other == [AggregateMessage defaultInstance]) {
    return self;
  }
  if (other.hasFieldname) {
    [self setFieldname:other.fieldname];
  }
  [self mergeUnknownFields:other.unknownFields];
  return self;
}
- (AggregateMessage_Builder*) mergeFromCodedInputStream:(PBCodedInputStream*) input {
  return [self mergeFromCodedInputStream:input extensionRegistry:[PBExtensionRegistry emptyRegistry]];
}
- (AggregateMessage_Builder*) mergeFromCodedInputStream:(PBCodedInputStream*) input extensionRegistry:(PBExtensionRegistry*) extensionRegistry {
  PBUnknownFieldSet_Builder* unknownFields = [PBUnknownFieldSet builderWithUnknownFields:self.unknownFields];
  while (YES) {
    int32_t tag = [input readTag];
    switch (tag) {
      case 0:
        [self setUnknownFields:[unknownFields build]];
        return self;
      default: {
        if (![self parseUnknownField:input unknownFields:unknownFields extensionRegistry:extensionRegistry tag:tag]) {
          [self setUnknownFields:[unknownFields build]];
          return self;
        }
        break;
      }
      case 8: {
        [self setFieldname:[input readInt32]];
        break;
      }
    }
  }
}
- (BOOL) hasFieldname {
  return result.hasFieldname;
}
- (int32_t) fieldname {
  return result.fieldname;
}
- (AggregateMessage_Builder*) setFieldname:(int32_t) value {
  result.hasFieldname = YES;
  result.fieldname = value;
  return self;
}
- (AggregateMessage_Builder*) clearFieldname {
  result.hasFieldname = NO;
  result.fieldname = 0;
  return self;
}
@end

