diff --git a/src/context.rs b/src/context.rs
index 6f8c8f0..88989ae 100644
--- a/src/context.rs
+++ b/src/context.rs
@@ -2,12 +2,16 @@ use rbx_dom_weak::{types::Ref,WeakDom};
 
 pub fn class_is_a(class:&str,superclass:&str)->bool{
 	class==superclass
-	||rbx_reflection_database::get().classes.get(class)
-	.is_some_and(|descriptor|
-		descriptor.superclass.as_ref().is_some_and(|class_super|
-			class_is_a(class_super,superclass)
-		)
-	)
+	||{
+		let db=rbx_reflection_database::get();
+		match (db.classes.get(class),db.classes.get(superclass)){
+			(Some(class),Some(superclass))=>db.superclasses(class)
+				.unwrap()
+				.into_iter()
+				.any(|cls|core::ptr::addr_eq(cls,superclass)),
+			_=>false
+		}
+	}
 }
 
 #[repr(transparent)]