public static IEnumerable <PropertyWithComponent> Flat(string flatPropertyName, object source, Func <Type, bool> f, StringComparison comparison)
        {
            var trails = TrailFinder.GetTrails(flatPropertyName, source.GetType().GetInfos(), f, comparison);

            return(trails.Select(trail => Tunnelier.GetValue(trail, source)));
        }
        public static IEnumerable <PropertyWithComponent> Unflat(string flatPropertyName, object target, Func <Type, bool> f, StringComparison comparison)
        {
            var trails = TrailFinder.GetTrails(flatPropertyName, target.GetType().GetInfos(), f, comparison);

            return(trails.Select(trail => Tunnelier.Digg(trail, target)));
        }