docs: protected void doForwardViterbi(Node[][] lattice, Instance carrier) {
  		for (int l = 1; l < lattice.length; l++) {
  			for (int c = 0; c < lattice[l].length; c++) {
  				if (lattice[l][c] == null)
  					continue;
  
  				float bestScore = Float.NEGATIVE_INFINITY;
  				int bestPath = -1;
  				for (int p = 0; p < lattice[l - 1].length; p++) {
  					if (lattice[l - 1][p] == null)
  						continue;
  					
  					float score = lattice[l - 1][p].score
  							+ lattice[l][c].trans[p];
  					if (score > bestScore) {
  						bestScore = score;
  						bestPath = p;
  					}
  				}
  				bestScore += lattice[l][c].score;
  				lattice[l][c].addScore(bestScore, bestPath);
  			}
  		}
  	}