anchor.diff:  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
  
positive.code:   data.ToArray()
    |> Array.map(fun d ->
      match d.__class with
      | StartsWith "StageStep" () 
      | StartsWith "StepStep" ()  -> analyzeEntity d.steps.list fields
      | StartsWith "ControlStep" () -> 
        ( d.controlId, 
          d.dataFieldName, 
          getControlClass d.controlId d.classId,
          None) :: fields
      | _ -> fields
    ) |> List.concat
  
  
negative.code:     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
  