Tendentiell machst Du als Java Entwickler ziemlich viele häßlich aussehende null checks
if (variableMhhMhhMhh == null) {
throw new IllegalStateException("variableMhhMhhMhh is null, but shouldn't.");
}
und auch
if (collection.size() <= 0) {
throw new IllegalStateException("Collection xxxx is empty");
}
was irgendwie dasselbe ist.
Das macht den code DEFINITIV robuster. Falls ein Fehler auftritt, ist der stack trace einfacher zu verstehen.
So ist das letztlich ein Folgefehler, der sehr viel später in itext auffällt.
Was Du der externen Bibliothek (d.h. itext) über den Zaun wirfst, validierst Du so vorher auf Korrektheit.