Java源码示例:org.eclipse.xtext.findReferences.TargetURIs

示例1
private void init(Data result, IResourceAccess resourceAccess, TargetURIs targetURIs) {
	targetURIs.getTargetResourceURIs().forEach((resourceURI) -> {
		resourceAccess.readOnly(resourceURI, (resourceSet) -> {
			targetURIs.getEObjectURIs(resourceURI).forEach((objectURI) -> {
				try {
					EObject object = resourceSet.getEObject(objectURI, true);
					if (object != null) {
						result.add(object);
					}
				} catch (RuntimeException e) {
					// ignore
				}
			});
			return null;
		});
	});
}
 
示例2
@Override
public void findReferences(Predicate<URI> targetURIs, Resource resource, Acceptor acceptor,
		IProgressMonitor monitor) {
	// make sure data is present
	keys.getData((TargetURIs) targetURIs, new SimpleResourceAccess(resource.getResourceSet()));
	EList<EObject> astContents;
	if (resource instanceof N4JSResource) {
		// In case of N4JSResource, we search only in the AST but NOT in TModule tree!
		Script script = (Script) ((N4JSResource) resource).getContents().get(0);
		astContents = new BasicEList<>();
		astContents.add(script);
	} else {
		astContents = resource.getContents();
	}
	for (EObject content : astContents) {
		findReferences(targetURIs, content, acceptor, monitor);
	}
}
 
示例3
@Override
protected EObject toValidInstanceOrNull(Resource resource, Predicate<URI> targetURIs, EObject value) {
	EObject result = value;
	if (result.eIsProxy()) {
		URI proxyURI = EcoreUtil.getURI(result);
		if (uriEncoder.isCrossLinkFragment(resource, proxyURI.fragment())) {
			INode node = uriEncoder.decode(resource, proxyURI.fragment()).getThird();
			try {
				String string = linkingHelper.getCrossRefNodeAsString(node, true);
				if (((TargetURIs) targetURIs).getUserData(TargetURIKey.KEY).isMatchingConcreteSyntax(string)) {
					result = resolveInternalProxy(value, resource);
				} else {
					result = null;
				}
			} catch (IllegalNodeException ine) {
				// illegal nodes exist in broken ASTs
				// fired in linkingHelper.getCrossRefNodeAsString(...)
				result = null;
			}
		} else {
			result = resolveInternalProxy(value, resource);
		}
	}
	return result;
}
 
示例4
/**
 * Find all references to the given target with its resource set as working environment.
 *
 * @param target
 *            the object to look for.
 * @param monitor
 *            the progress monitor.
 * @return the list of reference descriptions.
 */
public List<IReferenceDescription> findReferencesTo(EObject target, IProgressMonitor monitor) {
	final TargetURIs targetURIs = getTargetURIs(target);
	final ResourceSet resourceSet = target.eResource().getResourceSet();
	final List<IReferenceDescription> result = Lists.newArrayList();
	IReferenceFinder.IResourceAccess resourceAccess = new SimpleResourceAccess(resourceSet);
	IReferenceFinder.Acceptor acceptor = new IReferenceFinder.Acceptor() {

		@Override
		public void accept(IReferenceDescription description) {
			result.add(description);
		}

		@Override
		public void accept(EObject source, URI sourceURI, EReference eReference, int index, EObject targetOrProxy,
				URI targetURI) {
			accept(new DefaultReferenceDescription(sourceURI, targetURI, eReference, index, null));
		}
	};
	referenceFinder.findAllReferences(targetURIs, resourceAccess,
			resourceDescriptionsProvider.getResourceDescriptions(resourceSet),
			acceptor, monitor);
	return result;
}
 
示例5
private TargetURIs getTargets(EObject declaration) {
	// Special handling for composed members
	List<EObject> realTargets = new ArrayList<>();
	if ((declaration instanceof TMember) && ((TMember) declaration).isComposed()) {
		// In case of composed member, add the constituent members instead.
		List<TMember> constituentMembers = ((TMember) declaration).getConstituentMembers();
		for (TMember constituentMember : constituentMembers) {
			realTargets.add(constituentMember);
		}
	} else {
		// Standard case
		realTargets.add(declaration);
	}

	TargetURIs targets = targetURISetProvider.get();

	for (EObject realTarget : realTargets) {
		collector.add(realTarget, targets);
	}
	return targets;
}
 
