src/vs/workbench/services/editor/browser/editorService.ts/EditorService/findTargetGroup
class EditorService:	private findTargetGroup(editor: IEditorInput | IUntypedEditorInput, optionsOrPreferredGroup?: IEditorOptions | OpenInEditorGroup, preferredGroup?: OpenInEditorGroup): [IEditorGroup, EditorActivation | undefined] {
		let group: IEditorGroup | undefined;

		// Typed Editor Support
		let options: IEditorOptions | undefined;
		if (isEditorInput(editor)) {
			options = optionsOrPreferredGroup as IEditorOptions;

			group = this.doFindTargetGroup(editor, options, preferredGroup);
		}

		// Untyped Editor Support
		else {
			options = editor.options;

			preferredGroup = optionsOrPreferredGroup as OpenInEditorGroup;
			group = this.doFindTargetGroup(editor, options, preferredGroup);
		}

		// Resolve editor activation strategy
		let activation: EditorActivation | undefined = undefined;
		if (
			this.editorGroupService.activeGroup !== group && 	// only if target group is not already active
			options && !options.inactive &&						// never for inactive editors
			options.preserveFocus &&							// only if preserveFocus
			typeof options.activation !== 'number' &&			// only if activation is not already defined (either true or false)
			preferredGroup !== SIDE_GROUP						// never for the SIDE_GROUP
		) {
			// If the resolved group is not the active one, we typically
			// want the group to become active. There are a few cases
			// where we stay away from encorcing this, e.g. if the caller
			// is already providing `activation`.
			//
			// Specifically for historic reasons we do not activate a
			// group is it is opened as `SIDE_GROUP` with `preserveFocus:true`.
			// repeated Alt-clicking of files in the explorer always open
			// into the same side group and not cause a group to be created each time.
			activation = EditorActivation.ACTIVATE;
		}

		return [group, activation];
	}