protected override void Inject(object source, object target)
        {
            foreach (PropertyDescriptor t in target.GetProps())
            {
                var t1 = t;
                var es = UberFlatter.Flat(t.Name, source, type => TypesMatch(type, t1.PropertyType));

                if (es.Count() == 0)
                {
                    continue;
                }
                var endpoint = es.First();
                if (endpoint == null)
                {
                    continue;
                }
                var val = endpoint.Property.GetValue(endpoint.Component);

                if (AllowSetValue(val))
                {
                    t.SetValue(target, SetValue(val));
                }
            }
        }