public synchronized boolean frameCorrection() {
		// Copy frame information form CDSs to Exons (if missing)
		frameFromCds();

		// First exon is corrected by adding a fake 5'UTR
		boolean changedFirst = frameCorrectionFirstCodingExon();

		// Other exons are corrected by changing the start (or end) coordinates.
		// boolean changedNonFirst = false;
		// Gpr.debug("UNCOMMENT!");
		boolean changedNonFirst = frameCorrectionNonFirstCodingExon();

		boolean changed = changedFirst || changedNonFirst;

		// We have to reset cached CDS data if anything changed
		if (changed) resetCdsCache();

		// Return true if there was any adjustment
		return changed;
	}