public static Keyword tryScanCollectionProof(ControlFrame frame) {
    { Proposition proposition = frame.proposition;
      Vector arguments = proposition.arguments;
      Stella_Object memberarg = (arguments.theArray)[0];
      Iterator iterator = ((Iterator)(KeyValueList.dynamicSlotValue(frame.dynamicSlots, Logic.SYM_STELLA_ITERATOR, null)));

      if (iterator == null) {
        { Description collection = Proposition.extractCollectionArgument(proposition);
          List members = null;

          { boolean collectdirectmembersonlyP = Description.inferableP(collection);

            members = Logic.assertedCollectionMembers(collection, collectdirectmembersonlyP);
            if (!collectdirectmembersonlyP) {
              NamedDescription.updateObservedCardinality(((NamedDescription)(collection)), members.length());
            }
          }
          if (members == null) {
            return (Logic.KWD_FAILURE);
          }
          iterator = ((ListIterator)(members.allocateIterator()));
          KeyValueList.setDynamicSlotValue(frame.dynamicSlots, Logic.SYM_STELLA_ITERATOR, iterator, null);
        }
      }
      while (iterator.nextP()) {
        if (PatternVariable.bindVariableToValueP(((PatternVariable)(memberarg)), Logic.valueOf(iterator.value), true)) {
          return (Logic.KWD_CONTINUING_SUCCESS);
        }
      }
      return (Logic.KWD_FAILURE);
    }
  }