public CompiledFiletypeFilter(FiletypeFilter filetypeFilter) {
        java.util.List<Pattern> list = new ArrayList<Pattern>();
        if (filetypeFilter.isArchivesEnabled()) {
            for (ArchiveExtensions ae : ArchiveExtensions.values()) {
                list.add(ae.getPattern());
            }
        }

        if (filetypeFilter.isAudioFilesEnabled()) {
            for (AudioExtensions ae : AudioExtensions.values()) {
                list.add(ae.getPattern());
            }
        }

        if (filetypeFilter.isImagesEnabled()) {
            for (ImageExtensions ae : ImageExtensions.values()) {
                list.add(ae.getPattern());
            }
        }
        if (filetypeFilter.isVideoFilesEnabled()) {
            for (VideoExtensions ae : VideoExtensions.values()) {
                list.add(ae.getPattern());
            }
        }
        try {
            if (filetypeFilter.getCustoms() != null) {
                if (filetypeFilter.isUseRegex()) {
                    list.add(Pattern.compile(filetypeFilter.getCustoms(), Pattern.DOTALL | Pattern.CASE_INSENSITIVE));
                } else {

                    for (String s : filetypeFilter.getCustoms().split("\\,")) {
                        list.add(LinkgrabberFilterRuleWrapper.createPattern(s, false));
                    }
                }
            }
        } catch (final IllegalArgumentException e) {
            /* custom regex may contain errors */
            Log.exception(e);
        }
        matchType = filetypeFilter.getMatchType();
        this.list = list.toArray(new Pattern[list.size()]);
    }
 public Pattern compiledAllPattern() {
     return compileAllPattern(ImageExtensions.values());
 }