@NotNull
  public Object[] getVariants() {
    final String[] ids = InjectedLanguage.getAvailableLanguageIDs();
    return ContainerUtil.map2Array(
        ids,
        LookupElement.class,
        new Function<String, LookupElement>() {
          public LookupElement fun(String s) {
            final Language l = InjectedLanguage.findLanguageById(s);
            assert l != null;

            final FileType ft = l.getAssociatedFileType();
            if (ft != null) {
              return LookupElementBuilder.create(s)
                  .setIcon(ft.getIcon())
                  .setTypeText(ft.getDescription());
              //                } else if (l == StdLanguages.EL) {
              //                    // IDEA-10012
              //                    return new LanguageLookupValue(s, StdFileTypes.JSP.getIcon(),
              // "Expression Language");
            }
            return LookupElementBuilder.create(s).setIcon(EmptyIcon.ICON_16);
          }
        });
  }