public List<Position> getValidMovements(Unit unit, Position position, Map<Position, List<Unit>> map) {
      List<Position> validMovements = new ArrayList<Position>();
      for (MoveSequence validMove : getValidMoves(unit)) {
         MovementHelper movementHelper = new MovementHelper(unit.getBoardDirection(), position);
         movementHelper.executeSequence(validMove);

         Position currentPosition = movementHelper.getPosition();
         // This means it is an attacking move
         List<Unit> units = map.get(currentPosition);
         if (movementHelper.isColumnChanged()) {
            if (units != null && !units.isEmpty()) {
               validMovements.add(currentPosition);
            }
         } else {
            if (units != null && units.isEmpty()) {
               validMovements.add(currentPosition);
            }

         }
      }
      return filterInvalidMovements(validMovements);
   }