anchor.diff:    | WebResourceByteDiff
     | WorkflowGuidReplace
   
  -let GetExtraCheck (dev_path, prod_path) (dev_elem: XmlNode) (prod_elem: XmlNode) = function
  +let extraCheckFun (dev_path, prod_path) (dev_elem: XmlNode) (prod_elem: XmlNode) = function
     | NoExtra -> true
     | WorkflowGuidReplace -> workflowGuidReplace (dev_path, prod_path) dev_elem prod_elem
     | WebResourceByteDiff -> webResourceByteDiff (dev_path, prod_path) dev_elem prod_elem
  
positive.code:   doc.Save(writer);
    sw.ToString()
  
  let diff (proxy: IOrganizationService) diffSolutionUniqueName (devCustomizations: string) (prodCustomizations: string) output =
    log.Verbose "Parsing DEV customizations";
    let devDocument = XmlDocument ()
    devDocument.Load (devCustomizations + "/customizations.xml");
    log.Verbose "Parsing PROD customizations";
    let prodDocument = XmlDocument ()
    prodDocument.Load (prodCustomizations + "/customizations.xml");
    log.Verbose "Calculating diff";
    elim proxy diffSolutionUniqueName devCustomizations prodCustomizations devDocument prodDocument output |> ignore;
    // log.Verbose "Saving";
    // File.WriteAllText (__SOURCE_DIRECTORY__ + @"\diff.xml", to_string dev_doc);
  
  
negative.code:   | SolutionComponentCallback comp-> 
        createSolutionComponent proxy diffSolutionUniqueName (Guid.Parse id) comp
  
  type DiffSolutionInfo = {
    proxy: IOrganizationService
    devExtractedPath: string
    prodExtractedPath: string
    solutionUniqueName: string
  }
  
  let elim_elem (diffSolutionInfo: DiffSolutionInfo) output (devNode: XmlNode) (prodNode: XmlNode) (resp: RetrieveEntityResponse option)
                type_ devNodePath devId (devReadable: ReadableName) (extraCheck: ExtraChecks) (callbackKind: CallbackKind) =
    let { proxy = proxy; solutionUniqueName = diffSolutionUniqueName; } = diffSolutionInfo
    let devElements = selectNodes devNode devNodePath
    devElements
    |> Seq.iter (fun devElement ->
      let id = getId devElement devId
      let name = GetReadableName devElement devReadable
      let prodElement = prodNode.SelectSingleNode(append_selector devNodePath id devId)
      let extraCheckfunction = extraCheckFun (diffSolutionInfo.devExtractedPath, diffSolutionInfo.prodExtractedPath) 
                                              devElement prodElement extraCheck
      
      let callback = callbackFun proxy diffSolutionUniqueName resp
      // remove_useless dev_elem prod_elem;
      if prodElement = null then
  