anchor.diff:      }
   
   // Help: https://bettercrm.blog/2017/04/26/solution-component-types-in-dynamics-365/
  -let rec diffSolution (diffSolutionInfo: DiffSolutionInfo) (devNode: XmlNode) (prodNode: XmlNode) output =
  +let rec diffSolution (diffSolutionInfo: DiffSolutionInfo) (devNode: XmlNode) (prodNode: XmlNode) =
     log.Verbose "Preprocessing";
     let expr = "//IntroducedVersion|//IsDataSourceSecret|//Format|//CanChangeDateTimeBehavior|//LookupStyle|//CascadeRollupView|//Length|//TriggerOnUpdateAttributeList[not(text())]"
     selectNodes devNode expr |> Seq.iter removeNode;
  
positive.code:   let { proxy = proxy; solutionUniqueName = diffSolutionUniqueName; } = diffSolutionInfo
    
    let batchedDiff = seq {
      for dev_ent in entities do yield! (decideEntityXmlDifference diffSolutionInfo dev_ent prodNode genericAddToSolution)
  
      let checkDifference = genericAddToSolution devNode prodNode None
  
  
negative.code:     solutionUniqueName = diffSolutionUniqueName
    }
  
    diffSolution diffSolutionInfo devDocument prodDocument
    // log.Verbose "Saving";
    // File.WriteAllText (__SOURCE_DIRECTORY__ + @"\diff.xml", to_string dev_doc);
  
  