@Override
	public void execute(ByteStream stream) {
		int i = 0;
		while (true) {
			if (this.amount >= 0 && i >= this.amount) {
				break;
			}
			if (this.until != null) {
				if (Arrays.equals(stream.readBytes(this.until.length),
						this.until)) {
					break;
				} else {
					stream.advance(-this.until.length);
				}
			}

			this.strategy.execute(stream);
			i++;
		}
	}