anchor.diff:      dataFieldName: string
       [<field: DataMember(Name = "classId")>]
       classId: string
  +    [<field: DataMember(Name = "entity")>]
  +    entity: RelatedEntity
  +  }
  +
  +and [<DataContract>]RelatedEntity =
  +  {
  +    [<field: DataMember(Name = "__class")>]
  +    __class: string
  +    [<field: DataMember(Name = "parameterName")>]
  +    parameterName: string
  +    [<field: DataMember(Name = "entityName")>]
  +    entityName: string
  +    [<field: DataMember(Name = "relatedAttributeName")>]
  +    relatedAttributeName: string
  +    [<field: DataMember(Name = "relationshipName")>]
  +    relationshipName: string
     }
   
   /// Recursive helper function to analyze a BPF json file
  
positive.code:     x |> Array.map snd 
      |> List.concat 
      |> List.distinctBy (fun (id,_,_,_) -> id)
      |> List.map (fun (id, datafieldname, controlClass, _) -> 
        sprintf "header_process_%s" id, datafieldname, controlClass, None))
    |> Map.ofArray
negative.code: open Microsoft.Xrm.Sdk
  open System.Runtime.Serialization
  open System.Collections.Generic
  open System
  
  // Part of the JSON data model for the "clientdata" attribute on BPF workflows.
  // Used to retrieve which fields on which entities are in the BPF forms
  