def METHOD_NAME(cls, name, scope_info=None):
    self = object.__new__(cls)
    self.name = str(name)
    # TODO: change magic methods to compare with scopestack included
    self.scope_info = scope_info
    if not is_identifier(self.name, dotted=True):
        if len(self.name) > 20:
            raise BadDottedIdentifierError("Invalid python symbol name")
        else:
            raise BadDottedIdentifierError("Invalid python symbol name %r"
                                           % (name,))
    self.parts = tuple(self.name.split('.'))
    return self