FilterList with MUST_PASS_ONE choose the minimal forward step among sub-filter in filter list.
Let's call it: The Minimal Step Rule. So if filter-A in filter list return INCLUDE and filter-B
in filter list return INCLUDE_AND_NEXT_COL, then the filter list should return INCLUDE. For
SEEK_NEXT_USING_HINT, it's more special, because we do not know how far it will forward, so we
use SKIP by default.
The jump step will be:
INCLUDE < SKIP < INCLUDE_AND_NEXT_COL < NEXT_COL < INCLUDE_AND_SEEK_NEXT_ROW < NEXT_ROW < SEEK_NEXT_USING_HINT
Here, we have the following map to describe The Minimal Step Rule. if current return code (for
previous sub-filters in filter list) is
ReturnCode, and current filter returns
localRC, then we should return map[ReturnCode][localRC] for the merged result,
according to The Minimal Step Rule.
LocalCode\ReturnCode INCLUDE INCLUDE_AND_NEXT_COL INCLUDE_AND_SEEK_NEXT_ROW SKIP NEXT_COL NEXT_ROW SEEK_NEXT_USING_HINT
INCLUDE INCLUDE INCLUDE INCLUDE INCLUDE INCLUDE INCLUDE INCLUDE
INCLUDE_AND_NEXT_COL INCLUDE INCLUDE_AND_NEXT_COL INCLUDE_AND_NEXT_COL INCLUDE INCLUDE_AND_NEXT_COL INCLUDE_AND_NEXT_COL INCLUDE
INCLUDE_AND_SEEK_NEXT_ROW INCLUDE INCLUDE_AND_NEXT_COL INCLUDE_AND_SEEK_NEXT_ROW INCLUDE INCLUDE_AND_NEXT_COL INCLUDE_AND_SEEK_NEXT_ROW INCLUDE
SKIP INCLUDE INCLUDE INCLUDE SKIP SKIP SKIP SKIP
NEXT_COL INCLUDE INCLUDE_AND_NEXT_COL INCLUDE_AND_NEXT_COL SKIP NEXT_COL NEXT_COL SKIP
NEXT_ROW INCLUDE INCLUDE_AND_NEXT_COL INCLUDE_AND_SEEK_NEXT_ROW SKIP NEXT_COL NEXT_ROW SKIP
SEEK_NEXT_USING_HINT INCLUDE INCLUDE INCLUDE SKIP SKIP SKIP SEEK_NEXT_USING_HINT