+void ModelAction::copy_typeandorder(ModelAction * act) {
+ this->type=act->type;
+ this->order=act->order;
+}
+
+/** This method changes an existing read part of an RMW action into either:
+ * (1) a full RMW action in case of the completed write or
+ * (2) a READ action in case a failed action.
+ * @todo If the memory_order changes, we may potentially need to update our
+ * clock vector.
+ */
+void ModelAction::process_rmw(ModelAction * act) {
+ this->order=act->order;
+ if (act->is_rmwc())
+ this->type=ATOMIC_READ;
+ else if (act->is_rmw()) {
+ this->type=ATOMIC_RMW;
+ this->value=act->value;
+ }
+}
+
+/** The is_synchronizing method should only explore interleavings if:
+ * (1) the operations are seq_cst and don't commute or
+ * (2) the reordering may establish or break a synchronization relation.
+ * Other memory operations will be dealt with by using the reads_from
+ * relation.
+ *
+ * @param act is the action to consider exploring a reordering.
+ * @return tells whether we have to explore a reordering.
+ */
+bool ModelAction::is_synchronizing(const ModelAction *act) const