y uses `patternProperties` to describe its
            internal structure, handle this with a bit of recursion.
            Types are grouped by pattern format. Note that we ignore
            patterns without a format as the current definitions
            always have a single pattern, but we might need to handle
            them later to differentiate schemas according to patterns.
        */}}

        {{/*
            Construct a map from format ID to the type string of the format.
        */}}
        