hunk.code_window:         }
           return Mono.whenDelayError(monos).then(updatedUserMono);
       }
       public Map<String, String> getEmailParams(Organization organization, User inviter, String inviteUrl, boolean isNewUser) {
           Map<String, String> params = new HashMap<>();
  
hunk.labels: keep keep replace keep keep keep keep keep
hunk.after_edit:         return Mono.whenDelayError(monos)
                   .then(Mono.zip(updatedUserMono, updatedUserDataMono))
                   .flatMap(tuple -> {
                       final User user = tuple.getT1();
                       final UserData userData = tuple.getT2();
                       return analyticsService.identifyUser(user, userData).thenReturn(user);
                   });
  
hunk.file_path: app/server/appsmith-server/src/main/java/com/appsmith/server/services/UserServiceImpl.java
hunk.type: replace
file: package com.appsmith.external.plugins;
  
  /**
   * Defines a common interface that plugin agnostic code flow can use to work with plugin related error objects. Each
   * plugin must override the common methods to provide plugin specific functionality. One use case is to extract
   * human-readable strings from otherwise huge error messages. For this use case, each plugin must override
   * `getReadableError` method to define its own way of extracting the readable error message.
   */
  public abstract class AppsmithPluginErrorUtils {
      public String getReadableError(Throwable error) {
          return error.getMessage();
      }
  }
  