I will try to centralize my questions/suggestions in this topic:
1) the class DescriptorException is not used, can it be removed or is it a specific Exception extending WireException ? (and the descriptors should be updated to throw this exception)
2) in collections, we only use collections of objects (for example List<Object.> or Map<Object,Object>). Maybe we could add some attribute to specify the type of the elements (this way we could check during the initialization that the elements to add are compatible).
3) Maybe we can create a AbstractInitializable class, for Descriptors that implements Initializable. This way the initializable descriptor will just have to implement construct and initialize. This abstract class would extend AbstractDescriptor and give a common implementaton for isDelayedInitializationAllowed.