public static Type FindPropertyType(Object targetObject, string propertyPath)
        {
            var parser      = new PathParser(propertyPath);
            var currentType = targetObject.GetType();

            var next = parser.Next();

            while (next != null)
            {
                currentType = FindFieldType(currentType, next);
                next        = parser.Next();
            }

            return(currentType);
        }