docs: function(list, callback) {
          /**
           * Callback for QB.chat.privacylist.create().
           * @param {Object} error - The error object
           * @callback createPrivacylistCallback
           * */
          var self = this,
              userId, userJid, userMuc,
              userAction,
              mutualBlock,
              listPrivacy = {},
              listUserId = [];
  
          /** Filled listPrivacys */
          for (var i = list.items.length - 1; i >= 0; i--) {
              var user = list.items[i];
  
              listPrivacy[user.user_id] = {
                  action: user.action,
                  mutualBlock: user.mutualBlock === true ? true : false
              };
          }
  
          /** Filled listUserId */
          listUserId = Object.keys(listPrivacy);
  
          var iqParams = {
                  type: 'set',
                  from: self.helpers.getUserCurrentJid(),
                  id: chatUtils.getUniqueId('edit')
              },
              builder = Utils.getEnv().browser ? $iq : XMPP.Stanza;
  
          var iq = chatUtils.createStanza(builder, iqParams, 'iq');
  
          iq.c('query', {
              xmlns: chatUtils.MARKERS.PRIVACY
          }).c('list', {
              name: list.name
          });
  
          function createPrivacyItem(iq, params){
              if(Utils.getEnv().browser) {
                  iq.c('item', {
                      type: 'jid',
                      value: params.jidOrMuc,
                      action: params.userAction,
                      order: params.order
                  }).c('message', {})
                      .up().c('presence-in', {})
                      .up().c('presence-out', {})
                      .up().c('iq', {})
                      .up().up();
              } else {
                  var list = iq.getChild('query').getChild('list');
  
                  list.c('item', {
                      type: 'jid',
                      value: params.jidOrMuc,
                      action: params.userAction,
                      order: params.order
                  }).c('message', {})
                      .up().c('presence-in', {})
                      .up().c('presence-out', {})
                      .up().c('iq', {})
                      .up().up();
              }
  
              return iq;
          }
  
          function createPrivacyItemMutal(iq, params) {
              if(Utils.getEnv().browser) {
                  iq.c('item', {
                      type: 'jid',
                      value: params.jidOrMuc,
                      action: params.userAction,
                      order: params.order
                  }).up();
              } else {
                  var list = iq.getChild('query').getChild('list');
  
                  list.c('item', {
                      type: 'jid',
                      value: params.jidOrMuc,
                      action: params.userAction,
                      order: params.order
                  }).up();
              }
  
              return iq;
          }
  
          for (var index = 0, j = 0, len = listUserId.length; index < len; index++, j = j + 2) {
              userId = listUserId[index];
              mutualBlock = listPrivacy[userId].mutualBlock;
  
              userAction = listPrivacy[userId].action;
              userJid = self.helpers.jidOrUserId(parseInt(userId, 10));
              userMuc = self.helpers.getUserNickWithMucDomain(userId);
  
              if(mutualBlock && userAction === 'deny'){
                  iq = createPrivacyItemMutal(iq, {
                      order: j+1,
                      jidOrMuc: userJid,
                      userAction: userAction
                  });
                  iq = createPrivacyItemMutal(iq, {
                      order: j+2,
                      jidOrMuc: userMuc,
                      userAction: userAction
                  }).up().up();
              } else {
                  iq = createPrivacyItem(iq, {
                      order: j+1,
                      jidOrMuc: userJid,
                      userAction: userAction
                  });
                  iq = createPrivacyItem(iq, {
                      order: j+2,
                      jidOrMuc: userMuc,
                      userAction: userAction
                  });
              }
          }
  
          if(Utils.getEnv().browser) {
              self.connection.sendIQ(iq, function(stanzaResult) {
                  callback(null);
              }, function(stanzaError){
                  if(stanzaError){
                      var errorObject = chatUtils.getErrorFromXMLNode(stanzaError);
                      callback(errorObject);
                  }else{
                      callback(Utils.getError(408));
                  }
              });
          } else {
              self.Client.send(iq);
  
              self.nodeStanzasCallbacks[iqParams.id] = function (stanza) {
                  if(!stanza.getChildElements('error').length){
                      callback(null);
                  } else {
                      callback(Utils.getError(408));
                  }
              };
          }
      }