public VariableStack mapStackToLocal(VariableStack stack) {
		if (type == DOWHILE) {
			VariableStack afterBody = bodyBlock.mapStackToLocal(stack);
			if (afterBody != null)
				mergeContinueStack(afterBody);

			if (continueStack != null) {
				VariableStack newStack;
				int params = cond.getFreeOperandCount();
				if (params > 0) {
					condStack = continueStack.peek(params);
					newStack = continueStack.pop(params);
				} else
					newStack = continueStack;

				if (cond != TRUE)
					mergeBreakedStack(newStack);
				if (cond != FALSE)
					stack.merge(newStack);
			}
		} else {
			continueStack = stack;
			VariableStack newStack;
			int params = cond.getFreeOperandCount();
			if (params > 0) {
				condStack = stack.peek(params);
				newStack = stack.pop(params);
			} else
				newStack = stack;
			if (cond != TRUE)
				breakedStack = newStack;
			VariableStack afterBody = bodyBlock.mapStackToLocal(newStack);
			if (afterBody != null)
				mergeContinueStack(afterBody);
		}
		return breakedStack;
	}