public SegmentNode(ISegmentVariant matcher) { Matcher = matcher; }
private static SegmentNode <TRequest, TResponse>?FindSegmentInNode(SegmentNode <TRequest, TResponse>?node, ISegmentVariant segment) { return(segment switch { Root _ => node, Literal literal => FindSegmentInNodeList(node?.LiteralChildren, literal), Parameter parameter => FindSegmentInNodeList(node?.ParameterChildren, parameter), _ => throw new InvalidOperationException() });