private void writeHeaderFile(Path outDir, CHeader.Header header, List<HostedMethod> methods, boolean dynamic) { CSourceCodeWriter writer = new CSourceCodeWriter(outDir.getParent()); String imageHeaderGuard = "__" + header.name().toUpperCase().replaceAll("[^A-Z0-9]", "_") + "_H"; String dynamicSuffix = dynamic ? "_dynamic.h" : ".h"; List<String> dependencies = header.dependsOn().stream() .map(NativeBootImage::instantiateCHeader) .map(depHeader -> "<" + depHeader.name() + dynamicSuffix + ">").collect(Collectors.toList()); writer.includeFiles(dependencies); header.writePreamble(printWriter); printWriter.flush(); for (String line : baos.toString().split("\\r?\\n")) { String fileName = outDir.getFileName().resolve(header.name() + dynamicSuffix).toString(); writer.writeFile(fileName, false);