public Token nextToken() {
		final Token token = tokenizer.nextToken();

		if (token == null) {
			return token;
		}

		if (!token.hasTag(AreaTag.PROGRAM_TEXT_AREA)) {
			return token;
		}

		final String text = token.getText();

		if (text == null) {
			return token;
		}

		if (PATTERN.matcher(text).matches()) {
			if (LOGGER.isTraceEnabled()) {
				LOGGER.trace("Marking " + token
						+ " as a source formatting directive.");
			}

			token.removeTag(AreaTag.PROGRAM_TEXT_AREA);
			// token.addTag(AreaTag.COMMENT);
			token.addTag(AreaTag.SOURCE_FORMATTING_DIRECTIVE);
		}

		return token;
	}