@Override
	@SuppressWarnings("rawtypes")
	public boolean equals(Object obj) {
		if (this == obj) {
			return true;
		}
		if (!super.equals(obj)) {
			return false;
		}
		if (getClass() != obj.getClass()) {
			return false;
		}
		AbstractRectangularPuzzle other = (AbstractRectangularPuzzle) obj;
		if (height != other.height) {
			return false;
		}
		if (!Arrays.deepEquals(puzzle, other.puzzle)) {
			return false;
		}
		if (width != other.width) {
			return false;
		}
		return true;
	}