+ /* Step forward, calculating the estimated minimum cost to reach each
+ * position. The algorithm may find multiple paths to reach each
+ * position; only the lowest-cost path is saved.
+ *
+ * The progress of the parse is tracked in the @mc->optimum array, which
+ * for each position contains the minimum cost to reach that position,
+ * the index of the start of the match/literal taken to reach that
+ * position through the minimum-cost path, the offset of the match taken
+ * (not relevant for literals), and the adaptive state that will exist
+ * at that position after the minimum-cost path is taken. The @cur_pos
+ * variable stores the position at which the algorithm is currently
+ * considering coding choices, and the @len_end variable stores the
+ * greatest offset at which the costs of coding choices have been saved.
+ * (The algorithm guarantees that all positions before @len_end are
+ * reachable by at least one path and therefore have costs computed.)
+ *
+ * The loop terminates when any one of the following conditions occurs:
+ *
+ * 1. A match greater than @nice_len is found. When this is found, the
+ * algorithm chooses this match unconditionally, and consequently the
+ * near-optimal match/literal sequence up to and including that match
+ * is fully determined.
+ *
+ * 2. @cur_pos reaches a position not overlapped by a preceding match.
+ * In such cases, the near-optimal match/literal sequence up to
+ * @cur_pos is fully determined.
+ *
+ * 3. Failing either of the above in a degenerate case, the loop
+ * terminates when space in the @mc->optimum array is exhausted.
+ * This terminates the algorithm and forces it to start returning
+ * matches/literals even though they may not be globally optimal.
+ *
+ * Upon loop termination, a nonempty list of matches/literals has been
+ * produced and stored in the @optimum array. They are linked in
+ * reverse order, so the last thing this function does is reverse the
+ * links and return the first match/literal, leaving the rest to be
+ * returned immediately by subsequent calls to this function.
+ */