anchor.diff: -{ stdenv, lib, fetchurl, unzip, makeWrapper, setJavaClassPath
  -, zulu, glib, libxml2, ffmpeg_3, libxslt, libGL, alsaLib
  -, fontconfig, freetype, pango, gtk2, cairo, gdk-pixbuf, atk, xorg, zlib
  -, swingSupport ? true }:
  +{ stdenv
  +, lib
  +, fetchurl
  +, autoPatchelfHook
  +, unzip
  +, makeWrapper
  +, setJavaClassPath
  +, zulu
  +# minimum dependencies
  +, alsaLib
  +, fontconfig
  +, freetype
  +, zlib
  +, xorg
  +# runtime dependencies
  +, cups
  +# runtime dependencies for GTK+ Look and Feel
  +, gtkSupport ? stdenv.isLinux
  +, cairo
  +, glib
  +, gtk3
  +}:
   
   let
     version = "11.41.23";
  
positive.code:   hash = if stdenv.isDarwin then sha256_darwin else sha256_linux;
    extension = if stdenv.isDarwin then "zip" else "tar.gz";
  
    libraries = [
      stdenv.cc.libc glib libxml2 ffmpeg_3 libxslt libGL
      xorg.libXxf86vm alsaLib fontconfig freetype pango
      gtk2 cairo gdk-pixbuf atk zlib
    ] ++ (lib.optionals swingSupport (with xorg; [
      xorg.libX11 xorg.libXext xorg.libXtst xorg.libXi xorg.libXp
      xorg.libXt xorg.libXrender stdenv.cc.cc
    ]));
  
  in stdenv.mkDerivation {
    inherit version openjdk platform hash extension;
  
negative.code:     cat <<EOF >> $out/nix-support/setup-hook
      if [ -z "\''${JAVA_HOME-}" ]; then export JAVA_HOME=$out; fi
      EOF
    '' + lib.optionalString stdenv.isLinux ''
      # We cannot use -exec since wrapProgram is a function but not a command.
      for bin in $( find "$out" -executable -type f ); do
        wrapProgram "$bin" --prefix LD_LIBRARY_PATH : "${runtimeLibraryPath}"
      done
    '';
  
    preFixup = ''
      find "$out" -name libfontmanager.so -exec \
        patchelf --add-needed libfontconfig.so {} \;
    '';
  
    passthru = {
      home = zulu;
  