@Nullable
  private static CharFilter.Result getFilterDecision(char charTyped, LookupImpl lookup) {
    lookup.checkValid();
    LookupElement item = lookup.getCurrentItem();
    int prefixLength = item == null ? lookup.getAdditionalPrefix().length(): lookup.itemPattern(item).length();

    for (CharFilter extension : CharFilter.EP_NAME.getExtensionList()) {
      CharFilter.Result result = extension.acceptChar(charTyped, prefixLength, lookup);
      if (result != null) {
        if (LOG.isDebugEnabled()) {
          LOG.debug(extension + " of " + extension.getClass() + " returned " + result);
        }
        return result;
      }
      if (lookup.isLookupDisposed()) {
        throw new AssertionError("Lookup disposed after " + extension);
      }
    }
    return null;
  }
@Nullable
  private static CharFilter.Result getFilterDecision(char charTyped, LookupImpl lookup)