function saveAccessor(accessorType, props, name, tkn, isClass, isStatic) {
    var flagName = accessorType === "get" ? "getterToken" : "setterToken";
    var key = name;
    state.tokens.curr.accessorType = accessorType;
    state.nameStack.set(tkn);
    if (isClass && isStatic) {
      key = "static " + name;
    }

    if (props[key]) {
      if ((props[key].basic || props[key][flagName]) && name !== "__proto__") {
        var msg = "";
        if (isClass) {
          if (isStatic) {
            msg += "static ";
          }
          msg += accessorType + "ter method";
        } else {
          msg = "key";
        }
        warning("W075", state.tokens.next, msg, name);
      }
    } else {
      props[key] = Object.create(null);
    }

    props[key][flagName] = tkn;
    if (isStatic) {
      props[key].static = true;
    }
  }
Update an object used to track property names within object initializers
and class bodies. Produce warnings in response to duplicated names.

@param {string} accessorType - Either "get" or "set"
@param {object} props - a collection of all properties of the object or
                        class to which the current accessor is being
                        assigned
@param {object} tkn - the identifier token representing the accessor name
@param {boolean} [isClass] - whether the accessor is part of an ES6 Class
                             definition
@param {boolean} [isStatic] - whether the accessor is a static method