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 =
  -  not (isObsolete item) && (hasDocs item || bodyHasDocs 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 " " false (Some "dec") "def" model.Id model.Path model.Kind model.Tokens
    fprintf wr "\n"
    model.Body
    |> Seq.filter (isObsolete >> not)
    |> Seq.iter ^ printSummary wr id2items true (Some "dec") "def" 0
    fprintf wr "</code></pre>\n"
    fprintf wr "<h2>Description</h2>\n"
  
negative.code:                         Indent = i
                          Tokens = tokens
                          Body = body}
              let items = if isObsolete item then items else item::items
              outside indent path items [] [] lines
           let tokens = summarize text
           match tokens with
            | T("namespace"|"module" as kind)::Id (id, _, path, []) ->
  