sclass CutListToBudget { settable double maxPrice; settable Iterable inputList; gettable L outputList; gettable double finalPrice; swappable double getPrice(A element) { throw unimplemented(); } *(IF1 *getPrice, double *maxPrice, Iterable *inputList) {} run { outputList = new L; finalPrice = 0; fOr (element : inputList) { double price = getPrice(element); if (finalPrice + price > maxPrice) break; finalPrice += price; outputList.add(element); } } L get() { if (outputList == null) run(); ret outputList; } }