introduced a builder interface, which is the product of a completed definition and is used to build the defined objects
implemented builders for both direct or intermediate building, and a thread-safe caching reflection helper