docs: static void addReplaceOperationSteps(final CompositeOperationBuilder builder, final Deployment deployment,
                                           final DeploymentDescription currentDeployment, final boolean allowAddIfMissing) {
          final String name = deployment.getName();
          final String runtimeName = deployment.getRuntimeName();
          // Adds need to happen first on server-groups otherwise the full-replace-deployment will fail currently
          if (allowAddIfMissing) {
              // If deployment is not on the server group, add it but don't yet enable it. The full-replace-deployment
              // should handle that part.
              @SuppressWarnings("TypeMayBeWeakened")
              final Set<String> serverGroups = new LinkedHashSet<>(deployment.getServerGroups());
              if (!serverGroups.isEmpty()) {
                  serverGroups.removeAll(currentDeployment.getServerGroups());
                  for (String serverGroup : serverGroups) {
                      final ModelNode sgAddress = createAddress(SERVER_GROUP, serverGroup, DEPLOYMENT, name);
                      final ModelNode addOp = createAddOperation(sgAddress);
                      // Explicitly set to false here as the full-replace-deployment should take care of enabling this
                      addOp.get(ENABLED).set(false);
                      if (runtimeName != null) {
                          addOp.get(RUNTIME_NAME).set(runtimeName);
                      }
                      builder.addStep(addOp);
                  }
              }
          }
          final ModelNode op = createOperation(DEPLOYMENT_FULL_REPLACE_OPERATION);
          op.get(NAME).set(name);
          if (runtimeName != null) {
              op.get(RUNTIME_NAME).set(runtimeName);
          }
          addContent(builder, op, deployment);
          op.get(ENABLED).set(deployment.isEnabled());
          builder.addStep(op);
      }