Since the pattern matching is much more reliable (various retries and attempts, finding best data samples, sliding data window and so on) and better at handling complexity than the generic format solver ever was, we might as well get rid off most of the older method and use the pattern matching instead.
Any segments that have been identified as a known pattern (protection, that is) all have their special attributes set by the pattern matching, the rest is set when analysed by the format solver. We could add a second set of descriptors that are generic enough to describe any block instead. First run the protection specific matching, then keep running each standard format pattern as long as they produce more results. If one pattern no longer gives results, try the next one. Repeat until everything gets resolved. If anything remains unresolved it’s obviously something that is unsupported, just warn about it and fail the process.
We still need a solver/block merger for interleaved data like the one we’ve seen on Titan - but the original generator would have needed that as well.