anchor.diff:               (typeof<Vector2>.Name, (fun evaled _ -> match evaled with Vector2 value -> value :> obj |> Some | _ -> None))
                (typeof<char>.Name, (fun evaled _ -> match evaled with String value when value.Length = 1 -> value.[0] :> obj |> Some | _ -> None))
                (typeof<string>.Name, (fun evaled _ -> match evaled with String value -> value :> obj |> Some | _ -> None))
  +             (typedefof<_ Address>.Name, tryExportAddress)
  +             (typedefof<_ Relation>.Name, tryExportRelation)
                (typedefof<_ option>.Name, tryExportOption)
                (typedefof<KeyValuePair<_, _>>.Name, tryExportKvp)
                (typedefof<_ list>.Name, tryExportList)
  
positive.code:                 | _ -> None
              | _ -> None
  
          and tryExportOption (opt : Expr) (ty : Type) =
              match opt with
              | Option opt ->
  
negative.code:                 // otherwise, we have no conversion
                  else None
  
          and tryImportAddress (value : obj) (ty : Type) =
              Some (String ((AddressConverter ty).ConvertToString value))
  
          and tryImportRelation (value : obj) (ty : Type) =
              Some (String ((RelationConverter ty).ConvertToString value))
  
          and tryImportOption (value : obj) (ty : Type) =
              let valueType = (ty.GetGenericArguments ()).[0]
              let opt = Reflection.objToOption value
  