code: private static void writeElementNoTag(
        final CodedOutputStream output,
        final WireFormat.FieldType type,
        final Object value) throws IOException {
      switch (type) {
        case DOUBLE  : output.writeDoubleNoTag  ((Double     ) value); break;
        case FLOAT   : output.writeFloatNoTag   ((Float      ) value); break;
        case INT64   : output.writeInt64NoTag   ((Long       ) value); break;
        case UINT64  : output.writeUInt64NoTag  ((Long       ) value); break;
        case INT32   : output.writeInt32NoTag   ((Integer    ) value); break;
        case FIXED64 : output.writeFixed64NoTag ((Long       ) value); break;
        case FIXED32 : output.writeFixed32NoTag ((Integer    ) value); break;
        case BOOL    : output.writeBoolNoTag    ((Boolean    ) value); break;
        case STRING  : output.writeStringNoTag  ((String     ) value); break;
        case GROUP   : output.writeGroupNoTag   ((MessageLite) value); break;
        case MESSAGE : output.writeMessageNoTag ((MessageLite) value); break;
        case BYTES   : output.writeBytesNoTag   ((ByteString ) value); break;
        case UINT32  : output.writeUInt32NoTag  ((Integer    ) value); break;
        case SFIXED32: output.writeSFixed32NoTag((Integer    ) value); break;
        case SFIXED64: output.writeSFixed64NoTag((Long       ) value); break;
        case SINT32  : output.writeSInt32NoTag  ((Integer    ) value); break;
        case SINT64  : output.writeSInt64NoTag  ((Long       ) value); break;
  
        case ENUM:
          output.writeEnumNoTag(((Internal.EnumLite) value).getNumber());
          break;
      }
    }
docs: Write a field of arbitrary type, without its tag, to the stream.
  
  @param output The output stream.
  @param type The field's type.
  @param value  Object representing the field's value.  Must be of the exact
  type which would be returned by
  {@link Message#getField(Descriptors.FieldDescriptor)} for
  this field.