|  | // Copyright (c) 2019, the Dart project authors.  Please see the AUTHORS file | 
|  | // for details. All rights reserved. Use of this source code is governed by a | 
|  | // BSD-style license that can be found in the LICENSE file. | 
|  |  | 
|  | import 'dart:_foreign_helper' show JS; | 
|  | import 'dart:_runtime' show gFnType, typeRep; | 
|  |  | 
|  | /// Returns an unwrapped generic function type with a bounded type argument in | 
|  | /// the form: <T extends [bound]> void -> void. | 
|  | Object genericFunction(Object bound) => | 
|  | gFnType((T) => [typeRep<void>(), []], (T) => [bound]); | 
|  |  | 
|  | /// Returns an unwrapped generic function type with a bounded type argument in | 
|  | /// the form: <T extends [bound]> [argumentType] -> T. | 
|  | Object functionGenericReturn(Object bound, Object argType) => gFnType( | 
|  | (T) => [ | 
|  | T, | 
|  | [argType] | 
|  | ], | 
|  | (T) => [bound]); | 
|  |  | 
|  | /// Returns an unwrapped generic function type with a bounded type argument in | 
|  | /// the form: <T extends [bound]> T -> [returnType]. | 
|  | Object functionGenericArg(Object bound, Object returnType) => gFnType( | 
|  | (T) => [ | 
|  | returnType, | 
|  | [T] | 
|  | ], | 
|  | (T) => [bound]); |