anchor.diff:  { lib
   , haskellLib
   , nixpkgs
  -, useFastWeak, useReflexOptimizer, enableLibraryProfiling, enableTraceReflexEvents
  -, useTextJSString, enableExposeAllUnfoldings, __useTemplateHaskell
  +, useFastWeak
  +, useReflexOptimizer
  +, enableLibraryProfiling
  +, enableTraceReflexEvents
  +, useTextJSString
  +, enableExposeAllUnfoldings
  +, __useTemplateHaskell
   , ghcSavedSplices-8_6
   , ghcSavedSplices-8_10
   , haskellOverlaysPre
  
positive.code: 
      (optionalExtension enableExposeAllUnfoldings exposeAllUnfoldings)
  
      combined-any
      (optionalExtension (!(super.ghc.isGhcjs or false)) combined-ghc)
      (optionalExtension (super.ghc.isGhcjs or false) combined-ghcjs)
  
negative.code: in
  
  rec {
    optionalExtension = cond: overlay: if cond then overlay else _: _: { };
  
    versionWildcard = versionList:
      let
        versionListInc = lib.init versionList ++ [ (lib.last versionList + 1) ];
        bottom = lib.concatStringsSep "." (map toString versionList);
        top = lib.concatStringsSep "." (map toString versionListInc);
      in
      version: lib.versionOlder version top && lib.versionAtLeast version bottom;
  
    foldExtensions = lib.foldr lib.composeExtensions (_: _: { });
  
    getGhcVersion = ghc: ghc.version;
  
  