示例6
@Override
public void findAllReferences(
		Iterable<URI> targetURIs,
		ILocalResourceAccess localResourceAccess,
		IAcceptor<IReferenceDescription> referenceAcceptor,
		IProgressMonitor monitor) {
	TargetURIs converted = converter.fromIterable(targetURIs);
	if (!converted.isEmpty()) {
		findAllIndexedReferences(referenceAcceptor, SubMonitor.convert(monitor, 1), converted.asSet(), localResourceAccess);
		if (localResourceAccess != null && !converted.isEmpty() && getClass() != DefaultReferenceFinder.class) {
			// All the references have already been collected, but if this method was overridden,
			// we have to call it again from here
			findLocalReferences(converted, localResourceAccess, referenceAcceptor, monitor);
		}
	}
	
}
 
示例7
/**
 * Using the @Override notation leads to a compile error on some (e.g NEON,
 * OXYGEN, PHOTON, ...) platforms, since this internal Xtext API has been
 * changed over time.
 *
 * see
 * https://github.com/eclipse/xtext-core/commit/69064ac12f0144b60d8c7511d41c834db44a67f2
 *
 * This method will be invoked on ...LUNA, MARS, platforms
 */
public void findReferences(TargetURIs targetURIs, Resource resource,
		Acceptor acceptor, IProgressMonitor monitor) {
	// add DOT specific references
	for (URI targetURI : targetURIs) {
		EObject target = resource.getEObject(targetURI.fragment());
		// currently, only a selection of a nodeId is supported
		if (target instanceof NodeId) {
			acceptor.accept(target, targetURI, null, -1, target, targetURI);
			NodeId selectedNodeId = (NodeId) target;
			for (NodeId source : DotAstHelper
					.getAllNodeIds(selectedNodeId)) {
				URI sourceURI = EcoreUtil2
						.getPlatformResourceOrNormalizedURI(source);
				acceptor.accept(source, sourceURI, null, -1, target,
						targetURI);
			}
		}
	}
}
 
示例8
public List<? extends Location> getDefinitions(XtextResource resource, int offset,
		IReferenceFinder.IResourceAccess resourceAccess, CancelIndicator cancelIndicator) {
	EObject element = eObjectAtOffsetHelper.resolveElementAt(resource, offset);
	if (element == null) {
		return Collections.emptyList();
	}
	List<Location> locations = new ArrayList<>();
	TargetURIs targetURIs = collectTargetURIs(element);
	for (URI targetURI : targetURIs) {
		operationCanceledManager.checkCanceled(cancelIndicator);
		doRead(resourceAccess, targetURI, (EObject obj) -> {
			Location location = documentExtensions.newLocation(obj);
			if (location != null) {
				locations.add(location);
			}
		});
	}
	return locations;
}
 
示例9
public List<? extends Location> getReferences(XtextResource resource, int offset,
		IReferenceFinder.IResourceAccess resourceAccess, IResourceDescriptions indexData,
		CancelIndicator cancelIndicator) {
	EObject element = eObjectAtOffsetHelper.resolveElementAt(resource, offset);
	if (element == null) {
		return Collections.emptyList();
	}
	List<Location> locations = new ArrayList<>();
	TargetURIs targetURIs = collectTargetURIs(element);
	referenceFinder.findAllReferences(targetURIs, resourceAccess, indexData,
			new ReferenceAcceptor(resourceServiceProviderRegistry, (IReferenceDescription reference) -> {
				doRead(resourceAccess, reference.getSourceEObjectUri(), (EObject obj) -> {
					Location location = documentExtensions.newLocation(obj, reference.getEReference(),
							reference.getIndexInList());
					if (location != null) {
						locations.add(location);
					}
				});
			}), new CancelIndicatorProgressMonitor(cancelIndicator));
	return locations;
}
 
示例10
protected void findSourceDeclarations(URI targetDeclarationURI, IProgressMonitor monitor,
		Procedure2<? super IEObjectDescription, ? super IReferenceDescription> acceptor) {
	TargetURIs targetURIs = collectTargetURIs(targetDeclarationURI);
	ReferenceAcceptor referenceAcceptor = new ReferenceAcceptor(getResourceServiceProviderRegistry(),
			reference -> {
				if (filterReference(reference)) {
					IEObjectDescription sourceDeclaration = null;
					if (reference != null) {
						sourceDeclaration = findSourceDeclaration(reference);
					}
					acceptor.apply(sourceDeclaration, reference);
				}
			});
	getReferenceFinder().findAllReferences(targetURIs, getResourceAccess(), getIndexData(), referenceAcceptor,
			monitor);
}
 
