protected override CodeFoldingResult GetCodeFoldingResult(out int firstErrorOffset)
        {
            var document = codeEditor.TextEditor.Document;
            var result   = new CodeFoldingResult();

            var foldingContext = new CSharpCodeFoldingContext(document);
            var v = new FoldingVisitor();

            v.document = foldingContext.Document;
            foldingContext.SyntaxTree.AcceptVisitor(v);
            result.FoldingData = v.foldings.OrderBy(x => x.StartOffset).ToList();

            var firstError = foldingContext.SyntaxTree.Errors.FirstOrDefault();

            firstErrorOffset = firstError != null
        ? foldingContext.Document.GetOffset(firstError.Region.Begin)
        : int.MaxValue;

            return(result);
        }
    protected override CodeFoldingResult GetCodeFoldingResult(out int firstErrorOffset) {
      var document = codeEditor.TextEditor.Document;
      var result = new CodeFoldingResult();

      try {
        var foldingContext = new CSharpCodeFoldingContext(document);
        var v = new FoldingVisitor();
        v.document = foldingContext.Document;
        foldingContext.SyntaxTree.AcceptVisitor(v);
        result.FoldingData = v.foldings.OrderBy(x => x.StartOffset).ToList();

        var firstError = foldingContext.SyntaxTree.Errors.FirstOrDefault();
        firstErrorOffset = firstError != null
          ? foldingContext.Document.GetOffset(firstError.Region.Begin)
          : int.MaxValue;
      } catch {
        // ignore exceptions thrown during code folding
        firstErrorOffset = int.MaxValue;
      }

      return result;
    }