(overheard at the office, and we thought others will benefit)

Suppose I have a base class in a library, which provides some basic features, but which is intended to be derived from by the library user.

For example, I have an abstract Greeting class. Subclasses represent specific types of greetings, like HighFiveGreeting or HugGreeting or whatever. Greeting provides some utility functions for subclasses, like `sendGreeting()`. I don't want users of these classes to call `sendGreeting()`.

Is that possible? Is there a better idiom in Dart for this kind of thing?

```dart
library greeting;

abstract class Greeting {
   void sendGreeting(GreetingEvent event) { ... }
}

```

---

```dart
library custom_greeting;
import 'greeting.dart';

class HugGreeting extends Greeting {
   // code here uses sendGreeting()
}

```

---

```dart
library main;
import 'custom_greeting.dart';

var hug = new HugGreeting();
hug.sendGreeting(...); // should not compile

```

---