Get the canonical name for a symbol.
Get the canonical name for a symbol. This is default implementation. When user specified a name, the user specified name will be used. When user did not, we will automatically generate a name based on hint string.
: The name user specified.
: A hint string, which can be used to generate name.
A canonical name for the user.
NameManager to do automatic naming. User can also inherit this object to change naming behavior.