code: public ConcatVector newEmptyClone() {
      ConcatVector clone = new ConcatVector(getNumberOfComponents());
      for (int i = 0; i < pointers.length; i++) {
        if (pointers[i] != null && !sparse[i]) {
          clone.pointers[i] = new double[pointers[i].length];
          clone.sparse[i] = false;
        }
      }
      return clone;
    }
docs: Creates a ConcatVector whose dimensions are the same as this one for all dense components, but is otherwise
  completely empty. This is useful to prevent resizing during optimizations where we're adding lots of sparse
  vectors.
  
  @return an empty vector suitable for use as a gradient