public override sealed void OnRemove(Net.Vpc.Upa.Callbacks.RemoveEvent @event) /* throws Net.Vpc.Upa.Exceptions.UPAException */
        {
            Net.Vpc.Upa.Persistence.EntityExecutionContext executionContext = @event.GetContext();
            string name = @event.GetTrigger().GetName();

            System.Collections.Generic.ICollection <Net.Vpc.Upa.Key> collection = (System.Collections.Generic.ICollection <Net.Vpc.Upa.Key>)executionContext.GetObject <T>(name + ":toDelete");
            if (collection == null)
            {
                return;
            }
            executionContext.Remove(name + ":toDelete");
            if (!(collection.Count == 0))
            {
                AfterDeleteHelper(@event, CreateInCollection(@event.GetEntity(), collection));
            }
        }
        public override sealed void OnUpdate(Net.Vpc.Upa.Callbacks.UpdateEvent @event) /* throws Net.Vpc.Upa.Exceptions.UPAException */
        {
            // validate old references
            Net.Vpc.Upa.Persistence.EntityExecutionContext executioncontext = @event.GetContext();
            string name = @event.GetTrigger().GetName();

            System.Collections.Generic.ICollection <Net.Vpc.Upa.Key> collection = executioncontext.GetObject <T>(name + ":toUpdate");
            if (collection == null)
            {
                return;
            }
            executioncontext.Remove(name + ":toUpdate");
            Net.Vpc.Upa.Expressions.IdCollectionExpression inColl = null;
            if (!(collection.Count == 0))
            {
                inColl = CreateInCollection(@event.GetEntity(), collection);
                AfterUpdateHelper(@event, inColl);
            }
            // validate old references
            if (AcceptUpdateTableOlderValuesHelper(@event))
            {
                Net.Vpc.Upa.Expressions.Expression newUpdates = null;
                if (inColl != null)
                {
                    Net.Vpc.Upa.Expressions.Expression translated = TranslateExpression(@event.GetFilterExpression());
                    if (translated != null)
                    {
                        newUpdates = new Net.Vpc.Upa.Expressions.And(new Net.Vpc.Upa.Expressions.Not(inColl), translated);
                    }
                    else
                    {
                        newUpdates = new Net.Vpc.Upa.Expressions.Not(inColl);
                    }
                }
                else
                {
                    newUpdates = TranslateExpression(@event.GetFilterExpression());
                }
                AfterUpdateHelper(@event, newUpdates);
            }
        }