docs: public ImmutableList<SoyMsgPart> lookupCase(long pluralValue, @Nullable ULocale locale) {
      // TODO(lukes): clean up this method, the control flow is overly complex.  It could be cleaned
      // up by separating cases into 3 different lists.
  
      // Handle cases.
      ImmutableList<SoyMsgPart> caseParts = null;
  
      // Check whether the plural value matches any explicit numeric value.
      boolean hasNonExplicitCases = false;
      ImmutableList<SoyMsgPart> otherCaseParts = null;
      for (Case<SoyMsgPluralCaseSpec> case0 : getCases()) {
  
        SoyMsgPluralCaseSpec pluralCaseSpec = case0.spec();
        SoyMsgPluralCaseSpec.Type caseType = pluralCaseSpec.getType();
        if (caseType == SoyMsgPluralCaseSpec.Type.EXPLICIT) {
          if (pluralCaseSpec.getExplicitValue() == pluralValue) {
            caseParts = case0.parts();
            break;
          }
  
        } else if (caseType == SoyMsgPluralCaseSpec.Type.OTHER) {
          otherCaseParts = case0.parts();
  
        } else {
          hasNonExplicitCases = true;
        }
      }
  
      if (caseParts == null && hasNonExplicitCases) {
        // Didn't match any numeric value.  Check which plural rule it matches.
        String pluralKeyword = PluralRules.forLocale(locale).select(pluralValue - offset);
        SoyMsgPluralCaseSpec.Type correctCaseType = new SoyMsgPluralCaseSpec(pluralKeyword).getType();
  
        // Iterate the cases once again for non-numeric keywords.
        for (Case<SoyMsgPluralCaseSpec> case0 : getCases()) {
  
          if (case0.spec().getType() == correctCaseType) {
            caseParts = case0.parts();
            break;
          }
        }
      }
  
      if (caseParts == null) {
        // Fall back to the "other" case. This can happen either if there aren't any non-specific
        // cases, or there is not the non-specific case that we need.
        caseParts = otherCaseParts;
      }
      return checkNotNull(caseParts);
    }