code: public Iterable<long[]> availableCoordinates() {
  		List<long[]> coordinates = new ArrayList<long[]>();
  		for (Long r : rows.keySet()) {
  			Matrix m = rows.get(r);
  			for (long[] c : m.availableCoordinates()) {
  				coordinates.add(Coordinates.plus(c, new long[] { r, 0 }));
  			}
  		}
  		return coordinates;
  	}
docs: TODO: this is certainly not the optimal way to do it!