+ }
+
+ for (int i=0;i<curr->get_node()->get_read_from_size();i++) {
+ //Get write
+ const ModelAction * write=curr->get_node()->get_read_from_at(i);
+ //Need a different write
+ if (write==curr->get_reads_from())
+ continue;
+
+ /* Test to see whether this is a feasible write to read from*/
+ r_modification_order(curr, write);
+ bool feasiblereadfrom=isfeasible();
+ mo_graph->rollbackChanges();
+
+ if (!feasiblereadfrom)
+ continue;
+ rit=ritcopy;
+
+ bool feasiblewrite=true;
+ //new we need to see if this write works for everyone
+
+ for (int loop=count;loop>0;loop--,rit++) {
+ ModelAction *act=*rit;
+ bool foundvalue=false;
+ for(int j=0;j<act->get_node()->get_read_from_size();j++) {
+ if (act->get_node()->get_read_from_at(i)==write) {
+ foundvalue=true;
+ break;
+ }
+ }
+ if (!foundvalue) {
+ feasiblewrite=false;
+ break;
+ }
+ }
+ if (feasiblewrite) {