code: @Override
      public SparseDoubleVector getColumnVector(int column) {
          // Check whether we have this column cached
          VersionedVector cachedCol = colToVectorCache.get(column);
          // If the cache was empty or if the matrix has been updated since this
          // vector was created, recreate the vector and cache it before returning
          if (cachedCol == null || cachedCol.version != version.get()) {
              cachedCol = new VersionedVector(rows(), version.get());
              double[] col = getColumn(column);
              for (int i = 0; i < col.length; ++i) {
                  double d = col[i];
                  if (d != 0)
                      cachedCol.set(i, d);
              }
              colToVectorCache.put(column, cachedCol);
          }
          return cachedCol;
      }
docs: {@inheritDoc}