code: public B getMostProbableOutcome(A first) {
      B best = null;
      double probability = -1.0;
      for (B second : getValues(first)) {
        if (getProbability(first, second) > probability) {
          probability = getProbability(first, second);
          best = second;
        }
      }
      return best;
    }
docs: Gets the outcome B with the highest conditional probability given
  {@code first}. Returns {@code null} if {@code first} has never been
  observed.
  
  @param first
  @return