protected Position nextPosition(Position from, Direction direction){
        if(Player.Black.equals(owner)){
            direction = Direction.getDirection(direction.getValue() + 4);
        }

        Position position = null;
        switch (direction){
            case FORWARD:
                position = new Position(from.getColumn(), from.getRow() + 1);
                break;
            case FORWARD_RIGHT:
                position = new Position((char)((int)from.getColumn() + 1), from.getRow() + 1);
                break;
            case RIGHT:
                position = new Position((char)((int)from.getColumn() + 1), from.getRow());
                break;
            case BACK_RIGHT:
                position = new Position((char)((int)from.getColumn() + 1), from.getRow() - 1);
                break;
            case BACK:
                position = new Position(from.getColumn(), from.getRow() - 1);
                break;
            case BACK_LEFT:
                position = new Position((char)((int)from.getColumn() - 1), from.getRow() - 1);
                break;
            case LEFT:
                position = new Position((char)((int)from.getColumn() - 1), from.getRow());
                break;
            case FORWARD_LEFT:
                position = new Position((char)((int)from.getColumn() - 1), from.getRow() + 1);
                break;
        }

        return position;
    }