```js
  let foo = {}
  useEffect(() => {
    foo.bar.baz = 43;
  }, []);
```

This asks you to include `foo.bar.baz` into deps. But this doesn't make sense, as you write to it. Instead it should ask to include `foo.bar` into array.

If `foo` is a newly created object in render scope then we might additionally nudge you to `useRef` for it instead. Because otherwise it won't be shared between renders.
if (
        fnNode.type === 'Variable' &&
        fnNode.node.type === 'VariableDeclarator' &&
        fnNode.node.init != null &&
        (fnNode.node.init.type === 'ArrowFunctionExpression' ||
          fnNode.node.init.type === 'FunctionExpression')
      ) {
        return fnRef;
      }
      
      if (
        fnNode.type === 'FunctionName' &&
        fnNode.node.type === 'FunctionDeclaration'
      ) {
        return fnRef;
      }
      return null;
    })
    .filter(Boolean);
  function isUsedOutsideOfHook(fnRef) {
    let foundWriteExpr = false;
    for (let i = 0; i < fnRef.references.length; i++) {
      const reference = fnRef.references[i];
      if (reference.writeExpr) {
        if (foundWriteExpr) {
          
          return true;
        } else {
          
          foundWriteExpr = true;