protected Block getRootBlock(PsiElement element, FileViewProvider viewProvider, CodeStyleSettings settings) {
    ASTNode node = element.getNode();
    if (node == null) {
      return createDummyBlock(null);
    }
    if (viewProvider instanceof TemplateLanguageFileViewProvider) {
      final Language dataLanguage = ((TemplateLanguageFileViewProvider)viewProvider).getTemplateDataLanguage();
      final FormattingModelBuilder builder = LanguageFormatting.INSTANCE.forLanguage(dataLanguage);
      if (builder instanceof DelegatingFormattingModelBuilder && ((DelegatingFormattingModelBuilder)builder).dontFormatMyModel(element)) {
        return createDummyBlock(node);
      }
      if (builder != null) {
        final FormattingModel model =
          builder.createModel(FormattingContext.create(viewProvider.getPsi(dataLanguage), settings));
        List<DataLanguageBlockWrapper> childWrappers = buildChildWrappers(model.getRootBlock());
        if (childWrappers.size() == 1) {
          childWrappers = buildChildWrappers(childWrappers.get(0).getOriginal());
        }
        return createTemplateLanguageBlock(node, Wrap.createWrap(WrapType.NONE, false), null,
                                           filterBlocksByRange(childWrappers, node.getTextRange()), settings);
      }
    }
    return createTemplateLanguageBlock(node, Wrap.createWrap(WrapType.NONE, false), null, Collections.emptyList(), settings);
  }
protected Block getRootBlock(PsiElement element, FileViewProvider viewProvider, CodeStyleSettings settings)