protected Acronym parseCandidate(String outOfParenthesis, String inParenthesis) {

		if(inParenthesis.indexOf(";") != -1){
			int i = inParenthesis.indexOf(";");
			inParenthesis = inParenthesis.substring(0, i);
		}

		if(outOfParenthesis.indexOf(";") != -1){
			int i = outOfParenthesis.indexOf(";");
			outOfParenthesis = outOfParenthesis.substring(i+1);
		}

		// Default assumption: long form is outside the parenthesis 
		String shortForm = inParenthesis.trim();
		String longForm = outOfParenthesis.trim();

		// Unless default was found not to be true
		if(!isShortForm(shortForm)){
			longForm = inParenthesis.trim();

			String parts[] = outOfParenthesis.trim().split(" ");
			shortForm = parts[parts.length-1];

		}
		// Is the short form valid?
		if(!isValidShortForm(shortForm)){
			return null;
		}

		if(!isValidExpression(shortForm) || ! isValidExpression(longForm)){
			return null;
		}

		// Chunk long form to correct size
		String parts[] = longForm.split(" ");
		int sfSize = shortForm.length();
		int maxLongFormLength = Math.min( sfSize+5, sfSize*2 );
		int finalLfSize = Math.min( maxLongFormLength, parts.length );


		String finalLongForm = "";
		for (int i = parts.length-1; i > parts.length-finalLfSize-1; i--) {
			finalLongForm = parts[i] + " " + finalLongForm;
		}
		finalLongForm = finalLongForm.trim();

		if(shortForm.equalsIgnoreCase(finalLongForm)){
			return null;
		}

		return new Acronym(shortForm, finalLongForm);
	}