示例11
/**
 * Get or create a data cache in the user data space of the given target URIs.
 *
 * @return a new or existing data cache.
 */
public Data getData(TargetURIs targetURIs, IReferenceFinder.IResourceAccess resourceAccess) {
	Data result = targetURIs.getUserData(KEY);
	if (result != null) {
		return result;
	}
	return initData(targetURIs, resourceAccess);
}
 
示例12
@Override
protected void doAdd(EObject primaryTarget, TargetURIs targetURIsAddHere) {
	Resource resource = primaryTarget.eResource();
	// If the target is not contained in a resource, we cannot do anything but return.
	if (resource == null)
		return;
	EcoreUtil.resolveAll(primaryTarget.eResource());

	// Special handling for composed members and TStructMember
	if (primaryTarget instanceof TMember && ((TMember) primaryTarget).isComposed()) {
		// In case of composed member, add the constituent members instead.
		List<TMember> constituentMembers = ((TMember) primaryTarget).getConstituentMembers();
		for (TMember constituentMember : constituentMembers) {
			super.doAdd(constituentMember, targetURIsAddHere);
		}
	} else {
		if (primaryTarget instanceof TStructMember) {
			TStructMember crossRefStructMember = ((TStructMember) primaryTarget).getDefinedMember();
			if (crossRefStructMember != null)
				// If this TStructMember is an AST, also add the defined member located in the TModule
				super.doAdd(((TStructMember) primaryTarget).getDefinedMember(), targetURIsAddHere);
		}
		super.doAdd(primaryTarget, targetURIsAddHere);
	}

	inferredElements.collectInferredElements(primaryTarget, (object) -> {
		if (object != null) {
			super.doAdd(object, targetURIsAddHere);
		}
	}, staticPolyfillHelper);
}
 
示例13
/** @return all references to the given declaration. Respect editor states. */
public List<EObject> findReferences(EObject declaration, ResourceSet resourceSet) {
	declaration = getDeclaration(declaration);
	TargetURIs targets = getTargets(declaration);
	SimpleResourceAccess resourceAccess = new SimpleResourceAccess(resourceSet);
	IResourceDescriptions index = resourceDescriptionsProvider.getResourceDescriptions(resourceSet);
	ReferenceAcceptor acceptor = new ReferenceAcceptor();

	referenceFinder.findAllReferences(targets, resourceAccess, index, acceptor, null);
	return acceptor.results;
}
 
示例14
/** @return all references to the given declaration in the given {@link Resource} */
public List<EObject> findReferencesInResource(EObject declaration, Resource resource) {
	declaration = getDeclaration(declaration);
	TargetURIs targets = getTargets(declaration);
	ReferenceAcceptor acceptor = new ReferenceAcceptor();

	referenceFinder.findReferences(targets, resource, acceptor, null);

	return acceptor.results;
}
 
示例15
@Override
protected void doAdd(EObject object, TargetURIs targetURIs) {
	super.doAdd(object, targetURIs);
	Set<EObject> jvmElements = associations.getJvmElements(object);
	for(EObject jvmElement: jvmElements) {
		super.doAdd(jvmElement, targetURIs);
	}
}
 
示例16
/**
 * Find occurrences of the element at the given offset.
 */
