@Override
	public void nextStep() {
		Resource res;
		switch (this.step) {
		case (0):
			// Blokuotas, laukiam resurso "Pakrovimo paketas"
			res = Core.resourceList.searchResource(ResourceType.LOAD_PACK);
			if (res != null) {
				LoaderPacketDescriptor descriptor = (LoaderPacketDescriptor) res.getDescriptor();
				this.jg = (JobGovernor) res.getParent();
				res.setParent(this);
				this.programName = descriptor.getFilename();
				this.vmm = descriptor.getMemory();
				this.changeStep(1);
			} else {
				this.changeStep(0);
			}
			break;
		case (1):
			// Blokuotas, laukiam resurso "Kanalų įrenginys"
			res = Core.resourceList.searchResource(ResourceType.CH_DEV);
			if (res != null) {
				if (res.getParent() == null) {
					res.setParent(this);
					this.changeStep(2);
				} else {
					this.changeStep(1);
				}
			} else {
				this.changeStep(1);
			}
			break;
		case (2):
			// Nustatom kanalų įrenginio registrus ir vykdom komandą XCHG
			ChannelsDevice.ST = 3; // Šaltinis: išorinė atmintis
			ChannelsDevice.DT = 1; // Tikslas: vartotojo atmintis
			ChannelsDevice.programName = this.programName;
			ChannelsDevice.vmm = this.vmm;
			ChannelsDevice.XCHG();
			this.changeStep(3);
			break;
		case (3):
			// Atlaisvinam "Kanalų įrenginys" resursą
			res = Core.resourceList.searchResource(ResourceType.CH_DEV);
			res.removeParent();
			this.changeStep(4);
			break;
		case (4):
			// Sukuriamas "Iš loader" resursas, skirtas JobGovernor procesui
			// sukūrusiam gautąjį "Pakrovimo paketo" resursą
			res = new Resource(ResourceType.PACK_FROM_LOAD);
			res.setParent(this.jg);
			Core.resourceList.addResource(res);
			Core.resourceList.deleteChildResource(this, ResourceType.LOAD_PACK);
			this.changeStep(0);
			break;
		}
	}