public static void AppendException(this RichTextBox box, Exception ex, int depth = 0)
 {
     if (depth == 0)
     {
         box.StartTimestamp();
     }
     if (ex != null)
     {
         System.Diagnostics.Debug.WriteLine(ex.Message + " " + ex.GetType());
         System.Diagnostics.Debug.WriteLine("depth = " + depth);
         box.AppendText(new string(' ', depth));
         if (ex is ModelTransformationComponent.TransformComponentException)
         {
             if (ex is ModelTransformationComponent.SyntaxErrorPlaced se)
             {
                 box.AppendText("[", Color.Black);
                 box.AppendText(se.Line.ToString(), Color.Blue);
                 box.AppendText(",", Color.Black);
                 box.AppendText(se.Symbol.ToString(), Color.Blue);
                 box.AppendText("] ", Color.Black);
                 box.AppendText(se.TrimedMsg, Color.Red);
             }
             else
             {
                 box.AppendText(ex.Message, Color.Red);
             }
         }
         else
         {
             box.AppendText("Unexpected exception\n", Color.Red);
             box.AppendText(new string(' ', depth));
             box.AppendText(ex.Message, Color.Red);
         }
         box.AppendText("\n");
         box.AppendException(ex.InnerException, depth + 4);
     }
     else
     {
         box.EndTimestamp();
     }
 }