Should this maybe accept any kind of id and pass it directly on to search?  I just inserted this assert because there was an unchecked cast, but maybe it would be better to pass an `Object*` through?