docs: public int dot(IntIntVector y) {
          if (y instanceof IntIntSortedVector) {
              IntIntSortedVector other = ((IntIntSortedVector) y);
              int dot = 0;
              int oc = 0;
              for (int c = 0; c < used; c++) {
                  while (oc < other.used) {
                      if (other.indices[oc] < indices[c]) {
                          oc++;
                      } else if (indices[c] == other.indices[oc]) {
                          dot += values[c] * other.values[oc];
                          break;
                      } else {
                          break;
                      }
                  }
              }
              return dot;
          } else {
              int dot = 0;
              for (int c = 0; c < used; c++) {
                  dot += this.values[c] * y.get(indices[c]);
              }
              return dot;
          }
      }