static T Unbox <T>(object o) { if (o is T) { return((T)o); } if (o == null && !typeof(T).IsValueType) { return((T)o); } return((T)Closure.AssertionViolation(false, "expected type: " + GetTypeName(typeof(T)), o)); }