code: function NSpell(aff, dic) {
    var length
    var index
    var dictionaries
  
    if (!(this instanceof NSpell)) {
      return new NSpell(aff, dic)
    }
  
    if (typeof aff === 'string' || buffer(aff)) {
      if (typeof dic === 'string' || buffer(dic)) {
        dictionaries = [{dic: dic}]
      }
    } else if (aff) {
      if ('length' in aff) {
        dictionaries = aff
        aff = aff[0] && aff[0].aff
      } else {
        if (aff.dic) {
          dictionaries = [aff]
        }
  
        aff = aff.aff
      }
    }
  
    if (!aff) {
      throw new Error('Missing `aff` in dictionary')
    }
  
    aff = affix(aff)
  
    this.data = {}
    this.compoundRuleCodes = aff.compoundRuleCodes
    this.replacementTable = aff.replacementTable
    this.conversion = aff.conversion
    this.compoundRules = aff.compoundRules
    this.rules = aff.rules
    this.flags = aff.flags
  
    length = dictionaries ? dictionaries.length : 0
    index = -1
  
    while (++index < length) {
      dic = dictionaries[index]
  
      if (dic && dic.dic) {
        this.dictionary(dic.dic)
      }
    }
  }
docs: Construct a new spelling context.