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
public void switchToPosition(LinkedEnvironment env, LinkedPosition position) {
		if (fDocument == null || 
				(position != null && getPosition(fFocusAnnotation) == position) ||
				(position == null && fFocusAnnotation == null))
			return;
		
		LinkedPositionGroup linkedGroup= null;
		if (position != null)
			linkedGroup= env.getGroupForPosition(position);
		
		List targets= new ArrayList();
		targets.addAll(Arrays.asList(fTargets));
		List group;
		if (linkedGroup != null)
			group= new ArrayList(Arrays.asList(linkedGroup.getPositions()));
		else
			group= new ArrayList();
		
		if (position == null || !fDocument.equals(position.getDocument()))
			
			position= null;
		
		LinkedPosition exit= fExitPosition;
		if (exit == null || !fDocument.equals(exit.getDocument()))
			
			exit= null;
		
		
		if (exit != null) {
			group.remove(exit);