public void writeTo(com.google.protobuf.CodedOutputStream output)
                        throws java.io.IOException {
      getSerializedSize();
      if (((bitField0_ & 0x00000001) == 0x00000001)) {
        output.writeInt64(1, tag_);
      }
      if (((bitField0_ & 0x00000002) == 0x00000002)) {
        output.writeEnum(2, type_.getNumber());
      }
      if (((bitField0_ & 0x00000004) == 0x00000004)) {
        output.writeInt32(3, bodyA_);
      }
      if (((bitField0_ & 0x00000008) == 0x00000008)) {
        output.writeInt32(4, bodyB_);
      }
      if (((bitField0_ & 0x00000010) == 0x00000010)) {
        output.writeBool(5, collideConnected_);
      }
      if (((bitField0_ & 0x00000020) == 0x00000020)) {
        output.writeMessage(6, localAnchorA_);
      }
      if (((bitField0_ & 0x00000040) == 0x00000040)) {
        output.writeMessage(7, localAnchorB_);
      }
      if (((bitField0_ & 0x00000080) == 0x00000080)) {
        output.writeFloat(10, refAngle_);
      }
      if (((bitField0_ & 0x00000100) == 0x00000100)) {
        output.writeBool(12, enableLimit_);
      }
      if (((bitField0_ & 0x00000200) == 0x00000200)) {
        output.writeFloat(13, lowerLimit_);
      }
      if (((bitField0_ & 0x00000400) == 0x00000400)) {
        output.writeFloat(14, upperLimit_);
      }
      if (((bitField0_ & 0x00000800) == 0x00000800)) {
        output.writeBool(15, enableMotor_);
      }
      if (((bitField0_ & 0x00001000) == 0x00001000)) {
        output.writeFloat(16, motorSpeed_);
      }
      if (((bitField0_ & 0x00002000) == 0x00002000)) {
        output.writeFloat(17, maxMotorTorque_);
      }
      if (((bitField0_ & 0x00004000) == 0x00004000)) {
        output.writeMessage(20, localAxisA_);
      }
      if (((bitField0_ & 0x00008000) == 0x00008000)) {
        output.writeFloat(21, maxMotorForce_);
      }
      if (((bitField0_ & 0x00010000) == 0x00010000)) {
        output.writeFloat(30, length_);
      }
      if (((bitField0_ & 0x00020000) == 0x00020000)) {
        output.writeFloat(31, frequency_);
      }
      if (((bitField0_ & 0x00040000) == 0x00040000)) {
        output.writeFloat(32, dampingRatio_);
      }
      if (((bitField0_ & 0x00080000) == 0x00080000)) {
        output.writeMessage(40, groundAnchorA_);
      }
      if (((bitField0_ & 0x00100000) == 0x00100000)) {
        output.writeMessage(41, groundAnchorB_);
      }
      if (((bitField0_ & 0x00200000) == 0x00200000)) {
        output.writeFloat(42, lengthA_);
      }
      if (((bitField0_ & 0x00400000) == 0x00400000)) {
        output.writeFloat(43, lengthB_);
      }
      if (((bitField0_ & 0x00800000) == 0x00800000)) {
        output.writeFloat(44, ratio_);
      }
      if (((bitField0_ & 0x01000000) == 0x01000000)) {
        output.writeFloat(45, maxLengthA_);
      }
      if (((bitField0_ & 0x02000000) == 0x02000000)) {
        output.writeFloat(46, maxLengthB_);
      }
      if (((bitField0_ & 0x04000000) == 0x04000000)) {
        output.writeMessage(50, target_);
      }
      if (((bitField0_ & 0x08000000) == 0x08000000)) {
        output.writeFloat(51, maxForce_);
      }
      if (((bitField0_ & 0x10000000) == 0x10000000)) {
        output.writeInt32(61, joint1_);
      }
      if (((bitField0_ & 0x20000000) == 0x20000000)) {
        output.writeInt32(62, joint2_);
      }
      if (((bitField0_ & 0x40000000) == 0x40000000)) {
        output.writeFloat(70, springFrequency_);
      }
      if (((bitField0_ & 0x80000000) == 0x80000000)) {
        output.writeFloat(71, springDampingRatio_);
      }
      if (((bitField1_ & 0x00000001) == 0x00000001)) {
        output.writeFloat(90, maxTorque_);
      }
      if (((bitField1_ & 0x00000002) == 0x00000002)) {
        output.writeFloat(100, maxLength_);
      }
      for (int i = 0; i < bodies_.size(); i++) {
        output.writeInt32(110, bodies_.get(i));
      }
      for (int i = 0; i < joints_.size(); i++) {
        output.writeInt32(111, joints_.get(i));
      }
      if (((bitField1_ & 0x00000004) == 0x00000004)) {
        output.writeFloat(112, targetVolume_);
      }
      getUnknownFields().writeTo(output);
    }