protected override bool TryCreateProxy(object source, ObjectSourceDescription description, out ISourceProxy proxy)
        {
            proxy = null;
            var path = description.Path;

            if (path.Count <= 0)
            {
                if (log.IsWarnEnabled)
                {
                    log.Warn("Unable to bind: an empty path node list!.");
                }
                return(false);
            }

            PathToken token = path.AsPathToken();

            if (path.Count == 1)
            {
                proxy = this.Create(source, token);
                if (proxy != null)
                {
                    return(true);
                }
                return(false);
            }

            proxy = new ChainedObjectSourceProxy(source, token, this);
            return(true);
        }
        protected override bool TryCreateProxy(object source, ObjectSourceDescription description, out ISourceProxy proxy)
        {
            proxy = null;
            var path = description.Path;

            if (path.Count <= 0)
            {
                throw new ProxyException("The path nodes of the ObjectSourceDescription \"{0}\" is empty.", description.ToString());
            }

            PathToken token = path.AsPathToken();

            if (path.Count == 1)
            {
                proxy = this.Create(source, token);
                if (proxy != null)
                {
                    return(true);
                }
                return(false);
            }

            proxy = new ChainedObjectSourceProxy(source, token, this);
            return(true);
        }