synchronized public void resolveDefinition()

in com.microsoft.java.lsif.core/src/com/microsoft/java/lsif/core/internal/visitors/SymbolData.java [161:185]


	synchronized public void resolveDefinition(LsifService lsif, IJavaElement element, Location definitionLocation) {
		if (this.definitionResolved) {
			return;
		}
		org.eclipse.lsp4j.Range definitionLspRange = definitionLocation.getRange();
		Document definitionDocument = Repository.getInstance().enlistDocument(lsif, definitionLocation.getUri(),
				project);
		Range definitionRange = Repository.getInstance().enlistRange(lsif, definitionDocument, definitionLspRange);
		DefinitionResult defResult = VisitorUtils.ensureDefinitionResult(lsif, this.resultSet);
		LsifEmitter.getInstance().emit(lsif.getEdgeBuilder().item(defResult, definitionRange, document,
				ItemEdge.ItemEdgeProperties.DEFINITIONS));
		if (element instanceof IMethod) {
			IMethod mostAbstractMethod = getMostAbstractDeclaration((IMethod) element);
			if (mostAbstractMethod != null) {
				Location abstractDefinitionLocation = JdtlsUtils.getElementLocation(mostAbstractMethod);
				String id = VisitorUtils.createSymbolKey(abstractDefinitionLocation);
				Document abstractDefinitionDocument = Repository.getInstance().enlistDocument(lsif,
						abstractDefinitionLocation.getUri(), this.project);
				SymbolData abstractSymbolData = Repository.getInstance().enlistSymbolData(id,
						abstractDefinitionDocument, this.project);
				Repository.getInstance().addReferenceResults(this, abstractSymbolData);
			}
		}
		this.definitionResolved = true;
	}