code: public void apply(LongDoubleVector other, LambdaBinOpDouble lambda, boolean skipZeros) {
          if (other instanceof LongDoubleSortedVector) {
              applyToSorted((LongDoubleSortedVector)other, lambda, false);
          } else if (other instanceof LongDoubleHashVector) {
              other = new LongDoubleSortedVector((LongDoubleHashVector) other);
              applyToSorted((LongDoubleSortedVector) other, lambda, false);
          } else if (other instanceof LongDoubleDenseVector) {
              other = new LongDoubleSortedVector((LongDoubleDenseVector) other);
              applyToSorted((LongDoubleSortedVector) other, lambda, false);
          } else {
              // TODO: we could just add a generic constructor. 
              throw new IllegalStateException("Unhandled vector type: " + other.getClass());
          }
      }
docs: Applies the function to every pair of entries in this vector and an
  other. If the call is skipping zeros, then the function is only applied
  to those entries which are explicit in both vectors. Otherwise, it is
  applied to any entry which is explicit in either vector.
  
  @param other The other vector.
  @param lambda The function to apply.
  @param skipZeros Whether to skip entries which are explicit in one of the
  vectors. Note that most such entries will be non-zero, but the
  implementation may choose to allow explicit zero entries. This
  is useful for operations such as entrywise product.