private static String builderType(CNode node) {
        if (node instanceof InnerCNode) {
            return boxedDataType(node) + ".Builder";
        } else if (node instanceof FileLeaf) {
            return "String";
        } else if (node instanceof PathLeaf) {
            return "FileReference";
        } else if (node instanceof OptionalPathLeaf) {
            return "Optional<FileReference>";
        } else if (node instanceof UrlLeaf) {
            return "UrlReference";
        } else if (node instanceof ModelLeaf) {
            return "ModelReference";
        } else if (node instanceof LeafCNode && (node.isArray || node.isMap)) {
            return boxedDataType(node);
        } else {
            return userDataType(node);
        }
    }
\n" + //
                    " * Make a new builder and run the supplied function on it before using it as the value\n" + //
                    " * @param __func lambda that modifies the given builder\n" + //
                    " * @return this builder\n" + //
                    "
configgen/src/main/java/com/yahoo/config/codegen/BuilderGenerator.java