function isSourcedFromRequire(node) {
            // If this node is a CallExpression it has a callee,
            // check if this is the `require` function
            if (node.callee && node.callee.name === 'require') {
                return true;
            }

            // If this CallExpression is not a `require` we keep looking for
            // the `require` method up in the tree
            if (node.callee && node.callee.object) {
                return isSourcedFromRequire(node.callee.object);
            }

            // If there is no `callee` this might be a MemberExpression, keep
            // look for the `require` method up in the tree.
            if (node.object) {
                return isSourcedFromRequire(node.object);
            }

            return false;
        }
Disallows multiple `var` declaration (except for-loop).

Types: `Boolean` or `Object`

Values:

- `true` disallows multiple variable declarations except within a for loop
- `Object`:
   - `'strict'` disallows all multiple variable declarations
   - `'allExcept'` array of exceptions:
      - `'undefined'` allows declarations where all variables are not defined
      - `'require'` allows declarations where all variables are importing external modules with require

#### Example

```js
"disallowMultipleVarDecl": true
```

##### Valid for `true`

```js
var x = 1;
var y = 2;

for (var i = 0, j = arr.length; i < j; i++) {}
```

##### Valid for `{ strict: true }`

```js
var x = 1;
var y = 2;
```

##### Valid for `{ allExcept: ['undefined'] }`

```js
var a, b;
var x = 1;
var y = 2;

for (var i = 0, j = arr.length; i < j; i++) {}
```
##### Valid for `{ allExcept: ['require'] }`

```js
var a = require('a'),
    b = require('b');

var x = 1;
var y = 2;

for (var i = 0, j = arr.length; i < j; i++) {}
```

##### Invalid

```js
var x = 1,
    y = 2;

var x, y = 2, z;
```