// Copyright (c) 2016, 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.

// @dart=2.6

class Foo {
  var _field;
}

class FooValue {}

class Bar {
  var _field; // Same name.
}

class BarValue {}

main() {
  var foo = new Foo();
  foo._field = new FooValue();
  var fooValue = foo._field;
  print(fooValue);

  var bar = new Bar();
  bar._field = new BarValue();
  var barValue = bar._field;
  print(barValue);
}
