public boolean cutoffPartialMatchP(boolean traceP) {
    { WhynotPartialMatch self = this;

      { double score = self.positiveScore;
        double scorecutoff = self.dynamicCutoff;
        int unknowngoalcutoff = self.unknownGoalCutoff;
        boolean cutoffP = false;

        if ((score == Stella.NULL_FLOAT) ||
            ((scorecutoff == Stella.NULL_FLOAT) ||
             (scorecutoff == 0.0))) {
          cutoffP = false;
        }
        else if (scorecutoff < 0.0) {
          cutoffP = score > scorecutoff;
        }
        else {
          cutoffP = score < scorecutoff;
        }
        if ((!cutoffP) &&
            (unknowngoalcutoff != Stella.NULL_INTEGER)) {
          cutoffP = self.numberOfFailedSubgoals() > unknowngoalcutoff;
          if (cutoffP &&
              traceP) {
            System.out.println("*** Cutting off search, more than " + unknowngoalcutoff + " failed subgoal(s)");
          }
        }
        return (cutoffP);
      }
    }
  }