# Copyright (c) 2017, 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.

main.dart.patch: |
  // Test that a newly instantiated class is handled

  class A {
    m() {
      print('Called A.m');
    }
  }

  class B {
    m() {
      print('Called B.m');
    }
  }

  var instance;
  main() {
    if (instance == null) {
      print('instance is null');
      instance = new A();
  <<<< ["instance is null","Called A.m"]
  ==== ["Called B.m"]
    } else {
      instance = new B();
  >>>>
    }
    instance.m();
  }
