Bug 52361 [templates] linked mode not exited / annotations not redrawn when inserting anonymous completion
M7 0. Auto-closed parenthesis on 1. Insert this code: import java.lang.Runnable; void m() { method(<caret> } -> closing parenthesis gets inserted -> linked mode entered 2. type "new Runnable(" -> nested linked mode is entered for second parenthesis, also autoclosed 3. use code completion to complete the anonymous type -> you end up with this code: void m() { method(new Runnable() { public void run() { } }) } -> Linked mode is still drawn 4. Press <Tab> or <Enter> -> linked mode is not exited -> annotations keep being drawn The only way to get away with the annotations is to open a new parenthesis somewhere outside the initial code.
org.eclipse.jdt.ui/ui/org/eclipse/jdt/internal/ui/text/link/LinkedPositionAnnotations.java
* Sets the position that should be highlighted as the exit position, i.e. 
	 * as the position whose changes are propagated to all its linked positions
	 * by the linked environment.
	 * 
	 * @param position the new exit position, or <code>null</code> if no focus is set.
	 */
	private void setExitPosition(Position position) throws BadLocationException {
		if (markExitTarget && getPosition(fExitAnnotation) != position) {
			removeAnnotation(fExitAnnotation, false);
			if (position != null) {
				fExitAnnotation= new Annotation(EXIT_ANNOTATION_TYPE, false, ""); 
				addAnnotation(fExitAnnotation, position, false);
			} else
				fExitAnnotation= null;
		}
	}
	
	/**
	 * Sets the positions that should be highlighted as the slave positions, i.e. 
	 * as the positions that are linked to the focus position.
	 * 
	 * @param positions the new slave positions, or <code>null</code> if no slave positions are to be set
	 */
	private void setGroupPositions(List positions) throws BadLocationException {
		if (!markSlaves)
			return;