         notes[setIndex][collectionIndex.noteIndex] = tuplet
     }
 
+    /**
+     TODO: docstring
+     
+     - parameter index: The index of the note in the specified note set.
+     - parameter setIndex: The index of the note set holding the note.
+     - throws:
+        - `MeasureError.invalidTieState`
+        - `MeasureError.noteIndexOutOfRange`
+        - `MeasureError.removeNoteFromTuplet`
+        - `TupletError.invalidIndex`
+        - `TupletError.internalError`
+     */
     internal mutating func removeNote(at index: Int, inSet setIndex: Int, skipTies skipTieConfig: Bool) throws {
         var newMeasure = self
 

            case .begin?:
                guard var lastNote = newCollections.last?.last else {
                    assertionFailure("last note was nil")
                    throw TupletError.internalError
                }
                try lastNote.modifyTie(.begin)
                try modifyCollections(atFirst: false, with: lastNote)
            case .end?:
                guard var firstNote = newCollections.first?.first else {
                    assertionFailure("first note was nil")
                    throw TupletError.internalError
                }
                try firstNote.modifyTie(.end)
                try modifyCollections(atFirst: true, with: firstNote)

        }
    }

    /**
     TODO: docstring
     
     - parameter index: The index of the note in the specified note set.
     - parameter setIndex: The index of the note set holding the note.
     */
    private func tieState(for index: Int, inSet setIndex: Int) throws -> Tie? {
        return try note(at: index, inSet: setIndex).tie
    }
