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); }