protected virtual object ResolveQualifiedName(Type targetType, object target, string[] name)
        {
            string       cacheKey = PropertyPath.GetCacheKey(targetType, name);
            PropertyPath path     = null;

            _propCache.TryGetValue(cacheKey, out path);

            if (path == null)
            {
                path = PropertyPath.Compile(targetType, name);
                if (path != null)
                {
                    _propCache[cacheKey] = path;
                }
            }

            if (path != null)
            {
                return(path.Evaluate(target));
            }
            return(null);
        }