I wonder, is there a strong use-case for multiple annotations? There's a performance penalty that comes with using an Iterable. What do you think about allowing only one annotation?

```dart
class Key {
  final Type type;
  final Object annotation;

  Key(this.type, this.annotation);
}