|  | // Copyright 2018 the V8 project authors. All rights reserved. | 
|  | // Use of this source code is governed by a BSD-style license that can be | 
|  | // found in the LICENSE file. | 
|  |  | 
|  | { | 
|  | class MyArray extends Array { | 
|  | static get [Symbol.species]() { | 
|  | return Array; | 
|  | } | 
|  | } | 
|  |  | 
|  | const wannabe = new MyArray(); | 
|  | const flattened = wannabe.flat(Infinity); | 
|  | assertEquals(false, flattened instanceof MyArray); | 
|  | assertEquals(true, flattened instanceof Array); | 
|  | } | 
|  |  | 
|  | { | 
|  | class MyArray extends Array { | 
|  | static get [Symbol.species]() { | 
|  | return this; | 
|  | } | 
|  | } | 
|  |  | 
|  | const wannabe = new MyArray(); | 
|  | const flattened = wannabe.flat(Infinity); | 
|  | assertEquals(true, flattened instanceof MyArray); | 
|  | assertEquals(true, flattened instanceof Array); | 
|  | } |