Since SpecParser.Parse replaces missing segments with null (which get replaced with any) there's no way to match for optional arguments. For example, this should match:
to:
new VersionSpec(2,"linux",string.Empty); // "2 [linux/unknown]"
but doesn't since SpecParser.Parse actually does a new VersionSpec(2, "linux", null);, resulting in a 2 [linux/any]