@Override
        Parser createComposite(Class<? extends Parser> parserClass, List<Parser> childParsers,
                               Set<Class<? extends Parser>> excludeParsers,
                               Map<String, Param> params, MimeTypes mimeTypes, ServiceLoader loader)
                throws InvocationTargetException, IllegalAccessException, InstantiationException {
            Parser parser = null;
            Constructor<? extends Parser> c;
            MediaTypeRegistry registry = mimeTypes.getMediaTypeRegistry();

            // Try the possible default and composite parser constructors
            try {
                c = parserClass.getConstructor(MediaTypeRegistry.class, ServiceLoader.class,
                        Collection.class, EncodingDetector.class, Renderer.class);
                parser = c.newInstance(registry, loader, excludeParsers, encodingDetector, renderer);
            } catch (NoSuchMethodException me) {
                //swallow
            }
            if (parser == null) {
                try {
                    c = parserClass.getConstructor(MediaTypeRegistry.class, ServiceLoader.class,
                            Collection.class, EncodingDetector.class);
                    parser = c.newInstance(registry, loader, excludeParsers, encodingDetector);
                } catch (NoSuchMethodException me) {
                    //swallow
                }
            }
            if (parser == null) {
                try {
                    c = parserClass.getConstructor(MediaTypeRegistry.class, ServiceLoader.class,
                            Collection.class);
                    parser = c.newInstance(registry, loader, excludeParsers);
                } catch (NoSuchMethodException me) {
                    //swallow
                }
            }
            if (parser == null) {
                try {
                    c = parserClass
                            .getConstructor(MediaTypeRegistry.class, List.class, Collection.class);
                    parser = c.newInstance(registry, childParsers, excludeParsers);
                } catch (NoSuchMethodException me) {
                    //swallow
                }
            }
            if (parser == null) {
                try {
                    c = parserClass
                            .getConstructor(MediaTypeRegistry.class, Collection.class, Map.class);
                    parser = c.newInstance(registry, childParsers, params);
                } catch (NoSuchMethodException me) {
                    //swallow
                }
            }
            if (parser == null) {
                try {
                    c = parserClass.getConstructor(MediaTypeRegistry.class, List.class);
                    parser = c.newInstance(registry, childParsers);
                } catch (NoSuchMethodException me) {
                    //swallow
                }
            }

            // Create as a Parser Decorator
            if (parser == null && ParserDecorator.class.isAssignableFrom(parserClass)) {
                try {
                    CompositeParser cp;
                    if (childParsers.size() == 1 && excludeParsers.isEmpty() &&
                            childParsers.get(0) instanceof CompositeParser) {
                        cp = (CompositeParser) childParsers.get(0);
                    } else {
                        cp = new CompositeParser(registry, childParsers, excludeParsers);
                    }
                    c = parserClass.getConstructor(Parser.class);
                    parser = c.newInstance(cp);
                } catch (NoSuchMethodException me) {
                    //swallow
                }
            }
            return parser;
        }
Gets parameters from a given

@param el xml node which has {@link #PARAMS_TAG_NAME} child
@return Map of key values read from xml
tika-core/src/main/java/org/apache/tika/config/TikaConfig.java