anchor.diff:                  | _ -> None
               | _ -> None
   
  +        and tryExportAddress (address : Expr) (ty : Type) =
  +            match address with
  +            | String str | Keyword str -> Some ((AddressConverter ty).ConvertFromString str)
  +            | _ -> None
  +
  +        and tryExportRelation (relation : Expr) (ty : Type) =
  +            match relation with
  +            | String str | Keyword str -> Some ((RelationConverter ty).ConvertFromString str)
  +            | _ -> None
  +
           and tryExportOption (opt : Expr) (ty : Type) =
               match opt with
               | Option opt ->
  
positive.code:              (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<_ option>.Name, tryExportOption)
               (typedefof<KeyValuePair<_, _>>.Name, tryExportKvp)
               (typedefof<_ list>.Name, tryExportList)
  
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
  