docs: private double hammingDistanceNumberVector(NumberVector o1, NumberVector o2) {
      final int d1 = o1.getDimensionality(), d2 = o2.getDimensionality();
      int differences = 0;
      int d = 0;
      for(; d < d1 && d < d2; d++) {
        double v1 = o1.doubleValue(d), v2 = o2.doubleValue(d);
        if(v1 != v1 || v2 != v2) { /* NaN */
          continue;
        }
        if(v1 != v2) {
          ++differences;
        }
      }
      for(; d < d1; d++) {
        double v1 = o1.doubleValue(d);
        if(v1 != 0. && v1 == v1 /* not NaN */) {
          ++differences;
        }
      }
      for(; d < d2; d++) {
        double v2 = o2.doubleValue(d);
        if(v2 != 0. && v2 == v2 /* not NaN */) {
          ++differences;
        }
      }
      return differences;
    }