https://bugs.chromium.org/p/oss-fuzz/issues/detail?id=56270
sub.reserve(info.n_subs);
            for (size_t i = 0; i < info.n_subs; ++i) {
                sub.push_back(std::move(*(stack.end() - info.n_subs + i)));
            }
            stack.erase(stack.end() - info.n_subs, stack.end());
            
            NodeRef node;
            if (info.keys.empty()) {
                node = MakeNodeRef(info.fragment, std::move(sub), std::move(info.hash), info.k);
            } else {
                assert(sub.empty());
                assert(info.hash.empty());
                node = MakeNodeRef(info.fragment, std::move(info.keys), info.k);
            }
            
            if (!node || !(node->GetType() << type_needed)) {
                assert(!strict_valid);
                return {};
            }
            if (!node->IsValid()) return {};
            
            stack.push_back(std::move(node));
            todo.pop_back();
        }
    }
    assert(stack.size() == 1);
    stack[0]->DuplicateKeyCheck(KEY_COMP);
    return std::move(stack[0]);
}
void TestNode(const NodeRef& node, FuzzedDataProvider& provider)