@Nullable
  private Pair<ColorAndFontDescriptorsProvider, ? extends AbstractKeyDescriptor<?>> getDescriptorImpl(Object key) {
    JBIterable<ColorAndFontDescriptorsProvider> providers = JBIterable.empty();
    for (ColorAndFontDescriptorsProvider page : providers.append(getRegisteredPages()).append(ColorAndFontDescriptorsProvider.EP_NAME.getExtensionList())) {
      Iterable<? extends AbstractKeyDescriptor<?>> descriptors;
      if (key instanceof TextAttributesKey) {
        descriptors = ColorSettingsUtil.getAllAttributeDescriptors(page);
      }
      else {
        descriptors = key instanceof ColorKey ? JBIterable.of(page.getColorDescriptors()) : Collections.emptyList();
      }

      for (AbstractKeyDescriptor<?> descriptor : descriptors) {
        if (descriptor.getKey() == key) {
          return new Pair<>(page, descriptor);
        }
      }
    }
    return null;
  }
@Nullable
  private Pair<ColorAndFontDescriptorsProvider, ? extends AbstractKeyDescriptor<?>> getDescriptorImpl(Object key)