Type Cursor::nonPointerTupe() const { auto typeResult = type(); if (typeResult.isPointer()) typeResult = typeResult.pointeeType(); return typeResult; }
bool Type::isOutputArgument() const { return isLValueReference() && !pointeeType().isConstant(); }
bool Type::isReferencingConstant() const { return (isPointer() || isLValueReference()) && pointeeType().isConstant(); }
bool Type::isPointerToConstant() const { return isPointer() && pointeeType().isConstant(); }
bool Type::isConstantReference() { return isLValueReference() && pointeeType().isConstant(); }