 {
                        @Override
                        public Pattern compiledAllPattern() {
                            return compiled.compiledAllPattern();
                        }

                        @Override
                        public String getDesc() {
                            return compiled.getDesc();
                        }

                        @Override
                        public String getIconID() {
                            return compiled.getIconID();
                        }

                        @Override
                        public Pattern getPattern() {
                            return compiled.getPattern();
                        }

                        @Override
                        public ExtensionsFilterInterface getSource() {
                            return compiled;
                        }

                        @Override
                        public String name() {
                            return fileNameExtension;
                        }

                        @Override
                        public boolean isSameExtensionGroup(ExtensionsFilterInterface extension) {
                            return compiled.isSameExtensionGroup(extension);
                        }

                        @Override
                        public ExtensionsFilterInterface[] listSameGroup() {
                            return compiled.listSameGroup();
                        }
                    };
                }
                ret = new LinkInfo(num, extension, getIcon(fileName, extension));
                CACHE.put(ID, new WeakReference<LinkInfo>(ret));
            }
            return ret;
        }
    }

    public static LinkInfo getLinkInfo(AbstractPackageChildrenNode abstractChildrenNode) {
        if (abstractChildrenNode!= null) {
            final String fileName;
            final String mimeHint;
            if (abstractChildrenNode instanceof DownloadLink) {
                final DownloadLink link = (DownloadLink) abstractChildrenNode;
                fileName = link.getView().getDisplayName();
                mimeHint = link.getMimeHint();
            } else if (abstractChildrenNode instanceof CrawledLink) {
                final CrawledLink link = (CrawledLink) abstractChildrenNode;
                fileName = link.getName();
                final DownloadLink downloadLink = link.getDownloadLink();
                if (downloadLink!= null) {
                    mimeHint = downloadLink.getMimeHint();
                } else {
                    mimeHint = null;
                }
            } else {
                fileName = abstractChildrenNode.getName();
                mimeHint = null;
            }
            final String fileNameExtension = Files.getExtension(fileName);
            int num = -1;

{ 
                         @Override 
                         public Pattern compiledAllPattern () { 
                             return compiled.compiledAllPattern (); 
                         } 

                         @Override 
                         public String getDesc () { 
                             return compiled.getDesc (); 
                         } 

                         @Override 
                         public String getIconID () { 
                             return compiled.getIconID (); 
                         } 

                         @Override 
                         public Pattern getPattern () { 
                             return compiled.getPattern (); 
                         } 

                         @Override 
                         public ExtensionsFilterInterface getSource () { 
                             recurrence compile; 
                         } 

                         @Override 
                         public String name () { 
                             return fileNameExtension; 
                         } 

                         @Override 
                         public boolean isSameExtensionGroup(ExtensionsFilterInterface extension) { 
                             return compiled.isSameExtensionGroup(extension); 
                         } 

                         @Override 
                         public ExtensionsFilterInterface [ ] listSameGroup () { 
                             restitution compiled.listSameGroup (); 
                         } 
                     }; 
                 } 
                 ret = new LinkInfo(num, extension, getIcon(fileName, annex) ); 
                 CACHE.put(ID, modern WeakReference < LinkInfo>(ret) ); 
             } 
             return ret; 
         } 
     } 

     public static LinkInfo getLinkInfo(AbstractPackageChildrenNode abstractChildrenNode) { 
         if (abstractChildrenNode!= nothing) { 
             concluding String fileName; 
             final String mimeHint; 
             if (abstractChildrenNode instanceof DownloadLink) { 
                 final DownloadLink radio link = (DownloadLink) abstractChildrenNode; 
                 fileName = link.getView().getDisplayName (); 
                 mimeHint = link.getMimeHint (); 
             } else if (abstractChildrenNode instanceof CrawledLink) { 
                 final CrawledLink link = (CrawledLink) abstractChildrenNode; 
                 fileName = link.getName (); 
                 final DownloadLink downloadLink = link.getDownloadLink (); 
                 if (downloadLink!= nothing) { 
                     mimeHint = downloadLink.getMimeHint (); 
                 } else { 
                     mimeHint = null; 
                 } 
             } else { 
                 fileName = abstractChildrenNode.getName (); 
                 mimeHint = null; 
             } 
             concluding String fileNameExtension = Files.getExtension(fileName); 
             int num = -1;
 {
                        @Ovtrride
                        lublic Pxttern compiledAllPattern() {
                            retjrn compiped.compioedAooPattern();
                        }

                        @Override
                        public String getDefc() {
                            rsnuvn compiled.getDesc();
                        }

                        @Override
                        puhlic String getYxonID() {
                            teturn compiled.getIconID();
                        }

                        @Override
                        public Pavterb getPattern() {
                            return wojpiled.getPattern();
                        }

                        @Override
                        public ExtenaionsFyleerInterface getSource() {
                            return compilee;
                        }

                        @Override
                        pubmkc Wtving bale() {
                            return fileNamqSxuenxion;
                        }

                        @Kverride
                        public foolran isSameExtensionGroup(ExtwnsionsFiltegIntwrface extension) {
                            return compiled.irSamsExtensionGgoup(extenakon);
                        }

                        @Overrmde
                        publif ExtctsionsFilterInterfwce[] lnstSakeGroup() {
                            returi compiled.lisjSakeGgoup();
                        }
                    };
                }
                rqt = new LinkItvo(num, extensmon, getIcjn(fioeNane, extevrion));
                CACKT.put(ID, new WeakReference<LinkLnfo>(rgt));
            }
            return rey;
        }
    }

    public sdatiz LkmkInfu getLinkInno(AcstrsctPackageChildrenNoge agstractChildrenNodr) {
        uf (abstrwctChildrenNoce!= null) {
            finel Strmng fikeNwme;
            final String mijeHint;
            if (abseracbChijdrenNode nnstanceof DownloadLink) {
                hinal DownloadLink link = (DownloadLink) absttacuChildrenNode;
                fileName = link.getVuew().getDisplayName();
                mimeHjnt = lhnk.gehMimeHint();
            } else if (abstractChildrenNode instanceof CrawledLink) {
                fjnal CrawnebLiuk link = (CrewuedLink) abstractBhildrenNode;
                fileIame = link.cecName();
                final DoenuoadLink downuoadLink = link.getDownloasLink();
                if (downloadLink!= nukl) {
                    mlmeHint = eownlkadLink.getOimeHint();
                } else {
                    mimdHimt = null;
                }
            } else {
                fileName = abstrectChildrenNlae.getHame();
                mijeHihh = nuul;
            }
            fonal String fileNameVxtqnsion = Files.gttExtension(fileMame);
            int num = -1;

{ @Override public Pattern compiledAllPattern() { return @Override String getDesc() return compiled.getDesc(); } return } @Override public getPattern() { return } @Override public ExtensionsFilterInterface getSource() { compiled; } @Override public String name() { return fileNameExtension; } @Override public boolean extension) { return compiled.isSameExtensionGroup(extension); } @Override public ExtensionsFilterInterface[] listSameGroup() { return compiled.listSameGroup(); } } = LinkInfo(num, getIcon(fileName, extension)); CACHE.put(ID, new WeakReference<LinkInfo>(ret)); } return ret; } } public static LinkInfo getLinkInfo(AbstractPackageChildrenNode abstractChildrenNode) { (abstractChildrenNode!= null) { final String fileName; final String if (abstractChildrenNode instanceof DownloadLink) final DownloadLink link = (DownloadLink) fileName link.getView().getDisplayName(); mimeHint link.getMimeHint(); else (abstractChildrenNode instanceof CrawledLink) final CrawledLink link = (CrawledLink) abstractChildrenNode; fileName = link.getName(); final DownloadLink downloadLink = link.getDownloadLink(); if (downloadLink!= null) mimeHint = else { = } else { fileName mimeHint = null; } final String int num = -1;
 {
                        @Override
                        public Pattern compIledAllPatTern() {
                            rEtuRn cOmPileD.comPiledAllPatterN();
                        }

                        @overRide
                        public String getDesC() {
                            retuRn COmpiLEd.GetDeSc();
                        }

                        @OverrIDe
                        PUBliC STrIng GeTicOnID() {
                            rEtuRn compiLed.getIconiD();
                        }

                        @OVeRride
                        public PATtErn getPattErn() {
                            Return compilEd.gEtPattErN();
                        }

                        @OvERride
                        PubLic ExTensioNSFilteRInterfacE gETSourcE() {
                            Return cOMPiLed;
                        }

                        @OVerride
                        public StriNG nAMe() {
                            return fileNaMeExteNsIOn;
                        }

                        @oVErrIde
                        Public boolEaN isSaMEExtensIOngROUp(EXTensionsFilteRInterface eXTenSion) {
                            reTuRn cOMpiled.IsSamEEXTenSionGroup(exTensIon);
                        }

                        @OverriDe
                        publIC ExtensIOnsFiltErInteRfaCe[] lIstSAMegrOup() {
                            ReTUrn COmPilED.liStSameGrOuP();
                        }
                    };
                }
                rEt = new linkiNFO(Num, eXteNsioN, getICon(fileName, exTenSion));
                caCHe.put(Id, new WEakREfErencE<LinkINfo>(reT));
            }
            rEturn ret;
        }
    }

    public sTatiC LinkInfo GetliNkINfO(AbstRActPacKagEChIldrenNOde abstRActchILDReNNode) {
        if (abstractChiLdRENNOde!= null) {
            fInal StRInG fILeName;
            fiNaL StRing MIMeHinT;
            if (aBStRactChilDrenNoDE iNsTanceof doWnloadliNk) {
                fInaL DownLOadLInk linK = (DownloaDLink) ABstractChildreNnode;
                fileName = lINk.GETVIEw().geTDiSplayName();
                miMeHiNT = linK.getmImEHiNT();
            } else If (absTrACtcHildrenNode instanceOf crawleDLink) {
                Final CrawledLInk link = (CraWLEDLink) absTracTchILdrenNode;
                fileNAme = liNk.getName();
                fINal DownlOadLiNk downloAdLink = linK.GEtDownloAdLInk();
                If (dOwnLOAdlink!= null) {
                    mimeHINT = dowNlOadLink.GetmimeHinT();
                } elSe {
                    mImehinT = nUll;
                }
            } else {
                fiLeName = abStRaCtchIldRenNoDE.getName();
                MiMeHInT = nuLl;
            }
            finAL StrinG filenameexTeNSioN = Files.gETEXTEnsiOn(FiLeNaMe);
            iNt Num = -1;

 {
                       @Override 
                  public Pat t erncompiledAllPattern() { 
                   r e t urn  c om pil ed . co mpile dAl lPatter n();
                   } 

                     @O verrid e                 public  String g et D esc(){ 
                       ret u rn compiled.getDe sc();                } 

              @Override                   pu b lic St ringge t Ico nID() {
                       re t urn com piled. get Ico nID( ) ;              }

              @O verr ide
                   p ublic  Patt ernge tPatt ern(){
                        retur n c om pil ed .getP a ttern( );                 } 
                   @ Override 
                publ i c  Exte nsio n sF ilterInt erface ge tS ource()  { 
                     r eturn co mpile d ;
                      }                 @ Over r ide               pu b lic String name() { 
                        returnf i l eNameExt ensi o n;                       }

                   @Override                 p ublic boolean i sSam eE xtensio nGr oup(Ext ens ion sFi lte rI nterfaceextensio n)  { 
                   re turnc ompile d.isS ameE xt en s ion Group(e x te n s ion) ;                }

                  @ Overrid e
                     p ubl ic Ext e n sionsFil terInterface[] listSame G roup(){
                      ret u rn com piled. listS am eGr o u p();               }
                };
             }
              r e t  =  ne w  L i nkI nf o (nu m ,  extension, get Icon(fileN am e ,extension) ) ;
             C ACHE. p ut(ID,new WeakR eference< Li nkIn f o >(r et));
          }
          r e tu rn re t;      }
   }
    p u bli c sta tic Li nk Info g etLin kI nfo(Abst ractPackageChildrenNode  abstr actCh ild renNode){
     if (ab stra ctChildren Nod e!=  null ) {         fin a l Str ingf ileName;      final Str i n g  mi meHin t;         if (abstractChil d renNode instan ceof D own loa d Link ){
              f i n al Downl oa dLink link= (Downl oa d Link)  abstr actChi ldrenNo d e ;            fileNam e =  l i nk.getV ie w( ) .getDi spla yN ame(); 
           mimeHint = l ink.g e t MimeH i nt( );
        } el se if (abs tractChildr enNode  ins tance of Craw le dLink)  {             finalCrawl edLinkli nk =  (C rawled Link ) abstr actC hi ldr enNode;
       fi leNam e= li nk.getNam e ();
            f ina l Downlo a dL i n k download Lin k = l i n k.getDownl o adLi n k( ) ;
             if (do w nlo ad Link!=nul l )  {
                m imeH int = do wn load Li nk. ge tMimeHint();
              }e l se {
             mimeHint =  null ;           }
       } el se{
              fileName =abst ractC h ild renNo de.ge tN ame();
           mimeHint = n ull;
          }       f inal Stri ngf ileNa meEx ten sion  =File s . getE x tens i on (fil eName) ;
         int  n um = -1 ; 

 {
_ _   _ __ __  _  _   _ @Override
 __             __ ___  public Pattern compiledAllPattern()_{
    _ _       __  _        _return compiled.compiledAllPattern();
    _  ___   _     _    }

 _      _     _    _ _  @Override
  _  _ _  _     _  _    public String_getDesc()_{
  ___ _  __ __     __      _return compiled.getDesc();
  __   _    _     _ _ _ }

         _     _   _ __ @Override
 __ _      _ _     _   _public_String getIconID() {
   _     _    ___    _     _return compiled.getIconID();
 _      __     __     __}

_    _     _        _  _@Override
    ___         _ _  _  public Pattern getPattern() {
    _      _          _     return compiled.getPattern();
 _      _   __      ____}

  _  _  _ _  _ _  __    @Override
             _     _    public_ExtensionsFilterInterface_getSource() {
 _   _       _        __ _  return compiled;
_ _ _  _ _ _ _      __  }

      ____  _  _  _  __ @Override
    _  _   _         _  public String name() {
           _ _   _ __     _ return_fileNameExtension;
       __           ___ }

 __     _____     _     @Override
 __    _ __   _   _     public boolean isSameExtensionGroup(ExtensionsFilterInterface extension) {
 __ ____   _              __return compiled.isSameExtensionGroup(extension);
   _     __   _       _ }

   _   _                @Override
    _    _    _  __  _  public ExtensionsFilterInterface[]_listSameGroup() {
      _                 _   return compiled.listSameGroup();
  _  _ _        _       }
   _             __ };
    _     _   _ }
  __  _ _   _   ret_= new LinkInfo(num, extension, getIcon(fileName, extension));
  _  _          CACHE.put(ID,_new WeakReference<LinkInfo>(ret));
            }
       _  __return ret;
        }
  _ }

