/**
   * Walks over the VCF header and repairs the standard VCF header lines in it, returning a freshly
   * allocated {@link VCFHeader} with standard VCF header lines repaired as necessary.
   */
  public static VCFHeader repairStandardHeaderLines(final VCFHeader header) {
    final Set<VCFHeaderLine> newLines =
        new LinkedHashSet<VCFHeaderLine>(header.getMetaDataInInputOrder().size());
    for (VCFHeaderLine line : header.getMetaDataInInputOrder()) {
      if (line instanceof VCFFormatHeaderLine) {
        line = formatStandards.repair((VCFFormatHeaderLine) line);
      } else if (line instanceof VCFInfoHeaderLine) {
        line = infoStandards.repair((VCFInfoHeaderLine) line);
      }

      newLines.add(line);
    }

    return new VCFHeader(newLines, header.getGenotypeSamples());
  }