+
+ /**
+ * add given annotation row at given position (0 is start, -1 is end)
+ *
+ * @param consensus
+ * @param i
+ */
+ public void addAnnotation(AlignmentAnnotation consensus, int i);
+
+ /**
+ * search for or create a specific annotation row on the alignment
+ *
+ * @param name
+ * name for annotation (must match)
+ * @param calcId
+ * calcId for the annotation (null or must match)
+ * @param autoCalc
+ * - value of autocalc flag for the annotation
+ * @param seqRef
+ * - null or specific sequence reference
+ * @param groupRef
+ * - null or specific group reference
+ * @param method
+ * - CalcId for the annotation (must match)
+ *
+ * @return existing annotation matching the given attributes
+ */
+ public AlignmentAnnotation findOrCreateAnnotation(String name,
+ String calcId, boolean autoCalc, SequenceI seqRef,
+ SequenceGroup groupRef);
+
+ /**
+ * move the given group up or down in the alignment by the given number of
+ * rows. Implementor assumes given group is already present on alignment - no
+ * recalculations are triggered.
+ *
+ * @param sg
+ * @param map
+ * @param up
+ * @param i
+ */
+ public void moveSelectedSequencesByOne(SequenceGroup sg,
+ Map<SequenceI, SequenceCollectionI> map, boolean up);
+
+ /**
+ * validate annotation after an edit and update any alignment state flags
+ * accordingly
+ *
+ * @param alignmentAnnotation
+ */
+ public void validateAnnotation(AlignmentAnnotation alignmentAnnotation);