Refactor location, filename, and klabel attributes

**please review**
This is necessary because otherwise I can have two attributes with the same key and different values. it is still very easy to locate attributes in a LinkedHashMap. And it is a fallacy to introduce runtime dependencies on test code.