function saveProperty(props, name, tkn, isClass, isStatic, isComputed) {
    if (tkn.identifier) {
      name = tkn.value;
    }
    var key = name;
    if (isClass && isStatic) {
      key = "static " + name;
    }

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

    props[key].basic = true;
    props[key].basictkn = tkn;
  }
Update an object used to track property names within object initializers
and class bodies. Produce warnings in response to duplicated names.

@param {object} props - a collection of all properties of the object or
                        class to which the current property is being
                        assigned
@param {string} name - the property name
@param {object} tkn - the token defining the property
@param {boolean} [isClass] - whether the accessor is part of an ES6 Class
                             definition
@param {boolean} [isStatic] - whether the accessor is a static method
@param {boolean} [isComputed] - whether the property is a computed expression like [Symbol.iterator]