code: private SparseDoubleVector getColumnVector(int column, boolean shouldLock) {
          int r = rows.get();
          if (shouldLock)
              lockColumn(column, r);
          // Ensure that the column data is up to date 
          while (lastVectorCacheUpdate.get() != modifications.get()) 
              updateVectorCache();
          int[] rowArr = colToRowsCache[column];
          SparseDoubleVector colVec = new SparseHashDoubleVector(r);
          for (int row : rowArr)
              colVec.set(row, matrixEntries.get(new Entry(row, column)));
          if (shouldLock)
              unlockColumn(column, r);
          return colVec;
      }
docs: Returns the column vector, locking the data if {@code shouldLock} is
  {@code true}.