diff --git a/example/doc_custom_tree.cpp b/example/doc_custom_tree.cpp
new file mode 100644
index 0000000..ad9d9e0
--- /dev/null
+++ b/example/doc_custom_tree.cpp
@@ -0,0 +1,69 @@
+//////////////////////////////////////////////////////////////////////////////
+//
+// (C) Copyright Ion Gaztanaga 2013-2013. Distributed under the Boost
+// Software License, Version 1.0. (See accompanying file
+// LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
+//
+// See http://www.boost.org/libs/container for documentation.
+//
+//////////////////////////////////////////////////////////////////////////////
+#include <boost/container/detail/config_begin.hpp>
+#include <boost/container/detail/workaround.hpp>
+//[doc_custom_tree
+#include <boost/container/set.hpp>
+
+//Make sure assertions are active
+#ifdef NDEBUG
+#undef NDEBUG
+#endif
+#include <cassert>
+
+int main ()
+{
+   using namespace boost::container;
+
+   //First define several options
+   //
+
+   //This option specifies an AVL tree based associative container
+   typedef tree_assoc_options< tree_type<avl_tree> >::type AVLTree;
+
+   //This option specifies an AVL tree based associative container
+   //disabling node size optimization.
+   typedef tree_assoc_options< tree_type<avl_tree>
+                             , optimize_size<false> >::type AVLTreeNoSizeOpt;
+
+   //This option specifies an Splay tree based associative container
+   typedef tree_assoc_options< tree_type<splay_tree> >::type SplayTree;
+
+   //Now define new tree-based associative containers
+   //
+
+   //AVLTree based set container
+   typedef set<int, std::less<int>, std::allocator<int>, AVLTree> AvlSet;
+
+   //AVLTree based set container without size optimization
+   typedef set<int, std::less<int>, std::allocator<int>, AVLTreeNoSizeOpt> AvlSetNoSizeOpt;
+
+   //Splay tree based multiset container
+   typedef multiset<int, std::less<int>, std::allocator<int>, SplayTree> SplayMultiset;
+
+   //Use them
+   //
+   AvlSet avl_set;
+   avl_set.insert(0);
+   assert(avl_set.find(0) != avl_set.end());
+
+   AvlSetNoSizeOpt avl_set_no_szopt;
+   avl_set_no_szopt.insert(1);
+   avl_set_no_szopt.insert(1);
+   assert(avl_set_no_szopt.count(1) == 1);
+
+   SplayMultiset splay_mset;
+   splay_mset.insert(2);
+   splay_mset.insert(2);
+   assert(splay_mset.count(2) == 2);
+   return 0;
+}
+//]
+#include <boost/container/detail/config_end.hpp>
