public static void ValidateDisplayNameV2(AbstractLogger logger, IMixWebCallFactory mixWebCallFactory, string displayName, Action <IValidateDisplayNameResult> callback)
 {
     try
     {
         ValidateDisplayNameRequest validateDisplayNameRequest = new ValidateDisplayNameRequest();
         validateDisplayNameRequest.DisplayName = displayName;
         ValidateDisplayNameRequest request = validateDisplayNameRequest;
         IWebCall <ValidateDisplayNameRequest, ValidateDisplayNameResponse> webCall = mixWebCallFactory.DisplaynameValidateV2Post(request);
         webCall.OnResponse += delegate(object sender, WebCallEventArgs <ValidateDisplayNameResponse> e)
         {
             ValidateDisplayNameResponse response = e.Response;
             if (response.DisplayNameStatus == "VALID")
             {
                 callback(new ValidateDisplayNameResult(success: true));
             }
             else if (response.DisplayNameStatus == "IN_USE")
             {
                 callback(new ValidateDisplayNameExistsResult(success: false, response.DisplayNames));
             }
             else
             {
                 callback(new ValidateDisplayNameFailedModerationResult(success: false));
             }
         };
         webCall.OnError += delegate
         {
             callback(new ValidateDisplayNameFailedModerationResult(success: false));
         };
         webCall.Execute();
     }
     catch (Exception ex)
     {
         logger.Critical("Unhandled exception: " + ex);
         callback(new ValidateDisplayNameFailedModerationResult(success: false));
     }
 }