improved filesystem.findFirstMatch, and new recursive method