# 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.

# Blank lines and comments are ignored.
# Comments can also be inline like 'correct # this is ok'.
# Note that at least one space before the hash is required.

# Comments on a line by itself will be considered a header of the file and
# automatic tools might move it to the top of the file.

JS
abispecificinteger
abispecificintegermapping
adjusting
api
argument(s)
assigning
augment
augmentation
augmented
b
c
compilercontext.runincontext
compilesdk
constructor(s)
core
count.#count
d
dart.dev
dart2js_server
dart:ffi
dart_runner
dartbug.com
dname
e.g
f
ffi
flutter_runner
futureor
guides
h
https
interact
interop
intervening
js_util
libraries.json
list.filled
loadlibrary
macro
migrate
n
name.#name
name.stack
nameokempty
native('native
nativefieldwrapperclass
natively
nativetype
nnbd
nosuchmethod
num1%.3ms
o
opt
opts
outdated
part(s)
patch(es)
placing
pubspec.yaml
r
re
sdksummary
size
solutions
stacktrace
stand
staticinterop
stringokempty
struct<#name
structs
super.namedconstructor
superinterface
supermixin
t
team
this.namedconstructor
this.x
trusttypes
type3.#name
u
unsound
v
x
