code: public ILocationData getMergedAssociatedLocation() {
  		List<ILocationData> allData = getAssociatedLocations();
  		if (allData.isEmpty()) {
  			return null;
  		}
  		if (allData.size() == 1) {
  			return allData.get(0);
  		}
  		boolean allNull = true;
  		SourceRelativeURI path = null;
  		ITextRegionWithLineInformation region = ITextRegionWithLineInformation.EMPTY_REGION;
  		for (ILocationData data : allData) {
  			if (path != null) {
  				if (!path.equals(data.getSrcRelativePath())) {
  					return null;
  				}
  			} else {
  				if (data.getSrcRelativePath() == null) {
  					if (!allNull)
  						throw new IllegalStateException(
  								"Iff multiple associated locations are present, the path has to be set");
  				} else {
  					allNull = false;
  					path = data.getSrcRelativePath();
  				}
  			}
  			region = region.merge(new TextRegionWithLineInformation(data.getOffset(), data.getLength(),
  					data.getLineNumber(), data.getEndLineNumber()));
  		}
  		return new LocationData(region.getOffset(), region.getLength(), region.getLineNumber(),
  				region.getEndLineNumber(), path);
  	}
docs: Returns the merged location of all associated locations if they belong to the same resource. Otherwise
  <code>null</code> is returned.