code: private static ILocationData createLocationData(ITraceURIConverter converter, ILocationInFileProvider locationProvider, EObject object, ILocationInFileProviderExtension.RegionDescription query, boolean skipEmpty) {
  		ITextRegion textRegion = locationProvider instanceof ILocationInFileProviderExtension ? 
  				((ILocationInFileProviderExtension) locationProvider).getTextRegion(object, query) : locationProvider.getFullTextRegion(object);
  		if (!(textRegion instanceof ITextRegionWithLineInformation)) {
  			if (log.isDebugEnabled())
  				log.debug("location provider returned text region without line information.", new Exception());
  			if (textRegion != null)
  				textRegion = new TextRegionWithLineInformation(textRegion.getOffset(), textRegion.getLength(), 0, 0);
  			else
  				return null;
  		} 
  		// usually we want to skip empty regions but if the root region is empty, we want to use it to store the path information along
  		// with the empty offset / length pair
  		if (skipEmpty && textRegion == ITextRegion.EMPTY_REGION) {
  			return null;
  		}
  		ILocationData newData = createLocationData(converter, object, (ITextRegionWithLineInformation) textRegion);
  		return newData;
  	}
docs: /* @Nullable