docs: public void mergeWith(BlockType other) {
          if (this.isTop() || other.isBottom()) {
              copyFrom(other);
          } else if (isValid()) {
              // To merge, we take the common prefix
              int pfxLen = Math.min(this.depth, other.depth);
              int commonLen;
              for (commonLen = 0; commonLen < pfxLen; ++commonLen) {
                  if (this.get(commonLen) != other.get(commonLen)) {
                      break;
                  }
              }
              this.depth = commonLen;
          }
      }