public Builder mergeFrom(org.box2d.proto.Box2D.PbWorld other) {
        if (other == org.box2d.proto.Box2D.PbWorld.getDefaultInstance()) return this;
        if (other.hasTag()) {
          setTag(other.getTag());
        }
        if (other.hasGravity()) {
          mergeGravity(other.getGravity());
        }
        if (other.hasAllowSleep()) {
          setAllowSleep(other.getAllowSleep());
        }
        if (other.hasAutoClearForces()) {
          setAutoClearForces(other.getAutoClearForces());
        }
        if (other.hasWarmStarting()) {
          setWarmStarting(other.getWarmStarting());
        }
        if (other.hasContinuousPhysics()) {
          setContinuousPhysics(other.getContinuousPhysics());
        }
        if (other.hasSubStepping()) {
          setSubStepping(other.getSubStepping());
        }
        if (bodiesBuilder_ == null) {
          if (!other.bodies_.isEmpty()) {
            if (bodies_.isEmpty()) {
              bodies_ = other.bodies_;
              bitField0_ = (bitField0_ & ~0x00000080);
            } else {
              ensureBodiesIsMutable();
              bodies_.addAll(other.bodies_);
            }
            onChanged();
          }
        } else {
          if (!other.bodies_.isEmpty()) {
            if (bodiesBuilder_.isEmpty()) {
              bodiesBuilder_.dispose();
              bodiesBuilder_ = null;
              bodies_ = other.bodies_;
              bitField0_ = (bitField0_ & ~0x00000080);
              bodiesBuilder_ = 
                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                   getBodiesFieldBuilder() : null;
            } else {
              bodiesBuilder_.addAllMessages(other.bodies_);
            }
          }
        }
        if (jointsBuilder_ == null) {
          if (!other.joints_.isEmpty()) {
            if (joints_.isEmpty()) {
              joints_ = other.joints_;
              bitField0_ = (bitField0_ & ~0x00000100);
            } else {
              ensureJointsIsMutable();
              joints_.addAll(other.joints_);
            }
            onChanged();
          }
        } else {
          if (!other.joints_.isEmpty()) {
            if (jointsBuilder_.isEmpty()) {
              jointsBuilder_.dispose();
              jointsBuilder_ = null;
              joints_ = other.joints_;
              bitField0_ = (bitField0_ & ~0x00000100);
              jointsBuilder_ = 
                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                   getJointsFieldBuilder() : null;
            } else {
              jointsBuilder_.addAllMessages(other.joints_);
            }
          }
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }