public void tryWay(int programPointer, int stackSize, int[] sizes){
		while(instructions.size()>programPointer){
			XInst inst = instructions.get(programPointer);
			int size = sizes[programPointer];
			stackSize += inst.getStackChange();
			if(stackSize<0){
				int i = 0;
				for(XInst instr:instructions){
					System.out.println(i+":\t"+sizes[i++]+"\t"+instr.toString());
				}
				throw new AssertionError("stacksize smaller than 0 at "+programPointer);
			}
			if(size==-1){
				sizes[programPointer] = size = stackSize;
			}else{
				if(size != stackSize){
					int i = 0;
					for(XInst instr:instructions){
						System.out.println(i+":\t"+sizes[i++]+"\t"+instr.toString());
					}
					throw new AssertionError("AT:"+programPointer);
				}
				return;
			}
			programPointer++;
			programPointer = inst.tryWay(this, programPointer, stackSize, sizes);
		}
		//if(stackSize!=1 && stackSize!=0){
			//if(comilerOptions.debugOutput){
				//System.out.println(instructions);
				//System.out.println(stackSize);
				//System.out.println(Arrays.toString(sizes));
			//}
			//throw new AssertionError();
		//}
	}