Another way to see things is as follows: While encoding, for the search pointer to continue finding matched pairs past the end of the search window, all characters from the first match at offset "D" and forward to the end of the search window must have matched input, and these are the (previously seen) characters that comprise a single run unit of length "L"R, which must equal "D". Then as the search pointer proceeds past the search window and forward, as far as the run pattern repeats in the input, the search and input pointers will be in sync and match characters until the run pattern is interrupted. Then "L" characters have been matched in total, "L" > "D", and the code is ["D", "L", "c"].