// Copyright (c) 2011, 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.
// VMOptions=--enable_type_checks --enable_asserts

// @dart = 2.9

typedef Handler(bool e);

class Hello {
  Hello() {}
  void handler2(bool e) {
    print('handler2');
  }

  static void handler1(bool e) {
    print('handler1');
  }

  void addEventListener(String s, Handler handler, bool status) {
    handler(status);
  }

  static void main() {
    final h = new Hello();
    h.addEventListener('click', handler1, false);
    h.addEventListener('click', h.handler2, false);
  }
}

main() {
  Hello.main();
}
