// 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.
//

#library("library10.dart");

#import("library11.dart", prefix : "lib11");
class Library10 {
  Library10(this.fld);
  func() {
    return 2;
  }
  var fld;
  static static_func() {
    var result = 0;
    var obj = new lib11.Library11(4);
    result = obj.fld;
    Expect.equals(4, result);
    result += obj.func();
    Expect.equals(7, result);
    result += lib11.Library11.static_func();
    Expect.equals(9, result);
    result += lib11.Library11.static_fld;
    Expect.equals(10, result);
    Expect.equals(100, lib11.top_level11);
    Expect.equals(200, lib11.top_level_func11());
    return 3;
  }
  static var static_fld = 4;
}

const int top_level10 = 10;
top_level_func10() {
  return 20;
}
