Source:
<code>public String completeToolTipText(String toolTipText, EObject eObject, EStructuralFeature feature) { if (eObject instanceof EdgeCreationDescription) { if (feature != null && feature.equals(ToolPackage.Literals.ABSTRACT_TOOL_DESCRIPTION__PRECONDITION)) { StringBuilder sb = new StringBuilder(); sb.append(toolTipText); String cr = "\n . "; sb.append(cr + IInterpreterSiriusVariables.SOURCE_VIEW_PRE + ": diagram.EdgeTarget | (edge only) the source view of the current potential edge."); sb.append(cr + IInterpreterSiriusVariables.SOURCE_PRE + ": ecore.EObject | (edge only) the semantic element of $preSourceView."); sb.append(cr + IInterpreterSiriusVariables.TARGET_VIEW_PRE + ": diagram.EdgeTarget | (edge only) the target view of the current potential edge."); sb.append(cr + IInterpreterSiriusVariables.TARGET_PRE + ": ecore.EObject | (edge only) the semantic element of $preTargetView."); sb.append(cr + IInterpreterSiriusVariables.DIAGRAM + ": diagram.DDiagram | the diagram of the current potential edge"); return completeToolTipText(sb.toString(), eObject); } } return completeToolTipText(toolTipText, <START> eObject); <END> }</code><technical_language>new api is required n IDiagramTypeDescriptor. I depreciate methods EstructuralFeatureParameter</technical_language>

Target:
public String completeToolTipText(String toolTipText, EObject eObject, EStructuralFeature feature) { String toolTip = toolTipText; EPackage parentPackage = null; Option<EObject> parentDiagramDescription = new EObjectQuery(eObject).getFirstAncestorOfType(org.eclipse.sirius.diagram.description.DescriptionPackage.eINSTANCE.getDiagramDescription()); if (eObject instanceof EdgeCreationDescription) { if (feature != null && feature.equals(ToolPackage.Literals.ABSTRACT_TOOL_DESCRIPTION__PRECONDITION)) { StringBuilder sb = new StringBuilder(); sb.append(toolTipText); String cr = "\n . "; sb.append(cr + IInterpreterSiriusVariables.SOURCE_VIEW_PRE + ": diagram.EdgeTarget | (edge only) the source view of the current potential edge."); sb.append(cr + IInterpreterSiriusVariables.SOURCE_PRE + ": ecore.EObject | (edge only) the semantic element of $preSourceView."); sb.append(cr + IInterpreterSiriusVariables.TARGET_VIEW_PRE + ": diagram.EdgeTarget | (edge only) the target view of the current potential edge."); sb.append(cr + IInterpreterSiriusVariables.TARGET_PRE + ": ecore.EObject | (edge only) the semantic element of $preTargetView."); sb.append(cr + IInterpreterSiriusVariables.DIAGRAM + ": diagram.DDiagram | the diagram of the current potential edge"); toolTip = sb.toString(); } } if (parentDiagramDescription.some()) { parentPackage = parentDiagramDescription.get().eClass().getEPackage(); } else { Option<EObject> parentDiagramExtensionDescription = new EObjectQuery(eObject).getFirstAncestorOfType(org.eclipse.sirius.diagram.description.DescriptionPackage.eINSTANCE .getDiagramExtensionDescription()); if (parentDiagramExtensionDescription.some()) { parentPackage = parentDiagramExtensionDescription.get().eClass().getEPackage(); } } if (parentPackage != null) { for (final IDiagramTypeDescriptor diagramTypeDescriptor : DiagramTypeDescriptorRegistry.getInstance().getAllDiagramTypeDescriptors()) { if (diagramTypeDescriptor.getDiagramDescriptionProvider().handles(parentPackage)) { toolTip = diagramTypeDescriptor.getDiagramDescriptionProvider().completeToolTipText(toolTip, eObject, feature); } } } return toolTip; }