private IComponentDescriptor<? extends IComponent> createOrGetRefQueryDescriptor( IComponentDescriptor<? extends IComponent> referencedDescriptor, Class<? extends IComponent> referencedType) { IComponentDescriptor<? extends IComponent> refQueryDescriptor; synchronized (registry) { refQueryDescriptor = registry.get(referencedType); if (refQueryDescriptor == null) { refQueryDescriptor = new RefQueryComponentDescriptor<>(referencedDescriptor, referencedType, registry, accessorFactory); ((RefQueryComponentDescriptor<?>) refQueryDescriptor).finishConfiguration(); } } return refQueryDescriptor; }