These docs seem to do double-duty for both defining the abstract type and defining the composer interface, which does not necessarily specialize the abstract type. Perhaps we should make that explicit, or just suggest specializing this and be very explicit about which methods should be overridden, when, and how. You’ve already written the meat of this. Just needs an adjustment to become a call-to-action.