public class LoginContextUnwrappingConverter extends Converter.Factory { @Override public Converter responseBodyConverter(Type type, Annotation[] annotations, Retrofit retrofit) { if (type != LoginContext.class) { return null; } final Converter delegate = retrofit.nextResponseBodyConverter(this, LoginResponse.class, annotations); return body -> { LoginResponse wrapper = delegate.convert(body); return wrapper.context(); }; } }