public class GenericCounter { private static int count = 0; public static void Increment() { count++; } public static int GetCount() { return count; } public static void Reset() { count = 0; } } class Program { static int Main(string[] argv) { // Test that different generic instantiations have separate static variables // Initial state should be 0 for all if (GenericCounter.GetCount() != 0) return 1; if (GenericCounter.GetCount() != 0) return 2; // Increment int version 3 times GenericCounter.Increment(); GenericCounter.Increment(); GenericCounter.Increment(); // Increment string version 2 times GenericCounter.Increment(); GenericCounter.Increment(); // Verify counts are independent if (GenericCounter.GetCount() != 3) return 3; if (GenericCounter.GetCount() != 2) return 4; // Reset int version only GenericCounter.Reset(); // Verify reset only affected int version if (GenericCounter.GetCount() != 0) return 5; if (GenericCounter.GetCount() != 2) return 6; // Test passes - static variables are isolated per generic instantiation return 0; } }