public Builder mergeFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        com.google.protobuf.UnknownFieldSet.Builder unknownFields =
          com.google.protobuf.UnknownFieldSet.newBuilder(
            this.getUnknownFields());
        while (true) {
          int tag = input.readTag();
          switch (tag) {
            case 0:
              this.setUnknownFields(unknownFields.build());
              onChanged();
              return this;
            default: {
              if (!parseUnknownField(input, unknownFields,
                                     extensionRegistry, tag)) {
                this.setUnknownFields(unknownFields.build());
                onChanged();
                return this;
              }
              break;
            }
            case 8: {
              bitField0_ |= 0x00000001;
              tag_ = input.readInt64();
              break;
            }
            case 16: {
              int rawValue = input.readEnum();
              org.box2d.proto.Box2D.PbBodyType value = org.box2d.proto.Box2D.PbBodyType.valueOf(rawValue);
              if (value == null) {
                unknownFields.mergeVarintField(2, rawValue);
              } else {
                bitField0_ |= 0x00000002;
                type_ = value;
              }
              break;
            }
            case 82: {
              org.box2d.proto.Box2D.PbVec2.Builder subBuilder = org.box2d.proto.Box2D.PbVec2.newBuilder();
              if (hasPosition()) {
                subBuilder.mergeFrom(getPosition());
              }
              input.readMessage(subBuilder, extensionRegistry);
              setPosition(subBuilder.buildPartial());
              break;
            }
            case 93: {
              bitField0_ |= 0x00000008;
              angle_ = input.readFloat();
              break;
            }
            case 98: {
              org.box2d.proto.Box2D.PbVec2.Builder subBuilder = org.box2d.proto.Box2D.PbVec2.newBuilder();
              if (hasLinearVelocity()) {
                subBuilder.mergeFrom(getLinearVelocity());
              }
              input.readMessage(subBuilder, extensionRegistry);
              setLinearVelocity(subBuilder.buildPartial());
              break;
            }
            case 109: {
              bitField0_ |= 0x00000020;
              angularVelocity_ = input.readFloat();
              break;
            }
            case 114: {
              org.box2d.proto.Box2D.PbVec2.Builder subBuilder = org.box2d.proto.Box2D.PbVec2.newBuilder();
              if (hasForce()) {
                subBuilder.mergeFrom(getForce());
              }
              input.readMessage(subBuilder, extensionRegistry);
              setForce(subBuilder.buildPartial());
              break;
            }
            case 125: {
              bitField0_ |= 0x00000080;
              torque_ = input.readFloat();
              break;
            }
            case 133: {
              bitField0_ |= 0x00000100;
              mass_ = input.readFloat();
              break;
            }
            case 141: {
              bitField0_ |= 0x00000200;
              i_ = input.readFloat();
              break;
            }
            case 405: {
              bitField0_ |= 0x00000400;
              linearDamping_ = input.readFloat();
              break;
            }
            case 413: {
              bitField0_ |= 0x00000800;
              angularDamping_ = input.readFloat();
              break;
            }
            case 421: {
              bitField0_ |= 0x00001000;
              gravityScale_ = input.readFloat();
              break;
            }
            case 424: {
              bitField0_ |= 0x00002000;
              bullet_ = input.readBool();
              break;
            }
            case 432: {
              bitField0_ |= 0x00004000;
              allowSleep_ = input.readBool();
              break;
            }
            case 440: {
              bitField0_ |= 0x00008000;
              awake_ = input.readBool();
              break;
            }
            case 448: {
              bitField0_ |= 0x00010000;
              active_ = input.readBool();
              break;
            }
            case 456: {
              bitField0_ |= 0x00020000;
              fixedRotation_ = input.readBool();
              break;
            }
            case 802: {
              org.box2d.proto.Box2D.PbFixture.Builder subBuilder = org.box2d.proto.Box2D.PbFixture.newBuilder();
              input.readMessage(subBuilder, extensionRegistry);
              addFixtures(subBuilder.buildPartial());
              break;
            }
          }
        }
      }