interface IStackWithOptions extends IVStack { // declare a choice point for backtracking // (or a probabilistic choice point if it's a PStack) default void options(B currentFrame, IVF1... options) { options(currentFrame, arrayIterator(options)); } void options(B currentFrame, Iterable> options); // if options list is empty, return null default void optionsOrReturn(B currentFrame, Cl> options) { if (empty(options)) _return(); else options(currentFrame, options); } }