docs: @Override
      public boolean checkAliasAccess(Subject authenticatedSubject, String destination, String aliasDestination, int destinationType, String operationType,
                                      boolean logWarning) throws MessagingAuthorizationException {
          SibTr.entry(tc, CLASS_NAME + "checkAliasAccess", new Object[] { authenticatedSubject, aliasDestination, operationType });
  
          String busName = null;
          String messagingEngine = null;
          String[] roles = null;
          
          if (auditManager != null) {
              if (auditManager.getJMSBusName() != null)
                  busName = auditManager.getJMSBusName();
              if (auditManager.getJMSMessagingEngine() != null)
                  messagingEngine = auditManager.getJMSMessagingEngine();
          }
  
          roles = new String[] {MessagingSecurityConstants.OPERATION_TYPE_RECEIVE};
          if (operationType.equalsIgnoreCase(MessagingSecurityConstants.OPERATION_TYPE_BROWSE)) {
              if (checkAliasAccess(authenticatedSubject, destination, aliasDestination, destinationType, MessagingSecurityConstants.OPERATION_TYPE_RECEIVE, false)) {
                  return true;
              }
          }
          String destinationName = destination + ":" + aliasDestination;
  
          checkIfUserIsAuthenticated(authenticatedSubject);
          String userName = null;
          String user = authenticatedSubject.getPrincipals().iterator().next().getName();
          try {
              userName = MessagingSecurityUtility.getUniqueUserName(authenticatedSubject);
          } catch (MessagingSecurityException e) {
              if (auditManager != null && auditManager.getJMSConversationMetaData() != null) {
                  ConversationMetaData cmd = (ConversationMetaData) auditManager.getJMSConversationMetaData();
  
                  Audit.audit(Audit.EventID.SECURITY_JMS_AUTHZ_01, user, cmd.getRemoteAddress().getHostAddress(), new Integer(cmd.getRemotePort()).toString(),
                              cmd.getChainName(), busName, messagingEngine, destinationName, operationType, roles, "aliasDestination",
                              Integer.valueOf("201"));
              } else {
                  Audit.audit(Audit.EventID.SECURITY_JMS_AUTHZ_01, user, null, null, null, busName, messagingEngine, destinationName, operationType, 
                              roles, "aliasDestination", Integer.valueOf("201"));
              }
  
              throw new MessagingAuthorizationException(Tr.formatMessage(tc, "USER_NOT_AUTHORIZED_MSE1010", userName, operationType, aliasDestination), e);
          }
          Permission permission = null;
          if (destinationType == MessagingSecurityConstants.DESTINATION_TYPE_QUEUE) {
              Map<String, QueuePermission> destinationPermission = messagingSecurityService.getQueuePermissions();
              permission = destinationPermission.get(destination);
          } else if (destinationType == MessagingSecurityConstants.DESTINATION_TYPE_TOPICSPACE) {
              Map<String, TopicPermission> destinationPermission = messagingSecurityService.getTopicPermissions();
              permission = destinationPermission.get(destination);
          }
          boolean result = checkPermission(permission, operationType, userName);
          if (!result) {
              if (auditManager != null && auditManager.getJMSConversationMetaData() != null) {
                  ConversationMetaData cmd = (ConversationMetaData) auditManager.getJMSConversationMetaData();
  
                  Audit.audit(Audit.EventID.SECURITY_JMS_AUTHZ_01, user, cmd.getRemoteAddress().getHostAddress(), new Integer(cmd.getRemotePort()).toString(),
                              cmd.getChainName(), busName, messagingEngine, destinationName, operationType, roles, "aliasDestination",
                              Integer.valueOf("201"));
              } else {
                  Audit.audit(Audit.EventID.SECURITY_JMS_AUTHZ_01, user, null, null, null, busName, messagingEngine, destinationName, operationType, 
                              roles, "aliasDestination", Integer.valueOf("201"));
              }
              if (logWarning) {
                  SibTr.debug(tc, "USER_NOT_AUTHORIZED_MSE1010",
                              new Object[] { userName, operationType, aliasDestination });
                  throw new MessagingAuthorizationException(Tr.formatMessage(tc, "USER_NOT_AUTHORIZED_MSE1010", userName, operationType, aliasDestination));               
              }
  
          } else {
              if (auditManager != null && auditManager.getJMSConversationMetaData() != null) {
                  ConversationMetaData cmd = (ConversationMetaData) auditManager.getJMSConversationMetaData();
  
                  Audit.audit(Audit.EventID.SECURITY_JMS_AUTHZ_01, user, cmd.getRemoteAddress().getHostAddress(), new Integer(cmd.getRemotePort()).toString(),
                              cmd.getChainName(), busName, messagingEngine, destinationName, operationType, roles, "aliasDestination",
                              Integer.valueOf("200"));
              } else {
                  Audit.audit(Audit.EventID.SECURITY_JMS_AUTHZ_01, user, null, null, null, busName, messagingEngine, destinationName, operationType, 
                              roles, "aliasDestination", Integer.valueOf("200"));
              }
  
   
          }
          SibTr.exit(tc, CLASS_NAME + "checkAliasAccess", result);
          return result;
      }