text: // "ArrowFunctionExpression"
  class a1 extends (() => {}) {}
  
  // "AssignmentExpression"
  class a2 extends (b = c) {}
  
  // "AwaitExpression"
  async function f() {
    class a extends (await b) {}
  }
  
  // "BinaryExpression"
  class a3 extends (b + c) {}
  
  // "CallExpression"
  class a4 extends b() {}
  
  // "ClassExpression"
  class a5 extends class {} {}
  
  // "ConditionalExpression"
  class a6 extends (b ? c : d) {}
  
  // "FunctionExpression"
  class a7 extends (function() {}) {}
  
  // "LogicalExpression"
  class a8 extends (b || c) {}
  
  // "MemberExpression"
  class a9 extends b.c {}
  
  // "NewExpression"
  class a10 extends (new B()) {}
  
  // "ObjectExpression"
  class a11 extends ({}) {}
  
  // "SequenceExpression"
  class a12 extends (b, c) {}
  
  // "TaggedTemplateExpression"
  class a13 extends `` {}
  
  // "UnaryExpression"
  class a14 extends (void b) {}
  
  // "UpdateExpression"
  class a15 extends (++b) {}
  
  // "YieldExpression"
  function* f2() {
    // Flow has a bug parsing it.
    // class a extends (yield 1) {}
  }
  
  x = class extends (++b) {}
  