         }
         throw StaffError.InternalError
 	}
-	
+
+    /**
+     - parameters measureIndex: The index of a measure that is either repeated or is one of the repeated measures.
+     - returns A `MeasureRepeat` that contains the measure(s) that are repeated as well as the repeat count. Returns nil
+        if the measure at the specified index is not part of repeat.
+     - throws:
+        - `StaffError.MeasureIndexOutOfRange`
+        - `StaffError.InternalError` if the function has an internal implementation error.
+     */
 	public func measureRepeatAtIndex(measureIndex: Int) throws -> MeasureRepeat? {
         let (notesHolderIndex, _) = try notesHolderIndexFromMeasureIndex(measureIndex)
         return notesHolders[notesHolderIndex] as? MeasureRepeat

        }
        notesHolders[notesHolderIndex] = newNotesHolder
    }
	
	public mutating func startTieFromNoteAtIndex(noteIndex: Int, inMeasureAtIndex measureIndex: Int) throws {
		try modifyTieForNoteAtIndex(noteIndex, inMeasureAtIndex: measureIndex, removeTie: false)
	}
	
	public mutating func removeTieFromNoteAtIndex(noteIndex: Int, inMeasureAtIndex measureIndex: Int) throws {
		try modifyTieForNoteAtIndex(noteIndex, inMeasureAtIndex: measureIndex, removeTie: true)
	}
	
	public func measureAtIndex(measureIndex: Int) throws -> ImmutableMeasure {
        let (notesHolderIndex, repeatMeasureIndex) = try notesHolderIndexFromMeasureIndex(measureIndex)
        if let measureRepeat = notesHolders[notesHolderIndex] as? MeasureRepeat,

            }
            secondMeasure = try mutableMeasureFromNotesHolderIndex(secondNotesHolderIndex.notesHolderIndex, repeatMeasureIndex: secondNotesHolderIndex.repeatMeasureIndex)
            guard secondMeasure?.noteCount > 0 else {
                throw StaffError.NoNextNoteToTie
            }
        } else {
            secondMeasure = nil
