### Question:
ElfProgramBuilder extends MemorySectionResolver implements ElfLoadHelper { static void loadElf(ElfHeader elf, Program program, List<Option> options, MessageLog log, MemoryConflictHandler handler, TaskMonitor monitor) throws IOException, CancelledException { ElfProgramBuilder elfProgramBuilder = new ElfProgramBuilder(elf, program, options, log, handler); elfProgramBuilder.load(monitor); } protected  ElfProgramBuilder(ElfHeader elf, Program program, List<Option> options,
			MessageLog log, MemoryConflictHandler handler); @Override ElfHeader getElfHeader(); @Override MemoryBlockUtil getMemoryBlockUtil(); @Override MessageLog getLog(); @Override void log(String msg); @Override void log(Throwable t); @Override AddressRange allocateLinkageBlock(int alignment, int size, String purpose); @Override void setElfSymbolAddress(ElfSymbol elfSymbol, Address address); @Override Address getElfSymbolAddress(ElfSymbol elfSymbol); @Override void markAsCode(Address address); @Override Function createOneByteFunction(String name, Address address, boolean isEntry); @Override Function createExternalFunctionLinkage(String name, Address functionAddr,
			Address indirectPointerAddr); @Override Data createUndefinedData(Address address, int length); @Override Data createData(Address address, DataType dt); @Override Address getDefaultAddress(long addressableWordOffset); @Override Address findLoadAddress(MemoryLoadable section, long byteOffsetWithinSection); @Override long getImageBaseWordAdjustmentOffset(); @Override Long getGOTValue(); @Override Symbol createSymbol(Address addr, String name, boolean isPrimary, boolean pinAbsolute,
			Namespace namespace); static final String BLOCK_SOURCE_NAME; }### Answer:
@Test public void readingElfHeader() throws Exception { ApplicationConfiguration configuration = new ApplicationConfiguration(); configuration.setInitializeLogging(false); Application.initializeApplication( new GhidraApplicationLayout(new File("../../..")), configuration); UniversalIdGenerator.initialize(); ClassLoader classLoader = getClass().getClassLoader(); File file = new File(classLoader.getResource("elf/orc_0013").getFile()); ByteProvider provider = new RandomAccessByteProvider(file); GenericFactory factory = RethrowContinuesFactory.INSTANCE; ElfHeader elf = ElfHeader.createElfHeader(factory, provider); List<Option> options = new ArrayList<Option>(); MessageLog log = new MessageLog(); LanguageCompilerSpecPair specPair = new LanguageCompilerSpecPair("x86:LE:64:default", "gcc"); LanguageService languageService = DefaultLanguageService.getLanguageService( new ResourceFile(new File( "../../Processors/x86/data/languages/x86.ldefs"))); Language language = languageService.getLanguage(specPair.languageID); CompilerSpec compilerSpec = language.getCompilerSpecByID(specPair.compilerSpecID); Object consumer = new Object(); Program prog = new ProgramDB("orc_0013", language, compilerSpec, consumer); ElfProgramBuilder.loadElf(elf, prog, options, log, MemoryConflictHandler.ALWAYS_OVERWRITE, TaskMonitor.DUMMY); }