Determine minimum and maximum match length.
This optimization is used in match for early rejection of input names that are either too short or too long.
ProtectedbuildProtectedcomputeProtectedmatchRecognize part of the input name.
OptionallastMatch: MatchStateIterable of potential matches.
Protected StaticbuildBuild part of an output name.
Iterable of potential constructions.
Protected Staticmatch
Specify several overlapped patterns in "AND" relation.
Remarks
When matching a name, every branch of this pattern must extract the same number of name components, and their variables must be consistent.
When building a name, one branch is used to build the name as long as all required variables are present, and then the built name must match all branches.