protected override void OnProcessOutputSchema(MutableObject newSchema)
        {
            if (MutableObject.KeyAContainsB(EntriesTarget.AbsoluteKey, Scope.AbsoluteKey))
            {
                throw new Exception("This scope combination will result in an infinitely nested mutable object.  Keys are " + EntriesTarget.AbsoluteKey + " and " + Scope.AbsoluteKey);
            }

            foreach (var entry in MetaScope.GetEntries(newSchema))
            {
                EntriesTarget.SetValue(
                    new List <MutableObject> {
                    Scope.GetEntries(entry).First().Last()
                }, entry);
            }

            Router.TransmitAllSchema(newSchema);
        }
        public override IEnumerator ReceivePayload(VisualPayload payload)
        {
            if (MutableObject.KeyAContainsB(EntriesTarget.AbsoluteKey, Scope.AbsoluteKey))
            {
                throw new Exception("This scope combination will result in an infinitely nested mutable object.  Keys are " + EntriesTarget.AbsoluteKey + " and " + Scope.AbsoluteKey);
            }

            foreach (var entry in MetaScope.GetEntries(payload.Data))
            {
                EntriesTarget.SetValue(DiscriminatedList(entry), entry);
            }

            var iterator = Router.TransmitAll(payload);

            while (iterator.MoveNext())
            {
                yield return(null);
            }
        }