InstantWithInfinitySerializer
Writes an Instant the way a timestamptz column holds it, so that (payload->>'issued')::timestamptz reads back what was put in.
The driver already maps Instant.DISTANT_FUTURE and Instant.DISTANT_PAST onto PostgreSQL's infinities in a timestamptz column. A jsonb payload is not that column: the default serializer writes +100000-01-01T00:00:00Z there, a timestamp far away rather than an unbounded one, so the two forms of "no end date" stop comparing equal in SQL. Year 100000 is itself inside what a timestamptz holds, unlike the LocalDate and LocalDateTime markers - which is a good illustration of the second half, handled by PgDateText: the spelling is refused before the range is ever tested.
Registered contextually by octaviusSerializersModule; @Contextual on the property is what selects it.