@Override
	public Iterator<NPuzzleMove> getMoves()
	{
		List<NPuzzleMove> moves = new ArrayList<NPuzzleMove>();
		
		if (exists( openX + 1, openY ))
		{
			moves.add( new NPuzzleMove( openX + 1, openY ) );
		}
		if (exists( openX - 1, openY ))
		{
			moves.add( new NPuzzleMove( openX - 1, openY ) );
		}
		if (exists( openX, openY + 1 ))
		{
			moves.add( new NPuzzleMove( openX, openY + 1 ) );
		}
		if (exists( openX, openY - 1 ))
		{
			moves.add( new NPuzzleMove( openX, openY - 1 ) );
		}
		
		return moves.iterator();
	}