public static Moves getNeededMovesToKeepExpansionGoing(BotState state, SuperRegion superRegion) {
		Moves out = new Moves();
		// Calculate the region with the highest amount of idle armies.
		Region biggestStackRegion = null;
		int biggestIdleStack = 0;
		for (Region neutralRegion : superRegion.getNeutralSubRegions(state)) {
			List<Region> ownedNeighbors = neutralRegion.getOwnedNeighbors(state);
			for (Region ownedNeighbor : ownedNeighbors) {
				if (ownedNeighbor.getIdleArmies() >= biggestIdleStack) {
					biggestIdleStack = ownedNeighbor.getIdleArmies();
					biggestStackRegion = ownedNeighbor;
				}
			}
		}
		// Calculate the needed deployment
		int idleArmies = biggestStackRegion.getIdleArmies();
		int neededExpansionDeployment = 3 - idleArmies;
		if (neededExpansionDeployment > 0) {
			PlaceArmiesMove deployment = new PlaceArmiesMove(state.getMyPlayerName(), biggestStackRegion,
					3 - idleArmies);
			out.armyPlacementMoves.add(deployment);
			out.totalDeployment = out.totalDeployment + (3 - idleArmies);
		} else {
			neededExpansionDeployment = 0;
		}
		// Calculate the best region to which we should perform an expansion
		// move.
		int highestExpansionRegionValue = 0;
		Region bestExpansionRegion = null;
		for (Region neighbor : biggestStackRegion.getNeighbors()) {
			if (superRegion.getSubRegions().contains(neighbor) && neighbor.isNeutralRegion(state)) {
				int expansionValue = neighbor.getExpansionRegionValue();
				if (expansionValue >= highestExpansionRegionValue) {
					highestExpansionRegionValue = expansionValue;
					bestExpansionRegion = neighbor;
				}

			}
		}
		// Calculate the amount of armies that should be used for the expansion
		// move.
		int usedArmies;
		if (biggestStackRegion.getDistanceToOpponentBorder() == 1) {
			usedArmies = 3;
		} else {
			usedArmies = biggestStackRegion.getIdleArmies() + neededExpansionDeployment;
		}
		// Perform the AttackTransferMove
		AttackTransferMove expansionMove = new AttackTransferMove(state.getMyPlayerName(), biggestStackRegion,
				bestExpansionRegion, usedArmies);
		out.attackTransferMoves.add(expansionMove);

		return out;
	}