private Map<String, Object> resolveExtensionBuilderAttributes(String docdir, Map<String, Object> docAttributes) {
        Map<String, Object> map = new LinkedHashMap<>(docAttributes);

        if(Objects.isNull(docdir)){
            return map;
        }

        Path docPath = Paths.get(docdir);

        if(Files.notExists(docPath)){
            return map;
        }

        for (String node_extension : node_extensions) {
            Path extensionPath = Optional.ofNullable(map.get(node_extension))
                    .map(p -> {
                        return resolveExtensionPath(docPath, p);
                    })
                    .orElseGet(() -> {
                        String p = String.format("./node_modules/.bin/%s", node_extension);
                        return resolveExtensionPath(docPath, p);
                    });
            if (Objects.nonNull(extensionPath)) {
                if (!extensionPathMap.containsKey(node_extension)) {
                    logger.info("Extension path resolved: {}", extensionPath);
                }
                map.put(node_extension, extensionPath.toString());
                extensionPathMap.put(node_extension, extensionPath);
            }
        }

        return map;
    }
Set additional attributes in the GUI.
Only needed if child class has additional elements which are not shown
in the parent class.
@param childClassAttributes
@see AsciidoctorConfigBase#load(Path, ActionEvent...)
src/main/java/com/kodedu/config/AsciidoctorConfigBase.java