--- /dev/null
+#include <bindings.dsl.h>
+#include <CoreServices/CoreServices.h>
+
+module Bindings.CoreServices.CarbonCore.AVLTree where
+#strict_import
+import Bindings.CoreServices.CarbonCore.MacTypes
+
+#synonym_t AVLVisitStage, <UInt16>
+#num kAVLPreOrder
+#num kAVLInOrder
+#num kAVLPostOrder
+
+#synonym_t AVLOrder, <UInt16>
+#num kLeftToRight
+#num kRightToLeft
+
+#synonym_t AVLNodeType, <UInt16>
+#num kAVLIsTree
+#num kAVLIsLeftBranch
+#num kAVLIsRightBranch
+#num kAVLIsLeaf
+#num kAVLNullNode
+
+#num errItemAlreadyInTree
+#num errNotValidTree
+#num errItemNotFoundInTree
+#num errCanNotInsertWhileWalkProcInProgress
+#num errTreeIsLocked
+
+#starttype struct AVLTreeStruct
+# field signature, <OSType>
+# array_field privateStuff, CULong
+#stoptype
+#synonym_t AVLTreePtr, Ptr <AVLTreeStruct>
+
+#callback AVLCompareItemsProcPtr, <AVLTreePtr> -> Ptr () -> Ptr () -> <AVLNodeType> -> IO <SInt32>
+#callback AVLItemSizeProcPtr , <AVLTreePtr> -> Ptr () -> <ByteCount>
+#callback AVLDisposeItemProcPtr , <AVLTreePtr> -> Ptr () -> IO ()
+#callback AVLWalkProcPtr , <AVLTreePtr> -> Ptr () -> <AVLVisitStage> -> <AVLNodeType> -> <UInt32> -> <SInt32> -> Ptr () -> IO <OSErr>
+
+#synonym_t AVLCompareItemsUPP, <AVLCompareItemsProcPtr>
+#synonym_t AVLItemSizeUPP , <AVLItemSizeProcPtr>
+#synonym_t AVLDisposeItemUPP , <AVLDisposeItemProcPtr>
+#synonym_t AVLWalkUPP , <AVLWalkProcPtr>
+
+#if !__LP64__
+# ccall AVLInit , <UInt32> -> <AVLCompareItemsUPP> -> <AVLItemSizeUPP> -> <AVLDisposeItemUPP> -> Ptr () -> Ptr <AVLTreePtr> -> IO <OSErr>
+# ccall AVLDispose , Ptr <AVLTreePtr> -> <AVLOrder> -> IO <OSErr>
+# ccall AVLWalk , <AVLTreePtr> -> <AVLWalkUPP> -> <AVLOrder> -> Ptr () -> IO <OSErr>
+# ccall AVLCount , <AVLTreePtr> -> Ptr <UInt32> -> IO <OSErr>
+# ccall AVLGetIndItem, <AVLTreePtr> -> <UInt32> -> Ptr () -> Ptr <ByteCount> -> IO <OSErr>
+# ccall AVLInsert , <AVLTreePtr> -> Ptr () -> IO <OSErr>
+# ccall AVLRemove , <AVLTreePtr> -> Ptr () -> Ptr () -> Ptr <ByteCount> -> IO <OSErr>
+# ccall AVLFind , <AVLTreePtr> -> Ptr () -> Ptr () -> Ptr <ByteCount> -> IO <OSErr>
+# ccall AVLGetRefcon , <AVLTreePtr> -> Ptr (Ptr ()) -> IO <OSErr>
+#endif