!((context.getType() == PropagationContext.RETRACTION || context.getType() == PropagationContext.MODIFICATION) // retract and modifies clean up themselves
&&
context.getFactHandle() == bfh) ) {
if ( sBeliefSet.getWorkingMemoryAction() == null ) {
WorkingMemoryAction action = new LogicalCallback( bfh,
context,
node.getJustifier(),
false,
true );
ep.enQueueWorkingMemoryAction( action );
sBeliefSet.setWorkingMemoryAction( action );
} else {
// was previous scheduled, so make sure it's a full retract and not an update
LogicalCallback callback = ( LogicalCallback ) sBeliefSet.getWorkingMemoryAction();
callback.setUpdate( false );
callback.setFullyRetract( true );
}
} else if ( !beliefSet.isEmpty() && beliefSet.getFactHandle().getObject() == node.getObject() ) {
// prime has changed, to update new object
// Equality might have changed on the object, so remove (which uses the handle id) and add back in
((NamedEntryPoint)bfh.getEntryPoint()).getObjectStore().updateHandle( bfh, ((LinkedListEntry<LogicalDependency>) beliefSet.getFirst()).getObject().getObject() );
if ( sBeliefSet.getWorkingMemoryAction() == null ) {
// Only schedule if we don't already have one scheduled
WorkingMemoryAction action = new LogicalCallback( bfh,
context,
node.getJustifier(),
true,
false );
ep.enQueueWorkingMemoryAction( action );