code: @Override
      public SparseDoubleVector getRowVector(int row) {
          // Check whether we have this row cached
          VersionedVector cachedRow = colToVectorCache.get(row);
          // 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 (cachedRow == null || cachedRow.version != version.get()) {
              cachedRow = new VersionedVector(columns(), version.get());
              double[] r = getRow(row);
              for (int i = 0; i < r.length; ++i) {
                  double d = r[i];
                  if (d != 0)
                      cachedRow.set(i, d);
              }
              rowToVectorCache.put(row, cachedRow);
          }
          return cachedRow;
      }
docs: {@inheritDoc}