anchor.diff:  
       Regex.Matches(text, regex, combinedRegexOptions)
           |> Seq.cast<Match>
  -        |> Seq.map (fun m -> Attribute(m.Groups.["name"].Value |> removeAtEnd "Attribute",
  -                                       m.Groups.["value"].Value.Trim([|'"'|]),
  -                                       ""))
  +        |> Seq.map
  +            (fun m ->
  +                let v = m.Groups.["value"].Value
  +                let t = if v = "true" || v = "false" then typeof<bool>.FullName else typeof<string>.FullName
  +                Attribute(m.Groups.["name"].Value |> removeAtEnd "Attribute", v.Trim([|'"'|]), "", t)
  +            )
   
   /// Read a single attribute from an AssemblyInfo file.
   /// ## Parameters
  
positive.code: 
      let sourceLines =
          if generateClass then
              [ sprintf "namespace %s {" useNamespace
                "    internal static class AssemblyVersionInformation {"
                sprintf "        internal const string Version = %s;" (getAssemblyVersionInfo attributes)
                sprintf "        internal const string InformationalVersion = %s;" (getAssemblyInformationalVersion attributes)
                "    }"
                "}" ]
          else []
  
      attributeLines @ sourceLines
  
negative.code: 
              if generateClass then
                  yield "module internal AssemblyVersionInformation ="
                  yield!
                      attributes
                      |> Seq.map (fun x -> sprintf "    let [<Literal>] %s = %s" x.StaticPropertyName x.StaticPropertyValue)
          ]
  
      sourceLines |> writeToFile outputFileName
  