public OccurrencesResult findOccurrences(XtextWebDocumentAccess document, int offset) {
	return document.readOnly(new CancelableUnitOfWork<OccurrencesResult, IXtextWebDocument>() {
		@Override
		public OccurrencesResult exec(IXtextWebDocument doc, CancelIndicator cancelIndicator) throws Exception {
			EObject element = elementAtOffsetUtil.getElementAt(doc.getResource(), offset);
			OccurrencesResult occurrencesResult = new OccurrencesResult(doc.getStateId());
			if (element != null && filter(element)) {
				URI elementURI = EcoreUtil2.getPlatformResourceOrNormalizedURI(element);
				TargetURIs targetURIs = targetURIsProvider.get();
				targetURIs.addURI(elementURI);
				IReferenceFinder.Acceptor acceptor = new IReferenceFinder.Acceptor() {
					@Override
					public void accept(EObject source, URI sourceURI, EReference eReference, int index,
							EObject targetOrProxy, URI targetURI) {
						ITextRegion region = locationInFileProvider.getSignificantTextRegion(source, eReference,
								index);
						occurrencesResult.getReadRegions()
								.add(new TextRegion(region.getOffset(), region.getLength()));
					}

					@Override
					public void accept(IReferenceDescription description) {
					}
				};
				referenceFinder.findReferences(targetURIs, doc.getResource(), acceptor,
						new CancelIndicatorProgressMonitor(cancelIndicator));
				if (Objects.equal(element.eResource(), doc.getResource())) {
					ITextRegion definitionRegion = locationInFileProvider.getSignificantTextRegion(element);
					if (definitionRegion != null
							&& definitionRegion != ITextRegionWithLineInformation.EMPTY_REGION) {
						occurrencesResult.getWriteRegions()
								.add(new TextRegion(definitionRegion.getOffset(), definitionRegion.getLength()));
					}
				}
			}
			return occurrencesResult;
		}
	});
}
 
示例17
@Override
public void findReferences(Iterable<URI> targetURIs, final Iterable<URI> sourceResourceURIs,
		ILocalResourceAccess localResourceAccess, IAcceptor<IReferenceDescription> referenceAcceptor,
		IProgressMonitor monitor) {
	TargetURIs converted = converter.fromIterable(targetURIs);
	HashSet<URI> sourceResourcesAsSet = Sets.newHashSet(sourceResourceURIs);
	super.findReferences(converted, sourceResourcesAsSet, localResourceAccess, indexData, toAcceptor(referenceAcceptor), monitor);
	if (localResourceAccess != null && !converted.isEmpty() && getClass() != DefaultReferenceFinder.class) {
		// All the references have already been collected, but if this method was overridden,
		// we have to call it again from here
		findLocalReferences(converted, localResourceAccess, referenceAcceptor, monitor);
	}
}
 
示例18
/**
 * @since 2.4
 */
protected void findAllIndexedReferences(
		IAcceptor<IReferenceDescription> referenceAcceptor,
		SubMonitor subMonitor,
		Set<URI> targetURIsAsSet,
		ILocalResourceAccess localResourceAccess) {
	TargetURIs targetURIs = converter.fromIterable(targetURIsAsSet);
	if (!targetURIs.isEmpty()) {
		subMonitor.setWorkRemaining(size(indexData.getAllResourceDescriptions()) / MONITOR_CHUNK_SIZE + 1);
		int i = 0;
		IProgressMonitor useMe = subMonitor.newChild(1);
		for (IResourceDescription resourceDescription : indexData.getAllResourceDescriptions()) {
			IResourceServiceProvider serviceProvider = getServiceProviderRegistry().getResourceServiceProvider(resourceDescription.getURI());
			if (serviceProvider != null) {
				IReferenceFinder referenceFinder = serviceProvider.get(IReferenceFinder.class);
				if (referenceFinder instanceof IReferenceFinderExtension1) {
					IReferenceFinderExtension1 extension1 = (IReferenceFinderExtension1) referenceFinder;
					extension1.findReferences(targetURIsAsSet, resourceDescription, referenceAcceptor, useMe, localResourceAccess);
				} else {
					// don't use the language specific reference finder here for backwards compatibility reasons
					findReferences(targetURIsAsSet, resourceDescription, referenceAcceptor, useMe, localResourceAccess);
				}
			}
			i++;
			if (i % MONITOR_CHUNK_SIZE == 0) {
				useMe = subMonitor.newChild(1);
			}
		}
	}
}
 
示例19
protected void findLocalReferences(
		Iterable<URI> localTargets,
		ILocalResourceAccess localResourceAccess,
		final IAcceptor<IReferenceDescription> acceptor,
		IProgressMonitor monitor) {
	if ((monitor != null && monitor.isCanceled()))
		throw new OperationCanceledException();

	final TargetURIs targetURIs = converter.fromIterable(localTargets);
	Collection<URI> resourceURIs = targetURIs.getTargetResourceURIs();
	final SubMonitor subMonitor = SubMonitor.convert(monitor, resourceURIs.size() / MONITOR_FIND_LOCAL_CHUNK_SIZE + 1);
	int i = 0;
	for(final URI resourceURI: resourceURIs) {
		if (subMonitor.isCanceled())
			throw new OperationCanceledException();
		localResourceAccess.readOnly(resourceURI, new IUnitOfWork.Void<ResourceSet>() {
			@Override
			public void process(ResourceSet resourceSet) throws Exception {
				Resource resource = resourceSet.getResource(resourceURI, true);
				DefaultReferenceFinder.super.findReferences(targetURIs, resource, toAcceptor(acceptor), subMonitor);
			}
		});
		i++;
		if (i % MONITOR_FIND_LOCAL_CHUNK_SIZE == 0)
			subMonitor.worked(1);
	}
}
 
