public void Compare(IEnumerable <Type> types, out IList <Type> intersected, out IList <Type> missing, out IList <Type> extra)
        {
            var actual   = GetDescendantNodes(this).OfType <TypeArchNode>().Select(i => i.Value);
            var expected = types.Where(IsSupported);

            EnumerableExtensions.Compare(actual, expected, out intersected, out missing, out extra);
        }