> For clean Markdown content of this page, append .md to this URL. For the complete documentation index, see https://buildwithfern.com/learn/llms.txt.

## 4.9.0

**`(feat):`** Add `exported-client-class-name` config to the Java SDK generator. When set, docs surfaces
(dynamic snippets, README, reference.md) display this name for the root client instead of
`client-class-name` — for teams that wrap the generated client with a hand-written public class
and want documentation to show the wrapper. Generated source code and wire tests are unaffected.

**`(fix):`** SSE streaming endpoints now decide protocol-level vs data-level union discrimination from the API spec's x-fern-discriminator-context (IR discriminatorContext) instead of inferring from the discriminator's field name. Unions whose discriminator happens to be named event/id/retry/data but lives in the data payload are now correctly parsed from the data JSON; envelope dispatch only happens when x-fern-discriminator-context: protocol is explicit.

## 4.8.12

**`(fix):`** Fix compilation error on multipart file-upload endpoints when idempotency
headers are configured. The generator now emits `headers((RequestOptions) null)`
instead of a bare `headers(null)`, which resolves the ambiguous method
reference between `headers(RequestOptions)` and
`headers(IdempotentRequestOptions)` overloads in `ClientOptions`.