public void duplicateTrack() {
		int theId = lookForBlankId();
		int newMatchesSize = Math.max(theId + 1, highestId() + 1);
		int[] matches = new int[newMatchesSize];
		for (int i = 0; i < matches.length; i++) {
			if (i == matches.length - 1)
				matches[i] = 0;
			else
				matches[i] = currentTrack().getMatches()[i];
		}
		Track newTrack = new Track(theId, currentTrack().getAuthor(), currentTrack().getTitle(), currentTrack().getPart() + 1, currentTrack()
				.getBpm(), currentTrack().getKeyFr(), currentTrack().getFrPerBpm(), currentTrack().getTempoForRef(), currentTrack().getRefFr(),
				currentTrack().getKeyNotes(), matches);
		for (int i = 0; i < parent.tracks.size(); i++) {
			int[] newMatches = new int[newMatchesSize];
			for (int j = 0; j < newMatches.length; j++)
				newMatches[j] = 0;
			for (int j = 0; j < parent.tracks.get(i).getMatches().length; j++)
				newMatches[j] = parent.tracks.get(i).getMatches()[j];
			newMatches[theId] = matches[i];
			parent.tracks.get(i).setMatches(newMatches);
		}
		parent.tracks.add(newTrack);
		currentTrack = theId;
		makeTheList(null);
		parent.cellsManager.updateEditTrack();
		parent.cellsManager.updateList();
	}