| // Copyright (c) 2018, 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.md file. | 
 |  | 
 | abstract class A { | 
 |   var bar; | 
 |   factory A.bar() = B.bar; | 
 |  | 
 |   get foo => bar; | 
 |   static get baz => bar; //# 01: compile-time error | 
 | } | 
 |  | 
 | class B implements A { | 
 |   var bar; | 
 |   factory B.bar() => new C.bar(); | 
 |  | 
 |   get foo => bar; | 
 |   static get baz => bar; //# 02: compile-time error | 
 |  | 
 |   B() {} | 
 | } | 
 |  | 
 | class C extends B { | 
 |   C.bar() { | 
 |     bar = "foo"; | 
 |   } | 
 |  | 
 |   static get baz => bar; //# 03: compile-time error | 
 | } | 
 |  | 
 | main() { | 
 |   assert(new A.bar().foo == "foo"); | 
 |   assert(new B.bar().foo == "foo"); | 
 |   assert(new C.bar().foo == "foo"); | 
 |   assert(new A.bar().bar == "foo"); | 
 |   assert(new B.bar().bar == "foo"); | 
 |   assert(new C.bar().bar == "foo"); | 
 | } |