public IEnumerable <Token> Scan(string source) { if (source == null) // Empty or whitespcae is valid { throw new ArgumentNullException(nameof(source)); } // Try parse custom delimiters if (_parser.TryParse(source, out var offset, out var delimiters)) { _tokenizer.ApplyCustomRule(delimiters); source = source.Remove(0, offset); }