anchor.diff:  let trim s = (indentOf s, s.Trim ())
   
   let input (file: string) =
  -  use r = new StreamReader (file)
  -  let rec loop ls =
  -    match r.ReadLine () with
  -     | null -> List.rev ls
  -     | l -> loop (trim l::ls)
  -  loop []
  +  File.ReadAllLines file
  +  |> Array.map trim
  +  |> List.ofArray
   
   type Item = {
     Doc: list<string>
  
positive.code: let asText (s: string) =
    let b = StringBuilder ()
    for i=0 to s.Length-1 do
      ignore <|
      match s.[i] with
        | '<' -> b.Append "&lt;"
        | '>' -> b.Append "&gt;"
        | '&' -> b.Append "&amp;"
        | c   -> b.Append c
    b.ToString ()
  
  let formatDesc (text: string) =
  
negative.code:   else None
  
  let (|Doc|_|) (s: string) =
    if s.StartsWith "/// " then Some (s.Substring 4) else None
  
  let (|Attr|_|) (s: string) = if isAttr s then Some s else None
  
  