anchor.diff:      |"System.Net.Mail.MailAddress" -> MailAddress.Parse str |> box
       |_ -> failwith "Unsupported primative type"
   
  -let primFromString (t: Type) (str: string) : obj =
  -    //this does not work for some reasion
  -    //t.GetMethod("Parse", [|typeof<string>|]).Invoke(t, [|str|]) |> box
  -    primTypeFromString t str
  -
  -let rec pfieldValue(t : Type) : Parser<obj,unit> =
  -    let (|Record|_|) t = if FSharpType.IsRecord(t) then Some(t)  else None
  -    let (|Union|_|) t = if FSharpType.IsUnion(t) then Some(t) else None
  -    let (|EMail|_|) t = if t = typeof<MailAddress> then Some(t) else None        
  -    let (|GUID|_|) t = if t = typeof<Guid> then Some(t) else None        
  -    let (|Primative|_|) t = if Type.GetTypeCode(t) <> TypeCode.Object then Some(t) else None
  -
  -    match t with
  -    | Record t -> precord t
  -    | Union t -> punion t
  -    | EMail t -> mayThrow(restOfLine false |>> (primFromString t))
  -    | GUID t -> mayThrow(restOfLine false |>> (primFromString t))
  -    | Primative t -> mayThrow(restOfLine false |>> (primFromString t))
  -    | _ -> fail "Unsupported object type"
  -
  -and pfieldTag (field: Reflection.PropertyInfo) : Parser<_,_> =
  +let rec pfieldTag (field: Reflection.PropertyInfo) : Parser<_,_> =
       spaces>>.
       pstring field.Name >>.
       spaces>>.pchar ':'>>.
  
positive.code: 
  and pfield (field: Reflection.PropertyInfo) : Parser<obj,unit> =
      pfieldTag field>>.
      pfieldValue field.PropertyType
  
  and precord (aType : Type) : Parser<obj,unit> =
      let makeType vals = 
  
negative.code:     Holder : Person;
      }
  
  let test p str =
      match run p str with
      | Success(result, _, _)   -> printfn "Success: %A of type %O" result result.GetType
      | Failure(errorMsg, _, _) -> printfn "Failure: %s" errorMsg
  
  let pcontract : Parser<Contract,unit> = 
      let toType (anObj : obj) : Contract =
  