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

// A dummy library for testing dartdoc name references.
#library('dummy');

topLevelMethod() => null;

class Class {
  Class() => null;
  Class.namedConstructor() => null;
  method(param) => null;
  get getterOnly => null;
  get getterAndSetter => null;
  set getterAndSetter(val) => null;
  set setterOnly(val) => null;
}
