While doing some profiling I noticed a considerable amount of time is spent initializing JAXB context. In my scenario this mostly happens in the ctor of QueryOptionsHandle but other handles (e.g. ValuesHandle, ValuesListHandle and TuplesHandle seem to show a similar pattern).
According to the JAXB maintainers it is safe to create the JAXB context only once as long as threads use private marshaller/unmarshaller instances.
Any objections to push the JAXB context into a static member and only create marshaller/unmarshaller per handle instance? I would be glad to take this up.