anchor.diff:    html.Append key |> ignore
     html.Append "=\"" |> ignore
     escapeHtml html value
  -  html.Append "\"" |> ignore
  +  html.Append '"' |> ignore
   
   let inline objAttr (html:StringBuilder) (key: string) (value: obj) = strAttr html key (string value)
   
  
positive.code:     for cssProp in cssList do
        renderCssProp html cssProp
      
      html.Append "\"" |> ignore
  
    | HTMLAttr.Custom (key, value) -> strAttr html (key.ToLower()) (string value)
    | Data (key, value) -> strAttr html ("data-" + key) (string value)
  
negative.code:   | h -> h
  
  let inline private castHTMLNode (htmlNode: ReactElement): HTMLNode =
    if isNull htmlNode then 
      HTMLNode.Empty
    else 
      htmlNode :?> HTMLNode
  
  let renderToString (htmlNode: ReactElement): string =
    let htmlNode = addReactMark (castHTMLNode htmlNode)
    let html = StringBuilder()
  
    let rec render (htmlNode: HTMLNode) : unit =
      match htmlNode with
      | HTMLNode.Text str -> escapeHtml html str
      | HTMLNode.RawText str -> html.Append str |> ignore
      | HTMLNode.Node (tag, attrs, children) ->
        html.Append '<' |> ignore
        html.Append tag |> ignore
  
        let child = renderAttrs html attrs tag
  
        if voidTags.Contains tag then 
          html.Append "/>" |> ignore
        else 
          html.Append '>' |> ignore
          
          match child with
          | Some c -> html.Append c |> ignore
          | None ->
            for child in children do
              render (castHTMLNode child)
  
          html.Append "</" |> ignore
          html.Append tag |> ignore
          html.Append '>' |> ignore
      | HTMLNode.List nodes ->
          for node in nodes do
            render (castHTMLNode node)
  