anchor.diff:              CurrentPage = Types.Page.ExampleSQL
           }, Cmd.Empty
   
  -let createParseResultSuccessTable rows =
  +let createTokenTableFromRows rows =
       [   R.thead []
               [   R.tr []
                       [   R.th [] [ str "StartChar" ]
  
positive.code:         [   textUpdateArea
              getParseResult model
          ]
  
  
  
  
negative.code:         [   ClassName "table is-bordered is-narrow is-hoverable is-fullwidth"
          ]
  
  let createTextTableFromRows rows =
      [   R.thead []
              [   R.tr []
                      [   R.th [] [ str "Text" ]
                      ]
              ]
          R.tbody [] rows
      ]
      |>
      R.table
          [   ClassName "table is-bordered is-narrow is-hoverable is-fullwidth"
          ]
  
  let isWhitespace = System.String.IsNullOrWhiteSpace
  let getText text = if isWhitespace text then "(whitespace)" else text
  let italicizeIfWhitespace text =
      R.str (getText text)
      |> (if isWhitespace text then List.singleton >> (R.i []) else id)
  
  let getTokenTable (status: FLexer.Core.ClassifierStatus<_>) =
      status.Consumed
      |> List.rev
      |> List.mapi(fun index t ->
          R.tr [ Id <| index.ToString() ]
              [   R.td [] [ str <| t.StartCharacter.ToString() ]
                  R.td [] [ str <| t.EndCharacter.ToString() ]
                  R.td [] [ italicizeIfWhitespace t.Text ]
                  R.td [] [ str <| t.Classification.ToString() ]
              ]
      )
      |> createTokenTableFromRows
  
  let getTextTable (status: FLexer.Core.ClassifierStatus<_>) =
      status.ConsumedWords
      |> List.rev
      |> List.mapi(fun index t ->
          R.tr [ Id <| index.ToString() ]
               [   R.td [] [ italicizeIfWhitespace t ]
               ]
      )
      |> createTextTableFromRows
  
  let getParseResult (model: Types.Model) =
      match model.ParseResult with
      | Types.ParseResult.JSONParse result ->
          match result with
          | Ok(jsonResult, status) -> true, getTokenTable status, getTextTable status
          | Error(error) -> false, getTokenTable error.LastStatus, getTextTable error.LastStatus
      | Types.ParseResult.SQLParse result ->
          match result with
          | Ok(sqlResult, status) -> true, getTokenTable status, getTextTable status
          | Error(error) -> false, getTokenTable error.LastStatus, getTextTable error.LastStatus
      |> (fun (isSuccess, tokenTable, textTable) ->
          R.div []
              [   R.h1 [ ClassName "title" ] [ str (if isSuccess then "Success" else "Incomplete") ]
                  R.hr []
                  R.h3 [ ClassName "subtitle" ] [ str "Tokens" ]
                  tokenTable
                  R.hr []
                  R.h3 [ ClassName "subtitle" ] [ str "ConsumedText" ]
                  textTable
              ]
      )
  
  