docs: function prependMemberExpression(name, rest) {
    switch (rest.type) {
      case MEMBER_EXPRESSION:
        // rest = operand.name
        return createMemberExpression(
            prependMemberExpression(name, rest.operand),
            rest.memberName);
      case MEMBER_LOOKUP_EXPRESSION:
        // rest = operand[memberExpression]
        return createMemberLookupExpression(
            prependMemberExpression(name, rest.operand),
            rest.memberExpression);
      case IDENTIFIER_EXPRESSION:
        return createMemberExpression(name, rest.identifierToken);
      case CALL_EXPRESSION:
        return createCallExpression(
            prependMemberExpression(name, rest.operand),
            rest.args);
      case CASCADE_EXPRESSION:
        return createCascadeExpression(
            prependMemberExpression(name, rest.operand),
            rest.expressions);
      default:
        throw Error('Not reachable');
    }
  }