leave(true);
event.getDocument().removeDocumentListener(this);
	public void documentAboutToBeChanged(DocumentEvent event) {		if (fMustLeave) {			leave(true);			return;		}		IDocument document= event.getDocument();		Position[] positions= getPositions(document);		Position position= findCurrentPosition(positions, event.getOffset());		// modification outside editable position		if (position == null) {			// check for destruction of constraints (spacing of at least 1)			if ((event.getText() == null || event.getText().length() == 0) &&				(findCurrentPosition(positions, event.getOffset()) != null) && // will never become true, see condition above				(findCurrentPosition(positions, event.getOffset() + event.getLength()) != null))			{				leave(true);			}						// modification intersects editable position		} else {			// modificaction inside editable position			if (includes(position, event.getOffset(), event.getLength())) {				if (containsLineDelimiters(event.getText()))					leave(true);			// modificaction exceeds editable position			} else {				leave(true);			}		}	}