+ Step[] getSteps(ProjectElement elem);
+
+ /**
+ * Refreshes the internal data potentially out-of-date. This function needs to be called when Publication objects are added to this
+ * Project Element before being saved. The reason is, as saving a persistent object changes its hashcode, hashed data need to be rebuilt
+ * after saving for making functions based on this hashcode such as remove(), working.
+ *
+ * @param elem
+ * the project element to refresh
+ */
+ void refresh(ProjectElement elem);