// Copyright (c) 2023, 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 class_modifiers.dart;

class A {}

base class B {}

interface class C {}

final class D {}

sealed class E {}

abstract class F {}

abstract base class G {}

abstract interface class H {}

abstract final class I {}

mixin class J {}

base mixin class K {}

abstract mixin class L {}

abstract base mixin class M {}

mixin N {}
base mixin O {}
