@hinerm pointed out that the matching behavior within DefaultOpEnvironment.simplifiedOp() should be able to handle runtime assignability. This would result in the behavior of MatchingUtils.isSafeAssignable() being redundant. If we then implement hints (see #43), adding a allowRuntimeAssignability hint would result in checks for this hint in two places. It might be wise to ensure that direct matching only checks compile-time assignability.