Ran into the problem with that one that I was pushing all the types into lower case, but the 'game' expects them to be the same case as you started with. Had to change the code so that it compared the lower case of the name's extension to the lower case of the data set, but returned the original. After that, all was good.
Problem I am running into is that I am playing around with this thing in LUA. There seem to be function to find the last index of something, as part of the language, for a lot of other languages. LUA doesn't, nor does it have a built in split function, etc., but it does support regular expressions in its string.find function. Seems that the one I came up with: "%.[^%.]*$", is slow, so, even if the rest of my code was fast enough, the "find the extension" part of the function bleeds too much time for every file name, to pass the "large dataset" test. Something is delaying it "just enough".