A decorator wraps a StreamHandle and returns an enhanced handle
with additional capabilities C (e.g. Seekable). When C is
known at the call site (the common case - a specific decorator is applied
directly), consumers get static typing with no runtime capability check
needed. Where a handle arrives already decorated by unknown/dynamic
decorators, use the is* type guards above instead.
A decorator wraps a StreamHandle and returns an enhanced handle with additional capabilities
C(e.g. Seekable). WhenCis known at the call site (the common case - a specific decorator is applied directly), consumers get static typing with no runtime capability check needed. Where a handle arrives already decorated by unknown/dynamic decorators, use theis*type guards above instead.