protected final MidiEvent createEvent(byte[] message, int delta)
			throws ParsingException {
		if (this.state == this.HEADER) {
			this.state = this.DELTA;
		}
		assert (this.state == this.DELTA) || (this.state == this.HEADER);
		this.lastEvent = null;
		this.DELTA.delta = delta;
		this.state = this.TYPE;
		for (final byte element : message) {
			this.state.parse(element);
		}
		assert (this.state == this.DELTA) || (this.state == this.HEADER);
		this.DELTA.delta = 0;

		return this.lastEvent;
	}