Concept Flow - Covariance with out keyword
Define interface with out T
Implement interface with specific types
Assign derived type instance to base type variable
Use interface methods returning T
Observe covariance allows safe assignment
Covariance with the out keyword lets you use a more derived type where a base type is expected, safely allowing assignment and method returns.