A program execution engine that facilitates generic type variance
verification is provided. The execution engine receives a program
executable in the form of intermediate language (IL). The program
executable can be based on code that includes expression(s) with generic
type(s) which have been identified as requiring variance verification
(e.g., covariance and/or contra-variance). The execution engine includes
a variance verification component that dynamically determines whether
value(s) associated with the generic type(s) identified as requiring
variance verification comply with the particular variance verification
requirement. The variance verification component can provide error
information (e.g., throw an exception), if the specified variance is not
safely compliant. Variance verification can be based on static checking
which places the burden on a source language compiler to emit the
run-time checks in intermediate language (IL), if run-time checked
variance is required. Additionally, language(s) that do not support
variance can treat generic type(s) as non-variant.