     /**
         Awaits the input of an Int
         - Parameter message: message to be printed before accepting input (e.g. "Name: ")
-        - Throws: Input.PipeUserInputOverlapError if the user piped data and this method was called
     */
     public static func awaitInt(message: String?) -> Int {
         return awaitInputWithConversion(message: message) { Int($0) }

        Awaits a string of convertible input; continues accepting input until the given input is successfully converted
        - Parameter message: message to be printed before accepting input (e.g. "Name: ")
        - Parameter conversion: closure attempting to convert the input to the desired output
        - Throws: Input.PipeUserInputOverlapError if the user piped data and this method was called
    */
    public static func awaitInputWithConversion<T>(message: String?, conversion: (_ input: String) -> T?) -> T {
        let input = awaitInputWithValidation(message: message) { (input) in

    /**
        Awaits a string of input
        - Parameter message: message to be printed before accepting input (e.g. "Name: ")
    */
    public static func awaitInput(message: String?) -> String {
        if let message = message {
