'Return the canonical Cursor corresponding to this Cursor.
The canonical cursor is the cursor which is representative for the
underlying entity. For example, if you have multiple forward
declarations for the same class, the canonical cursor for the forward
declarations will be identical.'

@property
def canonical(self):

    if (not hasattr(self, '_canonical')):
        self._canonical = conf.lib.clang_getCanonicalCursor(self)
    return self._canonical
