private static Type GetWidestType(Type Type1, Type Type2) { if ((Type1 != null) && (Type2 != null)) { if (!Type1.IsEnum && !Type2.IsEnum) { TypeCode typeCode = Symbols.GetTypeCode(Type1); TypeCode code2 = Symbols.GetTypeCode(Type2); if (Symbols.IsNumericType(typeCode) && Symbols.IsNumericType(code2)) { return(Symbols.MapTypeCodeToType(ConversionResolution.ForLoopWidestTypeCode[(int)typeCode][(int)code2])); } } Symbols.Method operatorMethod = null; switch (ConversionResolution.ClassifyConversion(Type2, Type1, ref operatorMethod)) { case ConversionResolution.ConversionClass.Identity: case ConversionResolution.ConversionClass.Widening: return(Type2); } operatorMethod = null; if (ConversionResolution.ClassifyConversion(Type1, Type2, ref operatorMethod) == ConversionResolution.ConversionClass.Widening) { return(Type1); } } return(null); }