// Sealed class must have subclasses
// child classes in turn can be either final, non-sealed, or sealed
sealed class Fruits permits Apple, Orange, Guava {
}

// 1) cannot be extended further
final class Apple extends Fruits {

}

// 2) can be extended by the Unknown subclasses
non-sealed class Orange extends Fruits {

}

// 3 can only be extended by the permitted sub-classes
sealed class Guava extends Fruits permits RedGuava {
}

final class RedGuava extends Guava {
}