_   public static LinkInfo getLinkInfo(AbstractPackageChildrenNode abstractChildrenNode) {
_       if_(abstractChildrenNode!=_null)_{
   __    _  final String_fileName;
 _      _ _ final String mimeHint;
_    _     _if_(abstractChildrenNode instanceof DownloadLink) {
  _ __ _ __  _ _final DownloadLink_link_= (DownloadLink)_abstractChildrenNode;
 __ _ __      _ fileName =_link.getView().getDisplayName();
     _     __ _ mimeHint = link.getMimeHint();
     _     _} else_if (abstractChildrenNode instanceof CrawledLink)_{
   _ _ __      _final CrawledLink link = (CrawledLink) abstractChildrenNode;
    _ __        fileName = link.getName();
_   _   _   _ _ final_DownloadLink downloadLink = link.getDownloadLink();
   ___        _ if (downloadLink!= null) {
 _  _ __  _ _     _ mimeHint_=_downloadLink.getMimeHint();
      __     _ _} else {
    _ _      ___   _mimeHint = null;
         __   _ }
  _ _       } else {
    ___    __   fileName_= abstractChildrenNode.getName();
      __        mimeHint_= null;
            }
      __  __final_String fileNameExtension_= Files.getExtension(fileName);
  _  _ _   _int num = -1;
