anchor.diff:            | _ -> 
                 PrimitiveInferedProperty.Create(field.Name.Split('\n').[0], typeof<string>, preferOptionals) )
             
  -  | _ -> failwithf "inferFields: Expected record type, got %A" inferedType+  | _ -> failwithf "inferFields: Expected record type, got %A" inferedType
  
positive.code:         | item -> 
              let parseResult = parseSchemaItem item true
              match parseResult with
              | SchemaParseResult.Name ->                
                  headers.[index] <- item // if the type is not valid, override the header
              | SchemaParseResult.Full prop -> 
                  let name = 
                    if prop.Name = "" then headers.[index]
                    else prop.Name
                  schema.[index] <- Some { prop with Name = makeUnique name }
              | SchemaParseResult.FullByName prop -> 
                  let index = headers |> Array.tryFindIndex (fun header -> header.Equals(prop.Name, StringComparison.OrdinalIgnoreCase))
                  match index with
                  | Some index -> 
                      let name = 
                        if prop.Name = "" then headers.[index]
                        else prop.Name
                      schema.[index] <- Some { prop with Name = makeUnique headers.[index] }
                  | None -> failwithf "Column '%s' not found in '%s'" prop.Name (headers |> String.concat ",")
              | _ -> failwithf "inferType: Unexpected SchemaParseResult for schema: %A" parseResult
        schema
  
  
negative.code:     | None ->
          let parseResult = parseSchemaItem item false
          match parseResult with
          | SchemaParseResult.Name name -> 
              makeUnique name, None
          | SchemaParseResult.NameAndUnit (name, unit) -> 
              // store the original header because the inferred type might not support units of measure
              (makeUnique item) + "\n" + (makeUnique name), Some unit
  