public Builder mergeFrom(org.box2d.proto.Box2D.PbShape other) {
        if (other == org.box2d.proto.Box2D.PbShape.getDefaultInstance()) return this;
        if (other.hasTag()) {
          setTag(other.getTag());
        }
        if (other.hasType()) {
          setType(other.getType());
        }
        if (other.hasCenter()) {
          mergeCenter(other.getCenter());
        }
        if (other.hasRadius()) {
          setRadius(other.getRadius());
        }
        if (pointsBuilder_ == null) {
          if (!other.points_.isEmpty()) {
            if (points_.isEmpty()) {
              points_ = other.points_;
              bitField0_ = (bitField0_ & ~0x00000010);
            } else {
              ensurePointsIsMutable();
              points_.addAll(other.points_);
            }
            onChanged();
          }
        } else {
          if (!other.points_.isEmpty()) {
            if (pointsBuilder_.isEmpty()) {
              pointsBuilder_.dispose();
              pointsBuilder_ = null;
              points_ = other.points_;
              bitField0_ = (bitField0_ & ~0x00000010);
              pointsBuilder_ = 
                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                   getPointsFieldBuilder() : null;
            } else {
              pointsBuilder_.addAllMessages(other.points_);
            }
          }
        }
        if (normalsBuilder_ == null) {
          if (!other.normals_.isEmpty()) {
            if (normals_.isEmpty()) {
              normals_ = other.normals_;
              bitField0_ = (bitField0_ & ~0x00000020);
            } else {
              ensureNormalsIsMutable();
              normals_.addAll(other.normals_);
            }
            onChanged();
          }
        } else {
          if (!other.normals_.isEmpty()) {
            if (normalsBuilder_.isEmpty()) {
              normalsBuilder_.dispose();
              normalsBuilder_ = null;
              normals_ = other.normals_;
              bitField0_ = (bitField0_ & ~0x00000020);
              normalsBuilder_ = 
                com.google.protobuf.GeneratedMessage.alwaysUseFieldBuilders ?
                   getNormalsFieldBuilder() : null;
            } else {
              normalsBuilder_.addAllMessages(other.normals_);
            }
          }
        }
        if (other.hasCentroid()) {
          mergeCentroid(other.getCentroid());
        }
        this.mergeUnknownFields(other.getUnknownFields());
        return this;
      }