public static Keyword continueSpecialistProof(ControlFrame frame, Keyword lastmove) {
    { Proposition proposition = frame.proposition;
      NamedDescription description = Logic.getDescription(((Surrogate)(proposition.operator)));
      java.lang.reflect.Method specialistcode = NamedDescription.lookupSpecialist(description);
      Keyword result = Logic.KWD_FAILURE;

      if ((specialistcode != null) &&
          NamedDescription.specialistApplicableP(description, proposition)) {
        if (Logic.$POWERLOOM_EXECUTION_MODE$ == Logic.KWD_DEBUG) {
          result = ((Keyword)(edu.isi.stella.javalib.Native.funcall(specialistcode, null, new java.lang.Object [] {frame, lastmove})));
        }
        else {
          try {
            result = ((Keyword)(edu.isi.stella.javalib.Native.funcall(specialistcode, null, new java.lang.Object [] {frame, lastmove})));
          } catch (java.lang.Exception ne) {
            {
              Stella.STANDARD_WARNING.nativeStream.println("Warning: Exception executing specialist for `" + description + "': ");
              Stella.STANDARD_WARNING.nativeStream.println("`" + ne + "'");
            }
;
          }
        }
        if (frame.truthValue == null) {
          if ((result == Logic.KWD_FINAL_SUCCESS) ||
              (result == Logic.KWD_CONTINUING_SUCCESS)) {
            ControlFrame.setFrameTruthValue(frame, Logic.TRUE_TRUTH_VALUE);
          }
          else {
          }
        }
      }
      return (result);
    }
  }