     /// to provide a `TestError`
     case internalError(cause:Error)
     /// An error where no specific error message has been defined
-    case undefinedError(at: String.Index, causes:[Error])
+    case undefinedError(message:String, at: String.Index, causes:[Error])
     /// An error during scanning, with a defined message
     case scanningError(message:String,position:String.Index,causes:[Error])
     /// An error during parsing, with a defined message

                return "Internal Error: \(cause.localizedDescription)"
            }
            return "Internal Error"
        case .undefinedError(let position, let causes):
            if causes.isEmpty {
                return "Undefined error at \(position.encodedOffset)"
            } else {
                return "Undefined error at \(position.encodedOffset) caused by "+causes.map({"\($0)"}).joined(separator: ", ")
            }
        case .scanningError(let message, let position, let causes):
            if causes.isEmpty{

                self = .parsingError(message: error, range: lexer.index...lexer.index, causes: errors ?? [])
            }
        } else {
            self = .undefinedError(message: "Undefined error", at: lexer.index, causes: errors ?? [])
        }
    }
    