示例20
/**
 * This method will be invoked on NEON, OXYGEN, PHOTON... platforms
 */
public void findReferences(Predicate<URI> targetURIs, EObject scope,
		Acceptor acceptor, IProgressMonitor monitor) {

	if (targetURIs instanceof TargetURIs) {
		findReferences((TargetURIs) targetURIs, scope.eResource(), acceptor,
				monitor);
	}

}
 
示例21
public Declarators.DeclaratorsData getDeclaratorData(final TargetURIs targetURIs, final IReferenceFinder.IResourceAccess resourceAccess) {
  Declarators.DeclaratorsData result = targetURIs.<Declarators.DeclaratorsData>getUserData(Declarators.KEY);
  if ((result != null)) {
    return result;
  }
  final HashSet<QualifiedName> declaratorNames = CollectionLiterals.<QualifiedName>newHashSet();
  final Consumer<URI> _function = (URI uri) -> {
    final IUnitOfWork<Object, ResourceSet> _function_1 = (ResourceSet it) -> {
      Object _xblockexpression = null;
      {
        final Consumer<URI> _function_2 = (URI objectURI) -> {
          final EObject object = it.getEObject(objectURI, true);
          if ((object != null)) {
            final JvmType type = EcoreUtil2.<JvmType>getContainerOfType(object, JvmType.class);
            if ((type != null)) {
              QualifiedName _lowerCase = this.nameConverter.toQualifiedName(type.getIdentifier()).toLowerCase();
              declaratorNames.add(_lowerCase);
              QualifiedName _lowerCase_1 = this.nameConverter.toQualifiedName(type.getQualifiedName('.')).toLowerCase();
              declaratorNames.add(_lowerCase_1);
            }
          }
        };
        targetURIs.getEObjectURIs(uri).forEach(_function_2);
        _xblockexpression = null;
      }
      return _xblockexpression;
    };
    resourceAccess.<Object>readOnly(uri, _function_1);
  };
  targetURIs.getTargetResourceURIs().forEach(_function);
  Declarators.DeclaratorsData _declaratorsData = new Declarators.DeclaratorsData(declaratorNames);
  result = _declaratorsData;
  targetURIs.<Declarators.DeclaratorsData>putUserData(Declarators.KEY, result);
  return result;
}
 
示例22
protected TargetURIs collectTargetURIs(URI targetURI) {
	TargetURIs targetURIs = getTargetURIProvider().get();
	if (targetURI == null) {
		return targetURIs;
	}
	readOnly(targetURI, (EObject targetObject) -> {
		if (targetObject != null) {
			getTargetURICollector().add(targetObject, targetURIs);
		}
		return null;
	});
	return targetURIs;
}
 
示例23
/** {@inheritDoc} */
@Override
public void findAllReferences(final TargetURIs targetURIs, final IResourceAccess resourceAccess, final IResourceDescriptions indexData, final Acceptor acceptor, final IProgressMonitor monitor) {
  final SubMonitor subMonitor = SubMonitor.convert(monitor, 10);
  if (!Iterables.isEmpty(targetURIs)) {
    if (indexData instanceof IResourceDescriptions2) {
      findReferences(targetURIs, Sets.newHashSet(targetURIs.getTargetResourceURIs()), resourceAccess, indexData, acceptor, subMonitor.newChild(1));
      findAllIndexedReferences(targetURIs, indexData, acceptor, subMonitor.newChild(9));
    } else {
      super.findAllReferences(targetURIs, resourceAccess, indexData, acceptor, subMonitor);
    }
  }
}
 
示例24
/**
 * Uses IResourceDescriptions2 to find all indexed references.
 *
 * @param targetURIs
 *          the URIs to find references to, must not be {@code null}
 * @param indexData
 *          index to use when finding references, must not be {@code null}
 * @param referenceAcceptor
 *          the reference acceptor, must not be {@code null}
 * @param subMonitor
 *          the progress monitor, can be {@code null}
 */
