Some further thoughts.
Prototypes fit well for:
- Read-only configurations (no action at distance)
- Serializable inheritence hierarchies
(no requires required for deserializing,
B::Deparse to serialize)
- Exception objects
(often one-hit sub-types in a type hierarchy)
- Proxy objects that delegate
- Parameter objects, defaults (?)
The common thread looks like runtime flexibility needs.