code: public double conditionalLogProbGivenNext(int[] given, int of) {
      if (given.length != windowSize - 1) {
        throw new IllegalArgumentException("conditionalLogProbGivenNext requires given one less than clique size (" +
            windowSize + ") but was " + Arrays.toString(given));
      }
      int[] label = indicesEnd(given);
      double[] masses = new double[label.length];
      for (int i = 0; i < masses.length; i++) {
        masses[i] = table[label[i]];
      }
      double z = ArrayMath.logSum(masses);
  
      return table[indexOf(of, given)] - z;
    }
docs: Computes the probability of the tag OF being at the beginning of the table
  given that the tag sequence GIVEN is at the end of the table. given is at
  the end, of is at the beginning
  
  @return the probability of the tag of being at the beginning of the table