(3) может быть. надо смотреть сколько по времени такое сравнение займет. может получиться, что руками быстрее дописать типы будет.
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство. Фредерик Брукс-младший