function isValidSimpleAssignmentTarget(tree, isStrict) {
  switch (tree.type) {
    case IDENTIFIER_EXPRESSION: {
      if (!isStrict) return true;
      let {value} = tree.identifierToken;
      return value !== 'arguments' && value !== 'eval';
    }

    case PAREN_EXPRESSION:
      return isValidSimpleAssignmentTarget(tree.expression, isStrict);

    case MEMBER_EXPRESSION:
    case MEMBER_LOOKUP_EXPRESSION:
      return true;

    default:
      return false;
  }
}
Matches "Static Semantics: IsValidSimpleAssignmentTarget" in the spec.
@param {ParseTree} tree
@return {boolean}