anchor.diff:        req.LogicalName <- name.ToLower();
         let resp = proxy.Execute(req) :?> RetrieveEntityResponse
         createSolutionComponent proxy diffSolutionUniqueName resp.EntityMetadata.MetadataId.Value SolutionComponent.Entity
  +
         AddEntity
       elif devEntity.OuterXml = prodEntity.OuterXml then
         if output = Same || output = Both then 
           log.Verbose "Removing unchanged entity: %s" name;
         removeNode devEntity;
  +
         RemoveEntity
       else
         log.Verbose "Processing entity: %s" name;
  
positive.code:       req.EntityFilters <- EntityFilters.All;
        req.LogicalName <- name.ToLower();
        let resp = proxy.Execute(req) :?> RetrieveEntityResponse
        NotEntity (devEntity, prodEntity, resp)
     else
       UnhandledEntity
  
negative.code: type AddToSolutionStrategy = 
    | EntityComponentAdd of EntityComponent
    | SolutionComponentAdd of SolutionComponent
  
  type CallbackKind =
    | EntityMetadataCallback
    | RibbonCallback
    | CustomCallback of (string -> unit)
    | EntityComponentCallback of string * EntityComponent
    | SolutionComponentCallback of string * SolutionComponent
  
  let callbackFun resp = function 
    | EntityMetadataCallback -> ()
    | RibbonCallback -> ()
    | CustomCallback _ -> ()
    | EntityComponentCallback _ -> ()
    | SolutionComponentCallback _ -> ()
  
  let elim_elem ((devExtractedPath, prodExtractedPath): (string * string)) output (devNode: XmlNode) (prodNode: XmlNode) 
                type_ devNodePath devId (devReadable: ReadableName) (extraCheck: ExtraChecks) callback =
  