private static List<AttackTransferMove> scheduleTransferMoves(BotState state, List<AttackTransferMove> transferMoves) {
		List<AttackTransferMove> out = new ArrayList<>();
		while (!transferMoves.isEmpty()) {
			// search for the highest priority of all transfer moves
			int highestPriority = 0;
			for (AttackTransferMove transferMove : transferMoves) {
				if (transferMove.getToRegion().getAdjustedRegionValue(state) > highestPriority) {
					highestPriority = transferMove.getToRegion().getAdjustedRegionValue(state);
				}
			}
			// search for the transfer move with highest priority having the
			// most moving armies
			// TODO debug 0
			// int mostMovingArmies = 0;
			int mostMovingArmies = 1;
			for (AttackTransferMove transferMove : transferMoves) {
				if (transferMove.getToRegion().getAdjustedRegionValue(state) == highestPriority
						&& transferMove.getArmies() >= mostMovingArmies) {
					mostMovingArmies = transferMove.getArmies();
				}
			}
			// search for the just identified transfer move
			AttackTransferMove mostImportantTransferMove = null;
			for (AttackTransferMove transferMove : transferMoves) {
				if (transferMove.getToRegion().getAdjustedRegionValue(state) == highestPriority
						&& transferMove.getArmies() == mostMovingArmies) {
					mostImportantTransferMove = transferMove;
				}
			}
			out.add(mostImportantTransferMove);
			transferMoves.remove(mostImportantTransferMove);
		}
		return out;
	}