This code is not part of an API. It is implementation that is subject to change. Do not use it as an API.