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

class Spoo<T> {
  Spoo() { }
  Spoo.other() { }
}

main() {
  // Static method reference to Other0.
  var v = Other0.value();

  // Reference Other1 via new.
  var o1 = new Other1();

  // Static field reference to Other3.
  var f = Other3.field;

  // Reference SomeClass via new, and SomeClassImpl transitively.
  var sc = new SomeClass();
  var msg = sc.message;
}

class Qualifiers extends QualifierBase {
  void fn() {
    // Qualified reference to Other6's method.
    var result = other6.method();
  }
}

// Reference Other2 by subclassing it.
class Foo extends Other2 {
  foo() {
    // unqualified reference to superclass method.
    methodHole();

    // unqualified reference to superclass field.
    return hole;
  }

  int bar() {
    // qualified reference
    return super.not_hole.contents;
  }
}

// Reference Other4 using it as a type parameter bound.
class Bar<T extends Other4> {
}
