code: function Account(db, options) {
    if (!(this instanceof Account))
      return new Account(db, options);
  
    assert(db, 'Database is required.');
  
    this.db = db;
    this.network = db.network;
    this.wallet = null;
  
    this.receive = null;
    this.change = null;
    this.nested = null;
  
    this.wid = 0;
    this.id = null;
    this.name = null;
    this.initialized = false;
    this.witness = this.db.options.witness === true;
    this.watchOnly = false;
    this.type = Account.types.PUBKEYHASH;
    this.m = 1;
    this.n = 1;
    this.accountIndex = 0;
    this.receiveDepth = 0;
    this.changeDepth = 0;
    this.nestedDepth = 0;
    this.lookahead = 0;
    this.accountKey = null;
    this.keys = [];
  
    if (options)
      this.fromOptions(options);
  }
docs: Represents a BIP44 Account belonging to a {@link Wallet}.
  Note that this object does not enforce locks. Any method
  that does a write is internal API only and will lead
  to race conditions if used elsewhere.
  @alias module:wallet.Account
  @constructor
  @param {Object} options
  @param {WalletDB} options.db
  @param {HDPublicKey} options.accountKey
  @param {Boolean?} options.witness - Whether to use witness programs.
  @param {Number} options.accountIndex - The BIP44 account index.
  @param {Number?} options.receiveDepth - The index of the _next_ receiving
  address.
  @param {Number?} options.changeDepth - The index of the _next_ change
  address.
  @param {String?} options.type - Type of wallet (pubkeyhash, multisig)
  (default=pubkeyhash).
  @param {Number?} options.m - `m` value for multisig.
  @param {Number?} options.n - `n` value for multisig.
  @param {String?} options.wid - Wallet ID
  @param {String?} options.name - Account name