https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=56270
const auto dsat{subs[0]->ss.dsat + subs[1]->ss.dsat};
                return {sat, dsat};
            }
            case Fragment::OR_C: return {subs[0]->ss.sat | (subs[0]->ss.dsat + subs[1]->ss.sat), {}};
            case Fragment::OR_D: return {subs[0]->ss.sat | (subs[0]->ss.dsat + subs[1]->ss.sat), subs[0]->ss.dsat + subs[1]->ss.dsat};
            case Fragment::OR_I: return {(subs[0]->ss.sat + 1) | (subs[1]->ss.sat + 1), (subs[0]->ss.dsat + 1) | (subs[1]->ss.dsat + 1)};
            case Fragment::MULTI: return {k + 1, k + 1};
            case Fragment::WRAP_A:
            case Fragment::WRAP_N:
            case Fragment::WRAP_S:
            case Fragment::WRAP_C: return subs[0]->ss;
            case Fragment::WRAP_D: return {1 + subs[0]->ss.sat, 1};
            case Fragment::WRAP_V: return {subs[0]->ss.sat, {}};
            case Fragment::WRAP_J: return {subs[0]->ss.sat, 1};
            case Fragment::THRESH: {
                auto sats = Vector(internal::MaxInt<uint32_t>(0));
                for (const auto& sub : subs) {
                    auto next_sats = Vector(sats[0] + sub->ss.dsat);
                    for (size_t j = 1; j < sats.size(); ++j) next_sats.push_back((sats[j] + sub->ss.dsat) | (sats[j - 1] + sub->ss.sat));
                    next_sats.push_back(sats[sats.size() - 1] + sub->ss.sat);
                    sats = std::move(next_sats);
                }
                assert(k <= sats.size());
                return {sats[k], sats[0]};
            }
        }
        assert(false);
    }
    template<typename Ctx>
    internal::InputResult ProduceInput(const Ctx& ctx) const {