/**
  * {@inheritdoc}
  */
 public function writeTo(\Protobuf\WriteContext $context)
 {
     $stream = $context->getStream();
     $writer = $context->getWriter();
     $sizeContext = $context->getComputeSizeContext();
     if ($this->name !== null) {
         $writer->writeVarint($stream, 10);
         $writer->writeString($stream, $this->name);
     }
     if ($this->field !== null) {
         foreach ($this->field as $val) {
             $writer->writeVarint($stream, 18);
             $writer->writeVarint($stream, $val->serializedSize($sizeContext));
             $val->writeTo($context);
         }
     }
     if ($this->extension !== null) {
         foreach ($this->extension as $val) {
             $writer->writeVarint($stream, 50);
             $writer->writeVarint($stream, $val->serializedSize($sizeContext));
             $val->writeTo($context);
         }
     }
     if ($this->nested_type !== null) {
         foreach ($this->nested_type as $val) {
             $writer->writeVarint($stream, 26);
             $writer->writeVarint($stream, $val->serializedSize($sizeContext));
             $val->writeTo($context);
         }
     }
     if ($this->enum_type !== null) {
         foreach ($this->enum_type as $val) {
             $writer->writeVarint($stream, 34);
             $writer->writeVarint($stream, $val->serializedSize($sizeContext));
             $val->writeTo($context);
         }
     }
     if ($this->extension_range !== null) {
         foreach ($this->extension_range as $val) {
             $writer->writeVarint($stream, 42);
             $writer->writeVarint($stream, $val->serializedSize($sizeContext));
             $val->writeTo($context);
         }
     }
     if ($this->oneof_decl !== null) {
         foreach ($this->oneof_decl as $val) {
             $writer->writeVarint($stream, 66);
             $writer->writeVarint($stream, $val->serializedSize($sizeContext));
             $val->writeTo($context);
         }
     }
     if ($this->options !== null) {
         $writer->writeVarint($stream, 58);
         $writer->writeVarint($stream, $this->options->serializedSize($sizeContext));
         $this->options->writeTo($context);
     }
     if ($this->reserved_range !== null) {
         foreach ($this->reserved_range as $val) {
             $writer->writeVarint($stream, 74);
             $writer->writeVarint($stream, $val->serializedSize($sizeContext));
             $val->writeTo($context);
         }
     }
     if ($this->reserved_name !== null) {
         foreach ($this->reserved_name as $val) {
             $writer->writeVarint($stream, 82);
             $writer->writeString($stream, $val);
         }
     }
     if ($this->extensions !== null) {
         $this->extensions->writeTo($context);
     }
     return $stream;
 }