code: function assertStrictOptions(funcname, opts, expected) {
      assert.object(opts, 'opts');
  
      for (var k in opts) {
          if (!opts.hasOwnProperty(k)) {
              continue;
          }
  
          var e = expected[k];
          if (!e) {
              throw (new Error(funcname + ': unexpected option: ' + k));
          }
  
          assert[e](opts[k], 'opts.' + k);
      }
  }
docs: /*
  Assert that "opts", a named parameter object passed to a function,
  contains no properties other than those expected by the software.
  
  The "expected" parameter is a map from expected property name to the type
  checking function in the "assert-plus" module.  Properties with values of
  the incorrect type, or unexpected extra properties, will cause the
  function to throw.