private void checkForPredefinedFragments() {
		String str = getFragmentAsString();
		if (str == null)
			return;
		boolean needPromoter = !str.startsWith(PROMOTER_FRAGMENT_STR);
		boolean needStart = !str.startsWith(needPromoter ? START_FRAGMENT_STR : PROMOTER_START_FRAGMENT_STR);

		boolean needTerminator = !str.endsWith(TERMINATOR_FRAGMENT_STR);
		Pattern pattern = null;
		if (needTerminator) {
			pattern = Pattern.compile(END_FRAGMENT_REG_STR + "$");
		}
		else {
			pattern = Pattern.compile(END_FRAGMENT_REG_STR + TERMINATOR_FRAGMENT_REG_STR + "$");
		}
		Matcher matcher = pattern.matcher(str);
		boolean needEnd = !matcher.find();

		if (needPromoter) {
			if (needStart)
				appendStartDNAFragment();
			appendPromoterDNAFragment();
		}
		else if (needStart) {
			appendStartDNAFragment(PROMOTER_FRAGMENT_STR.length());
		}

		if (needTerminator) {
			if (needEnd)
				appendEndDNAFragment();
			appendTerminatorDNAFragment();
		}
		else if (needEnd) {
			appendEndDNAFragment(getLength() - TERMINATOR_FRAGMENT_STR.length());
		}
	}