(4) I've overridden the usual Nonblocking and Global status for the various predicate routines, to essentially mark these as Pure. If Nonblocking => True is used, this would prevent calling the formal subprograms in the associated routines. But that shouldn't be necessary to implement these (they usually are direct queries on the container state). Can anyone think of a reason NOT to require these routines to be pure (in general or specifically)?