public static bool TryGetFeature <TFeature>(this IVirtualCompanionExecutionContext context, string key, out TFeature feature) { feature = default(TFeature); if (context.TryGetValue(key, out var value) && value is TFeature castedFeature) { feature = castedFeature; } return(!Object.Equals(feature, default(TFeature))); }