/**
  * {@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->number !== null) {
         $writer->writeVarint($stream, 24);
         $writer->writeVarint($stream, $this->number);
     }
     if ($this->label !== null) {
         $writer->writeVarint($stream, 32);
         $writer->writeVarint($stream, $this->label->value());
     }
     if ($this->type !== null) {
         $writer->writeVarint($stream, 40);
         $writer->writeVarint($stream, $this->type->value());
     }
     if ($this->type_name !== null) {
         $writer->writeVarint($stream, 50);
         $writer->writeString($stream, $this->type_name);
     }
     if ($this->extendee !== null) {
         $writer->writeVarint($stream, 18);
         $writer->writeString($stream, $this->extendee);
     }
     if ($this->default_value !== null) {
         $writer->writeVarint($stream, 58);
         $writer->writeString($stream, $this->default_value);
     }
     if ($this->oneof_index !== null) {
         $writer->writeVarint($stream, 72);
         $writer->writeVarint($stream, $this->oneof_index);
     }
     if ($this->json_name !== null) {
         $writer->writeVarint($stream, 82);
         $writer->writeString($stream, $this->json_name);
     }
     if ($this->options !== null) {
         $writer->writeVarint($stream, 66);
         $writer->writeVarint($stream, $this->options->serializedSize($sizeContext));
         $this->options->writeTo($context);
     }
     if ($this->extensions !== null) {
         $this->extensions->writeTo($context);
     }
     return $stream;
 }