public void addDescriptor(Descriptor descriptor) { if (descriptor != null) { String name = descriptor.getName(); if (useTypes) { Class<?> type = descriptor.getType(this); if (type != null) { if ((name == null) && (descriptor instanceof AbstractDescriptor)) { name = type.getName(); ((AbstractDescriptor) descriptor).setName(type.getName()); } if ((name != null) && ((descriptors == null) || (!descriptors.containsKey(name)))) { // add all superclasses and interfaces to map to this descriptor addDescriptorType(type, descriptor, name); } } } if ((name != null) && (!hasDescriptor(name))) { putDescriptor(name, descriptor); if (descriptor.isEagerInit()) { addEagerInitObjectName(name); } } } }