public static ImageSectionHeader createImageSectionHeader(AbstractPdb pdb, String name,
			long unionPAVS, long virtualAddress, long rawDataSize, long rawDataPointer,
			long relocationsPointer, long lineNumbersPointer, int numRelocations,
			int numLineNumbers, long characteristics) {

		int len = name.length();
		if (len > 7) {
			fail("ImageSectionHeader name to long for creation");
		}

		PdbByteWriter writer = new PdbByteWriter();
		writer.putNullTerminatedString(name);
		if (len < 7) {
			byte[] pad = new byte[7 - len];
			while (len < 7) {
				pad[6 - len++] = 0;
			}
			writer.putBytes(pad);
		}

		writer.putUnsignedInt(unionPAVS);
		writer.putUnsignedInt(virtualAddress);
		writer.putUnsignedInt(rawDataSize);
		writer.putUnsignedInt(rawDataPointer);
		writer.putUnsignedInt(relocationsPointer);
		writer.putUnsignedInt(lineNumbersPointer);
		writer.putUnsignedShort(numRelocations);
		writer.putUnsignedShort(numLineNumbers);
		writer.putUnsignedInt(characteristics);

		ImageSectionHeader header = new ImageSectionHeader(pdb);
		PdbByteReader reader = new PdbByteReader(writer.get());
		try {
			header.parse(reader);
		}
		catch (PdbException e) {
			e.printStackTrace();
			fail("Failed to initialize ImageSectionHeader during parse");
		}

		// Sanity check by reading values back out.
		assertEquals(name, header.getName());
		assertEquals(unionPAVS, header.getUnionPAVS());
		assertEquals(virtualAddress, header.getVirtualAddress());
		assertEquals(rawDataSize, header.getRawDataSize());
		assertEquals(rawDataPointer, header.getRawDataPointer());
		assertEquals(relocationsPointer, header.getRelocationsPointer());
		assertEquals(lineNumbersPointer, header.getLineNumbersPointer());
		assertEquals(numRelocations, header.getNumRelocations());
		assertEquals(numLineNumbers, header.getNumLineNumbers());
		assertEquals(characteristics, header.getCharacteristics());

		return header;
	}
Creates an {@link ImageSectionHeader} from parameters
@param pdb PDB that the ImageSectionHeader belongs to
@param name of the section (must be 7 characters or less)
@param unionPAVS a unionPAVS value
@param virtualAddress DWORD (unsigned 32-bit) virtual address passed in as a long
@param rawDataSize DWORD (unsigned 32-bit) data size passed in as a long
@param rawDataPointer DWORD (unsigned 32-bit) data pointer passed in as a long
@param relocationsPointer DWORD (unsigned 32-bit) relocation pointer passed in as a long
@param lineNumbersPointer DWORD (unsigned 32-bit) line numbers pointer passed in as a long
@param numRelocations WORD (unsigned 16-bit) number of relocations passed in as an int
@param numLineNumbers WORD (unsigned 16-bit) num line numbers passed in as an int
@param characteristics DWORD (unsigned 32-bit) characteristics passed in as a long
@return initialized ImageSectionHeader
Ghidra/Features/PDB/src/test/java/ghidra/app/util/bin/format/pdb2/pdbreader/PdbTestUtils.java