public override PropertyTreeMetaObject Process(PropertyTreeBinderImpl parent, PropertyTreeMetaObject target, PropertyTreeNavigator self, NodeList children)
            {
                Predicate <PropertyTreeNavigator> predicate = ImplicitDirective(target, "base");

                var node = children.FindAndRemove(predicate).FirstOrDefault();

                Uri baseUri;
                IServiceProvider serviceProvider;

                if (node == null)
                {
                    baseUri         = self.BaseUri;
                    serviceProvider = parent;
                }
                else
                {
                    baseUri         = Utility.NewUri(Convert.ToString(node.Value));
                    serviceProvider = parent.GetBasicServices(node);
                }
                return(target.BindBaseUri(baseUri, serviceProvider));
            }