+(defbinding %type-interfaces (type) pointer
+ ((find-type-number type t) type-number)
+ (n-interfaces unsigned-int :out))
+
+(defun type-interfaces (type)
+ (multiple-value-bind (array length) (%type-interfaces type)
+ (unwind-protect
+ (map-c-array 'list #'identity array 'type-number length)
+ (deallocate-memory array))))
+
+(defun implements (type)
+ (mapcar #'type-from-number (type-interfaces type)))
+