// Copyright (c) 2016, 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.

main() {
  var c1 = new BacklogListEditorState();
  var c2 = new BacklogsState();
}

class BacklogListEditorState
    extends AbstractListEditorState<BacklogsState, BacklogListEditorState> {}

class BacklogsState extends MutableEntityState<BacklogsState> {}

abstract class AbstractListEditorState<ES extends ComponentState<ES>,
    S extends AbstractListEditorState<ES, S>> extends ComponentState<S> {}

abstract class ComponentState<S extends ComponentState<S>> {}

abstract class EntityState<ES extends EntityState<ES>>
    extends ComponentState<ES> {}

abstract class MutableEntityState<S extends MutableEntityState<S>>
    extends EntityState<S> implements ComponentState<S> {}
