private EnActionResult doMoveAction(EnMovingDirection direction, EnGameObjectType gameObjectType, IntMonsterMoveAlgorithm algorithm) {

        AbsMovingObject golddigger = (AbsMovingObject) getObjectsByType(EnGameObjectType.GOLDDIGGER).get(0);

        EnActionResult enActionResult = null;

        for (AbsGameObject absGameObject : getObjectsByType(gameObjectType)) {
            if (absGameObject instanceof AbsMovingObject) {
                AbsMovingObject absMovingObject = (AbsMovingObject) absGameObject;

                if (algorithm != null) {
                    direction = algorithm.getDirection(absMovingObject, golddigger, this);
                }

                // Checking what object is located in new coordinates before moving the object
                Coordinate newCoordinate = absMovingObject.getMoveTargetCoord(direction);
                AbsGameObject objectInNewCoord = getObjByCoord(newCoordinate);
//                System.out.println("gameObjectType " + gameObjectType);
//                System.out.println("direction " + direction + ";  ObjectInNewCoord " + objectInNewCoord);
                

                enActionResult = absMovingObject.moveToObject(direction, objectInNewCoord);

                switch (enActionResult) {
                    case MOVE:
                        swapObjects(absMovingObject, objectInNewCoord);
                        break;
                    case COLLECT_TREASURE:
                        swapObjects(absMovingObject, new Nothing(newCoordinate));
                        break;
                }

            }
            notifyListeners(enActionResult, golddigger);
            if (enActionResult == EnActionResult.DIE || enActionResult == EnActionResult.WIN) {
                break;
            }

        }
//            Coordinate coordinate = entry.getKey();
//            AbsGameObject absGameObject = entry.getValue();
//            
//        }
//        EnActionResult enActionResult;
//        Coordinate newCoordinate = getMoveTargetCoord(direction);
//        AbsGameObject objInNewCoord = gameMap.getGameCollection().getObjByCoord(newCoordinate);
//        if (objInNewCoord.getType() == EnGameObjectType.NOTHING) {
//            changeIcon(direction);
//            setCoordinate(newCoordinate);
//        }
//        
//        
        return enActionResult;
    }