private void doBuildInsertionSuffixMarkup(@NotNull YamlInsertionMarkup markup,
                                            boolean manyNotOne,
                                            @NotNull ForcedCompletionPath.Iteration iteration) {
    markup.append(":");
    markup.doTabbedBlock(manyNotOne ? 2 : 1, () -> {
      markup.newLineAndTabs(manyNotOne);

      List<Field> allRequired =
        ContainerUtil.filter(myFeatures, field -> field.isRequired() || iteration.isNextOnPath(field));
      if (allRequired.isEmpty() && iteration.isEndOfPathReached()) {
        markup.appendCaret();
      }
      else {
        for (Iterator<Field> iterator = allRequired.iterator(); iterator.hasNext(); ) {
          Field field = iterator.next();
          buildCompleteKeyMarkup(markup, field, iteration.nextIterationFor(field));
          if (iterator.hasNext()) {
            markup.newLineAndTabs();
          }
        }
      }
    });
  }
private void doBuildInsertionSuffixMarkup(@NotNull YamlInsertionMarkup markup,
                                            boolean manyNotOne,
                                            @NotNull ForcedCompletionPath.Iteration iteration)