code: function ReferencedIdentifier(node, parent, scope, state) {
      // we can't guarantee the purity of arguments
      if (node.name === "arguments") {
        state.deopted = true;
      }
  
      // is this a referenced identifier and is it referencing the rest parameter?
      if (node.name !== state.name) return;
  
      if (state.noOptimise) {
        state.deopted = true;
      } else {
        if (this.parentPath.isMemberExpression({ computed: true, object: node })) {
          // if we know that this member expression is referencing a number then we can safely
          // optimise it
          var prop = this.parentPath.get("property");
          if (prop.isBaseType("number")) {
            state.candidates.push(this);
            return;
          }
        }
  
        // optimise single spread args in calls
        if (this.parentPath.isSpreadElement() && state.offset === 0) {
          var call = this.parentPath.parentPath;
          if (call.isCallExpression() && call.node.arguments.length === 1) {
            state.candidates.push(this);
            return;
          }
        }
  
        state.references.push(this);
      }
    }
docs: [Please add a description.]