strongly type attributes
make attributes unique per ASTNode instance