anchor.diff:          | Windows -> @"\"
           | Unix -> "/"
   
  +[<TypeConverter(typeof<PathToStringTypeConverter>)>]
   type Path private (path: string) =
       static let root = ""
       static let rootWindows = "Drives"
  
positive.code: ﻿namespace Koffee
  
  open System
  open System.Text.RegularExpressions
  open Acadian.FSharp
  
  
negative.code: 
      // for debugging
      override this.ToString() = this.Format Windows
  
  // allows using Path as Map/dictionary key in Json.NET
  and private PathToStringTypeConverter() =
      inherit TypeConverter()
      override _.CanConvertFrom (_, typ) = typ = typeof<string>
      override _.CanConvertTo (_, typ) = typ = typeof<string>
  
      override _.ConvertTo(context, culture, value, destinationType) =
          if destinationType = typeof<string> then
              (value :?> Path).Format Windows |> box
          else
              base.ConvertTo(context, culture, value, destinationType)
  
      override _.ConvertFrom(context, culture, value) =
          match value with
          | :? string as stringValue -> stringValue |> Path.Parse |> Option.get |> box
          | _ -> base.ConvertFrom(context, culture, value)
  