set(name, allNames) {
      if (!hasBeenWritten) {
        // copy on write
        propVariables = new Map(propVariables);
        Object.assign(stack[stack.length - 1], { propVariables, hasBeenWritten: true });
        stack[stack.length - 1].hasBeenWritten = true;
      }
      return propVariables.set(name, allNames);
    }
Add a variable name to the current scope
@param {string} name
@param {string[]} allNames Example: `props.a.b` should be formatted as `['a', 'b']`
@returns {Map<string, string[]>}