Fixes #1201. Add tests that 'late' and 'required' are not reserved words
diff --git a/LanguageFeatures/nnbd/syntax_A04_t02.dart b/LanguageFeatures/nnbd/syntax_A04_t02.dart
new file mode 100644
index 0000000..c0aa9f5
--- /dev/null
+++ b/LanguageFeatures/nnbd/syntax_A04_t02.dart
@@ -0,0 +1,18 @@
+// Copyright (c) 2021, 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.
+
+/// @assertion The modifier late is added as a built-in identifier. The grammar
+/// of top level variables, static fields, instance fields, and local variables
+/// is extended to allow any declaration to include the modifier late.
+///
+/// @description Checks that the 'late' word can be used as a function name
+/// @author sgrekhov@unipro.ru
+
+import "../../Utils/expect.dart";
+
+double late() => 3.14;
+
+main() {
+  Expect.equals(3.14, late());
+}
diff --git a/LanguageFeatures/nnbd/syntax_A04_t03.dart b/LanguageFeatures/nnbd/syntax_A04_t03.dart
new file mode 100644
index 0000000..5bc1944
--- /dev/null
+++ b/LanguageFeatures/nnbd/syntax_A04_t03.dart
@@ -0,0 +1,24 @@
+// Copyright (c) 2021, 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.
+
+/// @assertion The modifier late is added as a built-in identifier. The grammar
+/// of top level variables, static fields, instance fields, and local variables
+/// is extended to allow any declaration to include the modifier late.
+///
+/// @description Checks that the 'late' word can be used as a variable name
+/// @author sgrekhov@unipro.ru
+
+import "../../Utils/expect.dart";
+
+double late = 3.14;
+
+test () {
+  double late = -3.14;
+  Expect.equals(-3.14, late);
+}
+
+main() {
+  Expect.equals(3.14, late);
+  test();
+}
diff --git a/LanguageFeatures/nnbd/syntax_A04_t04.dart b/LanguageFeatures/nnbd/syntax_A04_t04.dart
new file mode 100644
index 0000000..61541bc
--- /dev/null
+++ b/LanguageFeatures/nnbd/syntax_A04_t04.dart
@@ -0,0 +1,19 @@
+// Copyright (c) 2021, 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.
+
+/// @assertion The modifier late is added as a built-in identifier. The grammar
+/// of top level variables, static fields, instance fields, and local variables
+/// is extended to allow any declaration to include the modifier late.
+///
+/// @description Checks that the 'late' word cannot be used as an import prefix
+/// @author sgrekhov@unipro.ru
+
+import "dart:collection" as late;
+//                          ^^^^
+// [analyzer] unspecified
+// [cfe] unspecified
+
+main() {
+  late.HashMap map = new late.HashMap();
+}
diff --git a/LanguageFeatures/nnbd/syntax_A04_t05.dart b/LanguageFeatures/nnbd/syntax_A04_t05.dart
new file mode 100644
index 0000000..1786a47
--- /dev/null
+++ b/LanguageFeatures/nnbd/syntax_A04_t05.dart
@@ -0,0 +1,19 @@
+// Copyright (c) 2021, 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.
+
+/// @assertion The modifier late is added as a built-in identifier. The grammar
+/// of top level variables, static fields, instance fields, and local variables
+/// is extended to allow any declaration to include the modifier late.
+///
+/// @description Checks that the 'late' word cannot be used as a class name
+/// @author sgrekhov@unipro.ru
+
+class late {}
+//    ^^^^
+// [analyzer] unspecified
+// [cfe] unspecified
+
+main() {
+  new late();
+}
diff --git a/LanguageFeatures/nnbd/syntax_A04_t06.dart b/LanguageFeatures/nnbd/syntax_A04_t06.dart
new file mode 100644
index 0000000..9028795
--- /dev/null
+++ b/LanguageFeatures/nnbd/syntax_A04_t06.dart
@@ -0,0 +1,22 @@
+// Copyright (c) 2021, 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.
+
+/// @assertion The modifier late is added as a built-in identifier. The grammar
+/// of top level variables, static fields, instance fields, and local variables
+/// is extended to allow any declaration to include the modifier late.
+///
+/// @description Checks that the 'late' word cannot be used as a type name
+/// @author sgrekhov@unipro.ru
+
+typedef late = int Function(Object a, Object b);
+//      ^^^^
+// [analyzer] unspecified
+// [cfe] unspecified
+
+main() {
+  late? l;
+//^^^^
+// [analyzer] unspecified
+// [cfe] unspecified
+}
diff --git a/LanguageFeatures/nnbd/syntax_A05_t07.dart b/LanguageFeatures/nnbd/syntax_A05_t07.dart
new file mode 100644
index 0000000..392ff42
--- /dev/null
+++ b/LanguageFeatures/nnbd/syntax_A05_t07.dart
@@ -0,0 +1,19 @@
+// Copyright (c) 2021, 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.
+
+/// @assertion The modifier required is added as a built-in identifier. The
+/// grammar of function types is extended to allow any named parameter
+/// declaration to be prefixed by the required modifier (e.g. int Function(int,
+/// {int? y, required int z}).
+///
+/// @description Checks that the 'required' word can be used as a function name
+/// @author sgrekhov@unipro.ru
+
+import "../../Utils/expect.dart";
+
+double required() => 3.14;
+
+main() {
+  Expect.equals(3.14, required());
+}
diff --git a/LanguageFeatures/nnbd/syntax_A05_t08.dart b/LanguageFeatures/nnbd/syntax_A05_t08.dart
new file mode 100644
index 0000000..eebff6b
--- /dev/null
+++ b/LanguageFeatures/nnbd/syntax_A05_t08.dart
@@ -0,0 +1,25 @@
+// Copyright (c) 2021, 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.
+
+/// @assertion The modifier required is added as a built-in identifier. The
+/// grammar of function types is extended to allow any named parameter
+/// declaration to be prefixed by the required modifier (e.g. int Function(int,
+/// {int? y, required int z}).
+///
+/// @description Checks that the 'required' word can be used as a variable name
+/// @author sgrekhov@unipro.ru
+
+import "../../Utils/expect.dart";
+
+double required = 3.14;
+
+test () {
+  double required = -3.14;
+  Expect.equals(-3.14, required);
+}
+
+main() {
+  Expect.equals(3.14, required);
+  test();
+}
diff --git a/LanguageFeatures/nnbd/syntax_A05_t09.dart b/LanguageFeatures/nnbd/syntax_A05_t09.dart
new file mode 100644
index 0000000..a19ddc9
--- /dev/null
+++ b/LanguageFeatures/nnbd/syntax_A05_t09.dart
@@ -0,0 +1,21 @@
+// Copyright (c) 2021, 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.
+
+/// @assertion The modifier required is added as a built-in identifier. The
+/// grammar of function types is extended to allow any named parameter
+/// declaration to be prefixed by the required modifier (e.g. int Function(int,
+/// {int? y, required int z}).
+///
+/// @description Checks that the 'required' word cannot be used as an import
+/// prefix
+/// @author sgrekhov@unipro.ru
+
+import "dart:collection" as required;
+//                          ^^^^^^^^
+// [analyzer] unspecified
+// [cfe] unspecified
+
+main() {
+  required.HashMap map = new required.HashMap();
+}
diff --git a/LanguageFeatures/nnbd/syntax_A05_t10.dart b/LanguageFeatures/nnbd/syntax_A05_t10.dart
new file mode 100644
index 0000000..ecfb1fb
--- /dev/null
+++ b/LanguageFeatures/nnbd/syntax_A05_t10.dart
@@ -0,0 +1,20 @@
+// Copyright (c) 2021, 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.
+
+/// @assertion The modifier required is added as a built-in identifier. The
+/// grammar of function types is extended to allow any named parameter
+/// declaration to be prefixed by the required modifier (e.g. int Function(int,
+/// {int? y, required int z}).
+///
+/// @description Checks that the 'required' word cannot be used as a class name
+/// @author sgrekhov@unipro.ru
+
+class required {}
+//    ^^^^^^^^
+// [analyzer] unspecified
+// [cfe] unspecified
+
+main() {
+  new required();
+}
diff --git a/LanguageFeatures/nnbd/syntax_A05_t11.dart b/LanguageFeatures/nnbd/syntax_A05_t11.dart
new file mode 100644
index 0000000..9f955a5
--- /dev/null
+++ b/LanguageFeatures/nnbd/syntax_A05_t11.dart
@@ -0,0 +1,23 @@
+// Copyright (c) 2021, 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.
+
+/// @assertion The modifier required is added as a built-in identifier. The
+/// grammar of function types is extended to allow any named parameter
+/// declaration to be prefixed by the required modifier (e.g. int Function(int,
+/// {int? y, required int z}).
+///
+/// @description Checks that the 'required' word cannot be used as a type name
+/// @author sgrekhov@unipro.ru
+
+typedef required = int Function(Object a, Object b);
+//      ^^^^^^^^
+// [analyzer] unspecified
+// [cfe] unspecified
+
+main() {
+  required? l;
+//^^^^^^^^
+// [analyzer] unspecified
+// [cfe] unspecified
+}