os86.setObjectRef(new Label("$$jmp-introCode"));
	protected void initImageHeader(NativeStream os, Label clInitCaller, Vm vm, PluginRegistry pluginRegistry) throws BuildException {		try {			int startLength = os.getLength();			VmType vmCodeClass = loadClass(VmMethodCode.class);			final X86Stream.ObjectInfo initObject = os.startObject(vmCodeClass);			final int offset = os.getLength() - startLength;			if (offset != JUMP_MAIN_OFFSET) {				throw new BuildException("JUMP_MAIN_OFFSET is incorrect [" + offset + "] (set to Object headersize)");			}			final X86Stream os86 = (X86Stream) os;			final Label introCode = new Label("$$introCode");						os86.writeJMP(introCode);			initObject.markEnd();			// The loading of class can emit object in between, so first load			// all required classes here.			loadClass(Main.class);			loadClass(MathSupport.class);			loadClass(MonitorManager.class);			loadClass(SoftByteCodes.class);			loadClass(Vm.class);			loadClass(VmMethod.class);			loadClass(VmProcessor.class);			loadClass(VmThread.class);			loadClass(VmType.class);			loadClass(VmSystem.class);			loadClass(VmSystemObject.class);						final X86Stream.ObjectInfo initCodeObject = os.startObject(vmCodeClass);			os86.setObjectRef(introCode);			initMain(os86, pluginRegistry);			initVm(os86, vm);			//initHeapManager(os86, vm);			initVmThread(os86);			os.setObjectRef(new Label("$$Initial call to clInitCaller"));			os86.writeCALL(clInitCaller);			initCallMain(os86);			initCodeObject.markEnd();		} catch (ClassNotFoundException ex) {			throw new BuildException(ex);		}	}