public static Keyword oldInterpretAndScores(ControlFrame frame, Keyword lastmove) {
    if (lastmove == Logic.KWD_DOWN) {
      { PartialMatchFrame pmf = frame.partialMatchFrame;

        if (pmf == null) {
          ControlFrame.createAndLinkPartialMatchFrame(frame, Logic.KWD_AND);
        }
        else {
          {
            while (frame.partialMatchFrame.argumentScores.length() > frame.argumentCursor) {
              frame.partialMatchFrame.popPartialMatchScore();
            }
            pmf.setDynamicCutoff();
          }
        }
      }
    }
    else if ((lastmove == Logic.KWD_UP_TRUE) ||
        (lastmove == Logic.KWD_UP_FAIL)) {
      { PartialMatchFrame pmf = frame.partialMatchFrame;
        int arity = frame.proposition.arguments.length();
        int i = 0;

        pmf.successP = lastmove == Logic.KWD_UP_TRUE;
        ControlFrame.recordLatestPartialMatchScore(frame);
        if (Stella_Object.traceKeywordP(Logic.KWD_GOAL_TREE)) {
          System.out.println(((FloatWrapper)(KeyValueList.dynamicSlotValue(((QueryIterator)(Logic.$QUERYITERATOR$.get())).dynamicSlots, Logic.SYM_LOGIC_LATEST_POSITIVE_SCORE, Stella.NULL_FLOAT_WRAPPER))).wrapperValue + ", " + frame.partialMatchFrame.computeAndScore());
        }
        if (!(pmf.unboundVars == Stella.NIL)) {
          KeyValueList.setDynamicSlotValue(((QueryIterator)(Logic.$QUERYITERATOR$.get())).dynamicSlots, Logic.SYM_LOGIC_LATEST_POSITIVE_SCORE, FloatWrapper.wrapFloat(0.0), Stella.NULL_FLOAT_WRAPPER);
          loop001 : for (;;) {
            { boolean testValue000 = false;

              testValue000 = (frame.argumentCursor + 1) < arity;
              if (testValue000) {
                { boolean foundP000 = false;

                  { Stella_Object var = null;
                    Cons iter000 = Proposition.getUnboundVariables(((Proposition)((frame.proposition.arguments.theArray)[(frame.argumentCursor + 1)])));

                    loop002 : for (;!(iter000 == Stella.NIL); iter000 = iter000.rest) {
                      var = iter000.value;
                      if (Stella_Object.searchConsTreeP(pmf.unboundVars, var)) {
                        foundP000 = true;
                        break loop002;
                      }
                    }
                  }
                  testValue000 = foundP000;
                }
              }
              if (!(testValue000)) {
                break loop001;
              }
            }
            i = i + 1;
            frame.argumentCursor = frame.argumentCursor + 1;
            ControlFrame.recordLatestPartialMatchScore(frame);
          }
          pmf.unboundVars = Stella.NIL;
          if (Stella_Object.traceKeywordP(Logic.KWD_GOAL_TREE)) {
            System.out.println("   *** Skipping " + i + " propositions . . .");
          }
        }
        if (Logic.$FAIL_UNBOUND_CLAUSESp$) {
          while (((frame.argumentCursor + 1) < arity) &&
              Proposition.allVariablesUnboundP(((Proposition)((frame.proposition.arguments.theArray)[(frame.argumentCursor + 1)])))) {
            i = i + 1;
            frame.argumentCursor = frame.argumentCursor + 1;
            KeyValueList.setDynamicSlotValue(((QueryIterator)(Logic.$QUERYITERATOR$.get())).dynamicSlots, Logic.SYM_LOGIC_LATEST_POSITIVE_SCORE, FloatWrapper.wrapFloat(0.0), Stella.NULL_FLOAT_WRAPPER);
            ControlFrame.recordLatestPartialMatchScore(frame);
          }
          if ((i > 0) &&
              Stella_Object.traceKeywordP(Logic.KWD_GOAL_TREE)) {
            System.out.println("   *** Skipping " + i + " propositions . . .");
          }
        }
        if (ControlFrame.computePartialMatchAndFailureP(frame)) {
          lastmove = Logic.KWD_UP_FAIL;
        }
        else if (((frame.argumentCursor + 1) == arity) &&
            (!ControlFrame.computePartialMatchScoreP(frame))) {
          lastmove = Logic.KWD_UP_FAIL;
        }
        else {
          lastmove = Logic.KWD_UP_TRUE;
        }
      }
    }
    else {
      { OutputStringStream stream000 = OutputStringStream.newOutputStringStream();

        stream000.nativeStream.print("`" + lastmove + "' is not a valid case option");
        throw ((StellaException)(StellaException.newStellaException(stream000.theStringReader()).fillInStackTrace()));
      }
    }
    if ((lastmove == Logic.KWD_UP_FAIL) &&
        (frame.down != null)) {
      frame.down = null;
    }
    return (lastmove);
  }