public static Iterator allocateDbtableSpecialistIterator(ControlFrame frame) {
    if (((Iterator)(KeyValueList.dynamicSlotValue(frame.dynamicSlots, RDBMS.SYM_STELLA_ITERATOR, null))) == null) {
      { Proposition proposition = frame.proposition;
        Surrogate relationref = ((Surrogate)(proposition.operator));
        NamedDescription relation = Logic.getDescription(relationref);

        RDBMS.checkForExternalDbUpdates(proposition, ((LogicObject)(Logic.accessBinaryValue(relation, RDBMS.SGT_RDBMS_DATABASE))));
        { MemoizationTable memoTable000 = null;
          Cons memoizedEntry000 = null;
          Stella_Object memoizedValue000 = null;

          if (Stella.$MEMOIZATION_ENABLEDp$) {
            memoTable000 = ((MemoizationTable)(RDBMS.SGT_RDBMS_F_ALLOCATE_DBTABLE_SPECIALIST_ITERATOR_MEMO_TABLE_000.surrogateValue));
            if (memoTable000 == null) {
              Surrogate.initializeMemoizationTable(RDBMS.SGT_RDBMS_F_ALLOCATE_DBTABLE_SPECIALIST_ITERATOR_MEMO_TABLE_000, "(:MAX-VALUES 1000 :TIMESTAMPS (:META-KB-UPDATE :EXTERNAL-DB-UPDATE))");
              memoTable000 = ((MemoizationTable)(RDBMS.SGT_RDBMS_F_ALLOCATE_DBTABLE_SPECIALIST_ITERATOR_MEMO_TABLE_000.surrogateValue));
            }
            memoizedEntry000 = MruMemoizationTable.lookupMruMemoizedValue(((MruMemoizationTable)(memoTable000)), RDBMS.getQueryPatternMemoizationKey(proposition), ((Context)(Stella.$CONTEXT$.get())), (((Boolean)(Logic.$REVERSEPOLARITYp$.get())).booleanValue() ? Stella.TRUE_WRAPPER : Stella.FALSE_WRAPPER), Stella.MEMOIZED_NULL_VALUE, 6);
            memoizedValue000 = memoizedEntry000.value;
          }
          if (memoizedValue000 != null) {
            if (memoizedValue000 == Stella.MEMOIZED_NULL_VALUE) {
              memoizedValue000 = null;
            }
          }
          else {
            memoizedValue000 = MemoizableIterator.newMemoizableIterator(RDBMS.allocateResultSetIterator(RDBMS.getConnectionFromPredicate(relationref), relation, RDBMS.createSqlFromProposition(proposition)));
            if (Stella.$MEMOIZATION_ENABLEDp$) {
              memoizedEntry000.value = ((memoizedValue000 == null) ? Stella.MEMOIZED_NULL_VALUE : memoizedValue000);
            }
          }
          KeyValueList.setDynamicSlotValue(frame.dynamicSlots, RDBMS.SYM_STELLA_ITERATOR, MemoizableIterator.cloneMemoizedIterator(((MemoizableIterator)(memoizedValue000))), null);
        }
      }
    }
    return (((Iterator)(KeyValueList.dynamicSlotValue(frame.dynamicSlots, RDBMS.SYM_STELLA_ITERATOR, null))));
  }