anchor.diff:                XAttribute(xname "time", timeSpanToStr duration))
           acc.Add(testCase)
           acc
  -      let suite = inner (XElement(xname "testsuite")) result
  -      let summary = result |> Summary.collectSummary Summary.empty
  -      suite.Add(
  -        XAttribute(xname "timestamp", DateTime.Now.ToString()),
  -        XAttribute(xname "tests", summary.Run),
  -        XAttribute(xname "failures", summary.Violated),
  -        XAttribute(xname "errors", summary.Error),
  -        XAttribute(xname "skipped", summary.Skipped)
  +      let results = ResizeArray<XElement * Summary>()
  +      inner results (element ()) result
  +      |> summary results result
  +      |> results.Add
  +      results
  +      |> Seq.choose (fun (x, _) ->
  +        if Seq.isEmpty <| x.Elements() then None
  +        else Some x
         )
  -      suite
   
       let addSummary (watch: Stopwatch) results (suites: XElement) =
         let summary = results |> Seq.fold Summary.collectSummary { Summary.empty with Duration = watch.Elapsed }
  
positive.code: 
    module XmlFormatter =
  
      open System.Xml
      open System.Xml.Linq
      open SummaryFormatter
  
      let private xname name = XName.Get(name)
  
      let timeSpanToStr (span: TimeSpan) = sprintf "%.3f" span.TotalSeconds
  
      let private toXDocument result =
        let rec inner (acc: XElement) = function
        | EndMarker -> acc
        | ContextResult contextResult ->
          let name =
            match acc.Attribute(xname "name") with
            | null -> contextResult.Context.DisplayName
            | x ->
              x.Remove()
              sprintf "%s.%s" x.Value contextResult.Context.DisplayName
          let nameAttr = XAttribute(xname "name", name)
          acc.Add(nameAttr)
          contextResult.Results |> Seq.fold inner acc
        | TestResult tr ->
          let testCase =
            XElement(
  
negative.code:     let junitStyle watch =
        { new IFormatter<ResultNode seq> with
          member __.Format(results: ResultNode seq) =
            let xdocument = XDocument(XElement(xname "testsuites", results |> Seq.collect toXElements) |> addSummary watch results)
            Writable.xdocument(xdocument)
        }
  