private void randomWalkAddPossibleCommandsForDirection(dir direction, ArrayList<Command> possibleCommands){
		
		if (neighbourFree(this.atField,direction))
		{
			possibleCommands.add(new Command(direction));
		} 
		
		else if (neighbourIsBoxOfSameColor(direction)) 
		{
			//Find possible pull commands
			for (dir d : dir.values()) {
				//we cannot pull a box forward in the box's direction
				if (d != direction && neighbourFree(this.atField,d)){
					possibleCommands.add(new Command("Pull",d,direction));
				}
			}
			//Find possible push commands
			for (dir d : dir.values()) {
				//We cannot push a box backwards in the agents direction
				if (d != Constants.oppositeDir(direction) 
					&& neighbourFree(this.getAtField().neighbors[direction.ordinal()],d)){
					possibleCommands.add(new Command("Push",direction,d));
				}
			}
		}
	}