I wonder if it should throw on non-Object since the caller may be ignoring the return value?