renameBindingIds(path, oldName, newName, predicate = () => true) {
      const bindingIds = path.getBindingIdentifierPaths(true, false);
      for (const name in bindingIds) {
        if (name !== oldName) continue;
        for (const idPath of bindingIds[name]) {
          if (predicate(idPath)) {
            idPath.node.name = newName;
            // babel-7 don't requeue
            // idPath.replaceWith(t.identifier(newName));
            this.renamedNodes.add(idPath.node);
          }
        }
      }
    }
Given a NodePath, collects all the Identifiers which are BindingIdentifiers
and replaces them with the new name

For example,
  var a = 1, { b } = c; // a and b are BindingIdentifiers

@param {NodePath} path
@param {String} oldName
@param {String} newName
@param {Function} predicate