Version 2.8.2

* Cherry-pick 86010dbe98193590f3b583366a5c9d7332b6a423 to stable
* Cherry-pick 33056425aff7c3bfff29410b4490ea2eec6c3e34 to stable
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 90d3ea8..3cc8926 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,11 @@
+## 2.8.2 - 2020-05-13
+
+This is a patch release that fixes an AOT compilation bug in global
+transformations which manifests as a NoSuchMethod exception
+(issue [flutter/flutter#56479][]).
+
+[flutter/flutter#56479]: https://github.com/flutter/flutter/issues/56479
+
 ## 2.8.1 - 2020-05-06
 
 Much of the changes in this release are in preparation for non-nullable types,
diff --git a/pkg/vm/lib/transformations/type_flow/transformer.dart b/pkg/vm/lib/transformations/type_flow/transformer.dart
index 296bc42..778a89b 100644
--- a/pkg/vm/lib/transformations/type_flow/transformer.dart
+++ b/pkg/vm/lib/transformations/type_flow/transformer.dart
@@ -874,12 +874,12 @@
 
   @override
   TreeNode defaultMember(Member node) {
+    currentMember = node;
     if (shaker.isMemberBodyReachable(node)) {
       if (kPrintTrace) {
         tracePrint("Visiting $node");
       }
       shaker.addUsedMember(node);
-      currentMember = node;
       node.transformChildren(this);
     } else if (shaker.isMemberReferencedFromNativeCode(node)) {
       // Preserve members referenced from native code to satisfy lookups, even
@@ -888,11 +888,13 @@
       // its enclosing class are allocated.
       shaker.addUsedMember(node);
     }
+    currentMember = null;
     return node;
   }
 
   @override
   TreeNode visitField(Field node) {
+    currentMember = node;
     if (shaker.isMemberBodyReachable(node)) {
       if (kPrintTrace) {
         tracePrint("Visiting $node");
@@ -912,6 +914,7 @@
       // its enclosing class are allocated.
       shaker.addUsedMember(node);
     }
+    currentMember = null;
     return node;
   }
 
diff --git a/tests/language_2/vm/regress_flutter_56479_test.dart b/tests/language_2/vm/regress_flutter_56479_test.dart
new file mode 100644
index 0000000..87e3a70
--- /dev/null
+++ b/tests/language_2/vm/regress_flutter_56479_test.dart
@@ -0,0 +1,19 @@
+// Copyright (c) 2020, 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.
+
+// Verifies that optional parameters can be transformed in field initializers.
+// Regression test for https://github.com/flutter/flutter/issues/56479.
+
+import "package:expect/expect.dart";
+
+int bar({int x = 2}) => x + 1;
+
+class A {
+  static int foo = bar(x: 42);
+}
+
+main() {
+  Expect.equals(5, bar(x: 4));
+  Expect.equals(43, A.foo);
+}
diff --git a/tools/VERSION b/tools/VERSION
index aa5de78..65c2502 100644
--- a/tools/VERSION
+++ b/tools/VERSION
@@ -32,7 +32,7 @@
 CHANNEL stable
 MAJOR 2
 MINOR 8
-PATCH 1
+PATCH 2
 PRERELEASE 0
 PRERELEASE_PATCH 0
 ABI_VERSION 32