code: function Client(app, dataCenter) {
      this._app = app;
  
      if ('TCP' === app.connectionType) {
          this._connection = new mt.net.TcpConnection(dataCenter);
      } else {
          this._connection = new mt.net.HttpConnection(dataCenter);
      }
  
      if (app.authKey && app.serverSalt)
      {
        this._channel = createEncryptedChannel(this._connection, app, app.authKey, app.serverSalt);
      }
      else if (app.authKey) {
          this._channel = createEncryptedChannel(this._connection, app, app.authKey, NULL_SERVER_SALT);
      }
  
      // User authorization
      this.auth = new (require('./api/auth'))(this);
      // User contacts
      this.contacts = new (require('./api/contacts'))(this);
      // Session updates
      this.updates = new (require('./api/updates'))(this);
      // Chat messages
      this.messages = new (require('./api/messages'))(this);
      // Notifications and settings
      this.account = new (require('./api/account'))(this);
  }
docs: It must be created by the `createClient()` method above and the following constructor cannot be called directly _(private)_. The code :