docs: public CcgParseResult parse(AnnotatedSentence sentence, ChartCost inputFilter) {
      AnnotatedSentence annotatedSentence = null;
      if (supertagger != null) {
        for (int i = 0; i < multitagThresholds.length; i++) {
          // Try parsing at each multitag threshold. If parsing succeeds,
          // immediately return the parse. Otherwise, continue to further
          // thresholds.
          List<WordAndPos> supertaggerInput = sentence.getWordsAndPosTags();
          ListSupertaggedSentence supertaggedSentence = supertagger
              .multitag(supertaggerInput, multitagThresholds[i]);
          
          annotatedSentence = sentence.addAnnotation(supertaggerAnnotationName,
              supertaggedSentence.getAnnotation());
  
          CcgParse parse = inference.getBestParse(parser, annotatedSentence, inputFilter,
              new NullLogFunction());
          if (parse != null) {
            return new CcgParseResult(parse, annotatedSentence, multitagThresholds[i]);
          }
        }
        // Parsing was unsuccessful at all thresholds
        return null;
      } else {
        CcgParse parse = inference.getBestParse(parser, sentence, inputFilter, new NullLogFunction());
        if (parse != null) {
          return new CcgParseResult(parse, sentence, 0.0);
        } else {
          return null;
        }
      }
    }