float getMaximumScore(String type, boolean positional);
/**
- * Adds the shift amount to the start and end of all positional features,
- * returning true if at least one feature was shifted, else false
+ * Adds the shift amount to the start and end of all positional features whose
+ * start position is at or after fromPosition. Returns true if at least one
+ * feature was shifted, else false.
*
- * @param shift
+ * @param fromPosition
+ * @param shiftBy
*/
- abstract boolean shiftFeatures(int shift);
-}
\ No newline at end of file
+ boolean shiftFeatures(int fromPosition, int shiftBy);
+
+ /**
+ * Deletes all positional and non-positional features
+ */
+ void deleteAll();
+
+ /**
+ * Answers a (possibly empty) list of features of the specified type that
+ * overlap the specified column position. If parameter {@code result} is not
+ * null, features are appended to it and the (possibly extended) list is
+ * returned.
+ *
+ * @param pos
+ * @param type
+ * @param result
+ * @return
+ */
+ List<SequenceFeature> findFeatures(int pos, String type, List<SequenceFeature> result);
+
+ /**
+ * Answers true if there are any features of the given type, else false
+ */
+ boolean hasFeatures(String type);
+}