protected void findAllIndexedReferences(final TargetURIs targetURIs, final IResourceDescriptions indexData, final Acceptor referenceAcceptor, final SubMonitor subMonitor) {
  IResourceDescriptions2 idx = (IResourceDescriptions2) indexData;
  List<IReferenceDescription> refs = uniqueReferences(Lists.newArrayList(idx.findReferencesToObjects(targetURIs.asSet())));
  final SubMonitor monitor = SubMonitor.convert(subMonitor, Messages.ReferenceQuery_monitor, refs.size());
  for (IReferenceDescription desc : refs) {
    if (monitor.isCanceled()) {
      return;
    }
    referenceAcceptor.accept(desc);
    monitor.worked(1);
  }
  monitor.done();
}
 
示例25
private Data initData(TargetURIs targetURIs, IReferenceFinder.IResourceAccess resourceAccess) {
	Data result = new Data(qualifiedNameProvider);
	init(result, resourceAccess, targetURIs);
	targetURIs.putUserData(KEY, result);
	return result;
}
 
示例26
@Override
protected void findReferencesInDescription(TargetURIs targetURIs, IResourceDescription resourceDescription,
		IResourceAccess resourceAccess, Acceptor acceptor, IProgressMonitor monitor) {
	TargetURIKey.Data findReferencesData = keys.getData(targetURIs, resourceAccess);
	if (monitor.isCanceled())
		throw new OperationCanceledException();

	final Set<QualifiedName> typesOrModulesToFind = findReferencesData.getTypesOrModulesToFind();
	if (typesOrModulesToFind.isEmpty()) {
		return;
	}
	Iterable<QualifiedName> importedNames = resourceDescription.getImportedNames();
	// scenario 1: imported names from index
	// TODO check if imported names from editors are returned as a set?
	// maybe we need another check for instanceof SortedSet<?>
	if (importedNames instanceof List<?>) {
		List<QualifiedName> sorted = (List<QualifiedName>) importedNames;
		List<QualifiedName> searchMe = sorted;
		// Optimize search
		for (QualifiedName typeOrModuleToFind : typesOrModulesToFind) {
			int insertionIndex = Collections.binarySearch(searchMe, typeOrModuleToFind);
			if (insertionIndex >= 0) {
				resourceAccess.readOnly(
						resourceDescription.getURI(),
						(resourceSet) -> {
							findReferences(targetURIs, resourceSet.getResource(resourceDescription.getURI(), true),
									acceptor, monitor);
							return null;
						});
				return;
			} else {
				int startFrom = -(insertionIndex + 1);
				if (startFrom >= sorted.size()) {
					return;
				}
				searchMe = sorted.subList(startFrom, sorted.size());
			}
		}
	} else {
		for (QualifiedName importedName : importedNames) {
			if (typesOrModulesToFind.contains(importedName)) {
				resourceAccess.readOnly(
						resourceDescription.getURI(),
						(resourceSet) -> {
							findReferences(targetURIs, resourceSet.getResource(resourceDescription.getURI(), true),
									acceptor, monitor);
							return null;
						});
				return;
			}
		}
	}
}
 
示例27
@Override
protected boolean doProcess(EReference reference, Predicate<URI> targetURISet) {
	return ((TargetURIs) targetURISet).getUserData(TargetURIKey.KEY)
			.isEReferenceTypeApplicable(reference.getEReferenceType());
}
 
示例28
private TargetURIs getTargetURIs(EObject primaryTarget) {
	TargetURIs result = targetURIsProvider.get();
	uriCollector.add(primaryTarget, result);
	return result;
}
 
示例29
@Override
public Data getData(TargetURIs targetURIs, IResourceAccess resourceAccess) {
	return super.getData(targetURIs, new ForwardingResourceAccess(resourceAccess, resourceSetProvider));
}
 
示例30
@SuppressWarnings("unchecked")
@Override
public void findReferences(TargetURIs targetURIs, IResourceDescription resourceDescription,
		IResourceAccess resourceAccess, Acceptor acceptor, IProgressMonitor monitor) {
	findReferences(targetURIs.asSet(), resourceDescription, (IAcceptor<IReferenceDescription>) acceptor, monitor, (ILocalResourceAccess) resourceAccess);
}