Une autre possibilité que je vois, utiliser aspectj. Tu injecte un aspect sur chaque classe @Unsafe qui check si il est bien appelé directement ou indirectement depuis une méthode @Safe ou @Unsafe....