anchor.diff:            let
               databaseServices =
                 if createLocalPostgreSQL then [
  -                "keycloakPostgreSQLInit.service" "postgresql.service"
  +                "keycloakPostgreSQLInit.service"
  +                "postgresql.service"
                 ]
                 else if createLocalMySQL then [
  -                "keycloakMySQLInit.service" "mysql.service"
  +                "keycloakMySQLInit.service"
  +                "mysql.service"
                 ]
                 else [ ];
  -          in {
  +          in
  +          {
               after = databaseServices;
               bindsTo = databaseServices;
               wantedBy = [ "multi-user.target" ];
  
positive.code:                 let
                    matchResult = match ''"\$\{.*}"'' string;
                  in
                    if matchResult != null then
                      "expression " + string
                    else
                      string;
  
                writeAttribute = attribute: value:
                  let
                    type = typeOf value;
                  in
                    if type == "set" then
                      let
                        names = attrNames value;
                      in
                        foldl' (text: name: text + (writeAttribute "${attribute}.${name}" value.${name})) "" names
                    else if value == null then ''
                      if (outcome == success) of ${path}:read-attribute(name="${attribute}")
                          ${path}:undefine-attribute(name="${attribute}")
                      end-if
                    ''
                    else if elem type [ "string" "path" "bool" ] then
                      let
                        value' = if type == "bool" then boolToString value else ''"${value}"'';
                      in ''
                        if (result != ${prefixExpression value'}) of ${path}:read-attribute(name="${attribute}")
                          ${path}:write-attribute(name=${attribute}, value=${value'})
                        end-if
                      ''
                    else throw "Unsupported type '${type}' for path '${path}'!";
              in
                concatStrings
                  (mapAttrsToList
                    (attribute: value: (writeAttribute attribute value))
                    set);
  
  
            /* Produces an argument list for the JBoss `add()` function,
  
negative.code:                 let
                    value = nodeContent.${name};
                  in
                  if (match ".*([=]).*" name) == [ "=" ] then
                    if isAttrs value || value == null then
                      true
                    else
                      throw "Parsing path '${concatStringsSep "." (nodePath ++ [ name ])}' failed: JBoss attributes cannot contain '='!"
                  else
                    false;
                jbossPath = "/" + concatStringsSep "/" nodePath;
                children = if !isAttrs nodeContent then { } else nodeContent;
                subPaths = filter isPath (attrNames children);
                getPriority = name:
                  let
                    value = children.${name};
                  in
                  if value._type or "" == "order" then value.priority else 1000;
                orderedSubPaths = sort (a: b: getPriority a < getPriority b) subPaths;
                jbossAttrs = filterAttrs (name: _: !(isPath name)) children;
                text =
  