[WIP] Sem: Add first untested version of sem walker

I don't like a whole class being defined inside a function. Please move the class outside the function and make it private to the module.