public static void positionCaret(@NotNull ModPsiNavigator updater, @NotNull PsiElement firstMember, boolean toEditMethodBody) {
    LOG.assertTrue(firstMember.isValid());
    Project project = firstMember.getProject();

    if (toEditMethodBody) {
      PsiMethod method = (PsiMethod)firstMember;
      PsiCodeBlock body = method.getBody();
      if (body != null) {
        PositionInfo info = getPositionInfo(body);

        updater.moveCaretTo(Math.min(info.start(), info.end()));
        if (info.start() < info.end()) {
          //Not an empty body
          updater.select(TextRange.create(info.start(), info.end()));
        } else if (info.adjustLineIndent()) {
          Document document = firstMember.getContainingFile().getViewProvider().getDocument();
          RangeMarker marker = document.createRangeMarker(info.start(), info.start());
          PsiDocumentManager.getInstance(project).doPostponedOperationsAndUnblockDocument(document);
          if (marker.isValid()) {
            CodeStyleManager.getInstance(project).adjustLineIndent(document, marker.getStartOffset());
          }
        }
        return;
      }
    }

    int offset = getOffsetInMethod(firstMember);
    updater.moveCaretTo(offset);
  }
public static void positionCaret(@NotNull ModPsiNavigator updater, @NotNull PsiElement firstMember, boolean toEditMethodBody)