+ private void generateErrorMessage(NTuple<Descriptor> path, FlatNode fn) {
+
+ Descriptor lastDesc = path.get(path.size() - 1);
+ if (ssjava.isSharedLocation(getLocation(lastDesc))) {
+
+ NTuple<Location> locPathTuple = getLocationTuple(path);
+ Set<NTuple<Descriptor>> coverSet =
+ mapMethodToSharedLocCoverSet.get(methodContainingSSJavaLoop).get(locPathTuple);
+ throw new Error("Shared memory locations, which is reachable through references " + path
+ + ", are not completely overwritten by the higher values at "
+ + methodContainingSSJavaLoop.getClassDesc().getSourceFileName() + "::" + fn.getNumLine()
+ + ".\nThe following memory locations belong to the same shared locations:" + coverSet);
+
+ } else {
+ throw new Error(
+ "Memory location, which is reachable through references "
+ + path
+ + ", who comes back to the same read statement without being overwritten at the out-most iteration at "
+ + methodContainingSSJavaLoop.getClassDesc().getSourceFileName() + "::"
+ + fn.getNumLine());
+ }
+
+ }
+