anchor.diff:    |> List.exists (fun item ->
        hasDocs item || bodyHasDocs item)
   
  +let isObsolete (item: Item) =
  +  item.Attr
  +  |> List.exists (List.exists (fst >> (=) "Obsolete"))
  +
   let needsSummary item =
  -  hasDocs item || bodyHasDocs item
  +  not (isObsolete item) && (hasDocs item || bodyHasDocs item)
   
   let rec printSummary wr id2items deep inSection toSection drop item =
     let indent = max (item.Indent - drop) 0
  
positive.code:   printTokens wr id2items " " (Some "dec") "def" model.Id model.Path model.Kind model.Tokens
    fprintf wr "</pre>\n"
    model.Body
    |> Seq.iter (fun item ->
       fprintf wr "<pre>"
       printSummary wr id2items true (Some "dec") "def" 0 item
  
negative.code:   fprintf wr "\n"
    if deep then
      item.Body
      |> Seq.filter (isObsolete >> not)
      |> Seq.iter (printSummary wr id2items deep inSection toSection drop)
    else
      if not (List.exists (fun item -> Option.isSome item.Id) item.Body) then
  