private static NLGElement createNot(PhraseElement phrase,
			Stack<NLGElement> vgComponents, NLGElement frontVG, boolean hasModal) {
		NLGElement newFront = frontVG;

		if (phrase.getFeatureAsBoolean(Feature.NEGATED).booleanValue()) {
			NLGFactory factory = phrase.getFactory();

			// before adding "do", check if this is an object WH
			// interrogative
			// in which case, don't add anything as it's already done by
			// ClauseHelper
			Object interrType = phrase.getFeature(Feature.INTERROGATIVE_TYPE);
			boolean addDo = !(InterrogativeType.WHAT_OBJECT.equals(interrType) || InterrogativeType.WHO_OBJECT
					.equals(interrType));

			if (!vgComponents.empty() || frontVG != null && isCopular(frontVG)) {
				vgComponents.push(new InflectedWordElement(
						"not", LexicalCategory.ADVERB)); //$NON-NLS-1$
			} else {
				if (frontVG != null && !hasModal) {
					frontVG.setFeature(Feature.NEGATED, true);
					vgComponents.push(frontVG);
				}

				vgComponents.push(new InflectedWordElement(
						"not", LexicalCategory.ADVERB)); //$NON-NLS-1$

				if (addDo) {
					if (factory != null) {
						newFront = factory.createInflectedWord("do",
								LexicalCategory.VERB);

					} else {
						newFront = new InflectedWordElement(
								"do", LexicalCategory.VERB); //$NON-NLS-1$
					}
				}
			}
		}

		return newFront;
	}