private void findCaptureArea(int x, int y, int owner) {
        
        if(!isOnMap(x, y)) {
            return;
        }
        
        if(map[x][y].owner == owner) {
            return;
        }
        
        boolean mask[][] = new boolean[getXSize()][getYSize()];
        for(int i = 0; i < getXSize(); i++) {
            for(int j = 0; j < getYSize(); j++) {
                mask[i][j] = false;
            }
        }
        
        if(!processDot_r(x, y, owner, mask)) {
            return;
        }
        
        for(int i = 0; i < getXSize(); i++) {
            for(int j = 0; j < getYSize(); j++) {
                if(mask[i][j]) {
                    map[i][j].invade(owner);
                    if(map[i][j].owner == ServerGameMapCell.WITHOUT_OWNER_OPT) {
                        freePoint--;
                    }
                }
            }
        }

        countScores();        
    }