public Set<String> getCombinedHeaders(String[] h1, String[] h2, Set ignoreSet) {
        Set<String> headerFields = new HashSet<String>();
        int idCounter = 0;
        for(String field : h1) {
            if("id".equals(field)) {
                idCounter += 1;
            }
            if(! ignoreSet.contains(field)) {
                headerFields.add(field);
            }
        }
        for(String field : h2) {
            if("id".equals(field)) {
                idCounter += 1;
            }
            if(! ignoreSet.contains(field)) {
                headerFields.add(field);
            }
        }
        if(idCounter != 2) {
            throw new DataUtilException("Invalid header format. The \"id\" field must be present in both files");
        }
        if(headerFields.size() < h1.length || headerFields.size() < h1.length) {
            throw new DataUtilException("Invalid header format. Repeated header fields with the same name");
        }
        return headerFields;
    }