private String generate(CommentTracker ct) {
      StringBuilder sb = new StringBuilder();
      PsiElement label = ContainerUtil.find(myUsedElements, e -> e instanceof PsiSwitchLabelStatement);
      if (label != null) {
        sb.append(ct.commentsBefore(label.getFirstChild()));
      }
      if (!myCaseExpressions.isEmpty()) {
        String labels = StreamEx.of(myCaseExpressions).map(ct::textWithComments).joining(",");
        sb.append("case");
        if (!labels.startsWith(" ")) {
          sb.append(" ");
        }
        sb.append(labels);
      }
      else if (!myIsDefault) {
        sb.append("case ");
      }
      if (myIsDefault) {
        if (!myCaseExpressions.isEmpty()) {
          sb.append(",");
        }
        sb.append("default");
      }
      if (myGuard != null) {
        sb.append(" when ").append(ct.text(myGuard));
      }
      grabCommentsBeforeColon(label, ct, sb);
      sb.append("->");
      sb.append(myRuleResult.generate(ct, this));
      return sb.toString();
    }
private String generate(CommentTracker ct)