Regarding your commit message about namespaces, I want to explain what I ran into and maybe we can come up with a better solution... The avro specification makes a distinction between no namespace and the null namespace. The null namespace is referred to by an empty string, And specifying no namespace means to inherit from the parent context. However, if there is no parent context, then use the null namespace. Unfortunately there's no way to distinguish between these two different semantics using the fully qualified name, but the Av* AST does make a distinction. So if you specified namesakes == None, it infers the null namespace and a reference that refers to None will not work.. I think there's probably a way to clean this up I just didn't take the time to think it through and write the tests etc..