Agreed there is a performance/encapsulation tradeoff in leaking the internal data structure externally. The purpose of this class is primarily for a performance benefit in certain situations over the existing headers which do not leak internals. I think its OK to allow the caller to determine if copying is necessary or not and clarify in javadocs. 