wenn du einen weg findest finalComponent nicht überschreiben zu müssen brauchst du den array quark nicht.
gibt es einen Grund warum die Variable hier außerhalb allokiert wird aber nur innerhalb des if statements genutzt wird?
initialisierung und sofortig bedingtes überschreiben würde ich als bad practice einstufen...
die null checks überall sind nicht schön, es macht vielleicht eher sinn am anfang einmal zu prüfen ob ein Eintrag vorhanden ist und wenn nicht ne leere Liste zu initialisieren..
hier wird ganz oft this.replyMapping.get(sender)
verwendet, rausziehen in eine eigene variable z.B. replyMap = this.replyMapping.get(sender)
mein Vorschlag hier wäre du throwst nach dem custom fehler einfach nochmal die exception throw e
und packst in die Objects.requireNonNull das angefragte rein. Dann ist alles immer ersichtlich.