code: function Filter(arg) {
    /* jshint maxcomplexity: 10 */
    if (typeof(arg) === 'object') {
      if (!arg.vData) {
        throw new TypeError('Data object should include filter data "vData"');
      }
      if (arg.vData.length > Filter.MAX_BLOOM_FILTER_SIZE * 8) {
        throw new TypeError('"vData" exceeded max size "' + Filter.MAX_BLOOM_FILTER_SIZE + '"');
      }
      this.vData = arg.vData;
      if (!arg.nHashFuncs) {
        throw new TypeError('Data object should include number of hash functions "nHashFuncs"');
      }
      if (arg.nHashFuncs > Filter.MAX_HASH_FUNCS) {
        throw new TypeError('"nHashFuncs" exceeded max size "' + Filter.MAX_HASH_FUNCS + '"');
      }
      this.nHashFuncs = arg.nHashFuncs;
      this.nTweak = arg.nTweak || 0;
      this.nFlags = arg.nFlags || Filter.BLOOM_UPDATE_NONE;
    } else {
      throw new TypeError('Unrecognized argument');
    }
  }
docs: A Bloom Filter implemented as for use in Bitcoin Connection Bloom Filtering (BIP37) that
  uses version 3 of the 32-bit Murmur hash function.
  
  @see https://github.com/bitcoin/bips/blob/master/bip-0037.mediawiki
  @see https://github.com/bitcoin/bitcoin/blob/master/src/bloom.cpp
  
  @param {Object} data - The data object used to initialize the filter.
  @param {Array} data.vData - The data of the bloom filter.
  @param {Number} data.nHashFuncs - The number of hash functions.
  @param {Number} data.nTweak - A random value to seed the hash functions.
  @param {Number} data.nFlag - A flag to determine how matched items are added to the filter.
  @constructor