private static int GetComponent(ConversionStorage <int> /*!*/ conversionStorage, object[] components, int index, int defValue, bool zeroOk) { if (index >= components.Length || components[index] == null) { return(defValue); } object component = components[index]; int result; try { result = Protocols.CastToFixnum(conversionStorage, component); } catch (InvalidOperationException) { MutableString str = component as MutableString; if (str == null) { throw; } result = checked ((int)MutableStringOps.ToInteger(str, 10)); } if (result == 0 && !zeroOk) { return(defValue); } else { return(result); } }