public Builder mergeFrom(org.box2d.proto.Box2D.PbBody other) {
        if (other == org.box2d.proto.Box2D.PbBody.getDefaultInstance()) return this;
        if (other.hasTag()) {
          setTag(other.getTag());
        }
        if (other.hasType()) {
          setType(other.getType());
        }
        if (other.hasPosition()) {
          mergePosition(other.getPosition());
        }
        if (other.hasAngle()) {
          setAngle(other.getAngle());
        }
        if (other.hasLinearVelocity()) {
          mergeLinearVelocity(other.getLinearVelocity());
        }
        if (other.hasAngularVelocity()) {
          setAngularVelocity(other.getAngularVelocity());
        }
        if (other.hasForce()) {
          mergeForce(other.getForce());
        }
        if (other.hasTorque()) {
          setTorque(other.getTorque());
        }
        if (other.hasMass()) {
          setMass(other.getMass());
        }
        if (other.hasI()) {
          setI(other.getI());
        }
        if (other.hasLinearDamping()) {
          setLinearDamping(other.getLinearDamping());
        }
        if (other.hasAngularDamping()) {
          setAngularDamping(other.getAngularDamping());
        }
        if (other.hasGravityScale()) {
          setGravityScale(other.getGravityScale());
        }
        if (other.hasBullet()) {
          setBullet(other.getBullet());
        }
        if (other.hasAllowSleep()) {
          setAllowSleep(other.getAllowSleep());
        }
        if (other.hasAwake()) {
          setAwake(other.getAwake());
        }
        if (other.hasActive()) {
          setActive(other.getActive());
        }
        if (other.hasFixedRotation()) {
          setFixedRotation(other.getFixedRotation());
        }
        if (fixturesBuilder_ == null) {
          if (!other.fixtures_.isEmpty()) {
            if (fixtures_.isEmpty()) {
              fixtures_ = other.fixtures_;
              bitField0_ = (bitField0_ & ~0x00040000);
            } else {
              ensureFixturesIsMutable();
              fixtures_.addAll(other.fixtures_);
            }
            onChanged();
          }
        } else {
          if (!other.fixtures_.isEmpty()) {
            if (fixturesBuilder_.isEmpty()) {
              fixturesBuilder_.dispose();
              fixturesBuilder_ = null;
              fixtures_ = other.fixtures_;
              bitField0_ = (bitField0_ & ~0x00040000);
              fixturesBuilder_ = 
                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                   getFixturesFieldBuilder() : null;
            } else {
              fixturesBuilder_.addAllMessages(other.fixtures_);
            }
          }
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }