o Huge refactoring of the BulkLoad feature. We now are capable to bulk load elements...
authorEmmanuel Lécharny <elecharny@apache.org>
Tue, 24 Feb 2015 13:43:59 +0000 (13:43 +0000)
committerEmmanuel Lécharny <elecharny@apache.org>
Tue, 24 Feb 2015 13:43:59 +0000 (13:43 +0000)
o Removed useless sysout
o Added a setValues() method in Page
o The BtreHeaderOffset and BTreeInfoOffset default value is now NO_PAGE
o The subtrees are now created in one step, then written in a second step, to avoid creating pages that will be immediately reused
o raw keys are marked with the deserialied value as :<K> in the KeyHolder.toString() method
o Fixed a NPE in PersistedLeaf.toString() method

15 files changed:
mavibot/img/datastructure.graphml
mavibot/src/main/java/org/apache/directory/mavibot/btree/AbstractBTree.java
mavibot/src/main/java/org/apache/directory/mavibot/btree/AbstractPage.java
mavibot/src/main/java/org/apache/directory/mavibot/btree/AbstractValueHolder.java
mavibot/src/main/java/org/apache/directory/mavibot/btree/BTreeHeader.java
mavibot/src/main/java/org/apache/directory/mavibot/btree/BulkLoader.java
mavibot/src/main/java/org/apache/directory/mavibot/btree/InMemoryValueHolder.java
mavibot/src/main/java/org/apache/directory/mavibot/btree/PersistedBTree.java
mavibot/src/main/java/org/apache/directory/mavibot/btree/PersistedKeyHolder.java
mavibot/src/main/java/org/apache/directory/mavibot/btree/PersistedLeaf.java
mavibot/src/main/java/org/apache/directory/mavibot/btree/PersistedValueHolder.java
mavibot/src/main/java/org/apache/directory/mavibot/btree/RecordManager.java
mavibot/src/test/java/org/apache/directory/mavibot/btree/BulkLoaderTest.java
mavibot/src/test/java/org/apache/directory/mavibot/btree/InMemoryBTreeTest.java
mavibot/src/test/java/org/apache/directory/mavibot/btree/PersistedSubBtreeKeyCursorTest.java

index 4846376..643b780 100644 (file)
@@ -1,6 +1,6 @@
 <?xml version="1.0" encoding="UTF-8" standalone="no"?>
 <graphml xmlns="http://graphml.graphdrawing.org/xmlns" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:y="http://www.yworks.com/xml/graphml" xmlns:yed="http://www.yworks.com/xml/yed/3" xsi:schemaLocation="http://graphml.graphdrawing.org/xmlns http://www.yworks.com/xml/schema/graphml/1.1/ygraphml.xsd">
-  <!--Created by yFiles for Java 2.10-->
+  <!--Created by yEd 3.13-->
   <key for="graphml" id="d0" yfiles.type="resources"/>
   <key for="port" id="d1" yfiles.type="portgraphics"/>
   <key for="port" id="d2" yfiles.type="portgeometry"/>
@@ -17,7 +17,7 @@
     <node id="n0">
       <data key="d6">
         <y:ShapeNode>
-          <y:Geometry height="462.05146666666656" width="530.0" x="-169.5" y="387.63779999999986"/>
+          <y:Geometry height="462.05146666666656" width="530.0" x="74.4473684210526" y="-433.4148315789471"/>
           <y:Fill hasColor="false" transparent="false"/>
           <y:BorderStyle color="#000000" type="line" width="1.0"/>
           <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="16" fontStyle="bold" hasBackgroundColor="false" hasLineColor="false" height="22.84375" modelName="internal" modelPosition="t" textColor="#000000" visible="true" width="43.1484375" x="243.42578125" y="4.0">Page</y:NodeLabel>
     <node id="n1">
       <data key="d6">
         <y:GenericNode configuration="ShinyPlateNodeWithShadow">
-          <y:Geometry height="152.0" width="229.0" x="-18.0" y="-165.0"/>
+          <y:Geometry height="383.55146666666644" width="229.0" x="85.4473684210526" y="-403.4148315789469"/>
           <y:Fill color="#FFCC99" transparent="false"/>
           <y:BorderStyle hasColor="false" type="line" width="1.0"/>
-          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" modelName="free" modelPosition="anywhere" textColor="#000000" visible="true" width="139.4453125" x="-143.4453125" y="4.0">RecordManager Header</y:NodeLabel>
+          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" modelName="free" modelPosition="anywhere" textColor="#000000" visible="true" width="34.474609375" x="97.2626953125" y="-22.1328125">Node</y:NodeLabel>
         </y:GenericNode>
       </data>
     </node>
     <node id="n2">
       <data key="d6">
         <y:GenericNode configuration="ShinyPlateNodeWithShadow">
-          <y:Geometry height="30.0" width="27.0" x="-12.0" y="-87.0"/>
+          <y:Geometry height="30.0" width="27.0" x="90.4473684210526" y="-398.4148315789469"/>
           <y:Fill color="#FFFF99" transparent="false"/>
           <y:BorderStyle color="#C0C0C0" type="line" width="1.0"/>
           <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" modelName="custom" textColor="#000000" visible="true" width="7.796875" x="9.6015625" y="5.93359375">
@@ -55,7 +55,7 @@
     <node id="n3">
       <data key="d6">
         <y:GenericNode configuration="ShinyPlateNodeWithShadow">
-          <y:Geometry height="30.0" width="27.0" x="15.0" y="-87.0"/>
+          <y:Geometry height="30.0" width="27.0" x="117.4473684210526" y="-398.4148315789469"/>
           <y:Fill color="#FFFF99" transparent="false"/>
           <y:BorderStyle color="#C0C0C0" type="line" width="1.0"/>
           <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" modelName="custom" textColor="#000000" visible="true" width="7.796875" x="9.6015625" y="5.93359375">
@@ -72,7 +72,7 @@
     <node id="n4">
       <data key="d6">
         <y:GenericNode configuration="ShinyPlateNodeWithShadow">
-          <y:Geometry height="30.0" width="27.0" x="42.0" y="-87.0"/>
+          <y:Geometry height="30.0" width="27.0" x="144.4473684210526" y="-398.4148315789469"/>
           <y:Fill color="#FFFF99" transparent="false"/>
           <y:BorderStyle color="#C0C0C0" type="line" width="1.0"/>
           <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" modelName="custom" textColor="#000000" visible="true" width="7.796875" x="9.6015625" y="5.93359375">
@@ -89,7 +89,7 @@
     <node id="n5">
       <data key="d6">
         <y:GenericNode configuration="ShinyPlateNodeWithShadow">
-          <y:Geometry height="30.0" width="27.0" x="69.0" y="-87.0"/>
+          <y:Geometry height="30.0" width="27.0" x="171.4473684210526" y="-398.4148315789469"/>
           <y:Fill color="#FFFF99" transparent="false"/>
           <y:BorderStyle color="#C0C0C0" type="line" width="1.0"/>
           <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" modelName="custom" textColor="#000000" visible="true" width="7.796875" x="9.6015625" y="5.93359375">
     <node id="n6">
       <data key="d6">
         <y:GenericNode configuration="ShinyPlateNodeWithShadow">
-          <y:Geometry height="30.0" width="27.0" x="96.0" y="-87.0"/>
+          <y:Geometry height="30.0" width="27.0" x="198.4473684210526" y="-398.4148315789469"/>
           <y:Fill color="#FFFF99" transparent="false"/>
           <y:BorderStyle color="#C0C0C0" type="line" width="1.0"/>
           <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" modelName="custom" textColor="#000000" visible="true" width="7.796875" x="9.6015625" y="5.93359375">
     <node id="n7">
       <data key="d6">
         <y:GenericNode configuration="ShinyPlateNodeWithShadow">
-          <y:Geometry height="30.0" width="27.0" x="123.0" y="-87.0"/>
+          <y:Geometry height="30.0" width="27.0" x="225.4473684210526" y="-398.4148315789469"/>
           <y:Fill color="#FFFF99" transparent="false"/>
           <y:BorderStyle color="#C0C0C0" type="line" width="1.0"/>
           <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" modelName="custom" textColor="#000000" visible="true" width="7.796875" x="9.6015625" y="5.93359375">
     <node id="n8">
       <data key="d6">
         <y:GenericNode configuration="ShinyPlateNodeWithShadow">
-          <y:Geometry height="30.0" width="27.0" x="150.0" y="-87.0"/>
+          <y:Geometry height="30.0" width="27.0" x="252.4473684210526" y="-398.4148315789469"/>
           <y:Fill color="#FFFF99" transparent="false"/>
           <y:BorderStyle color="#C0C0C0" type="line" width="1.0"/>
           <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" modelName="custom" textColor="#000000" visible="true" width="7.796875" x="9.6015625" y="5.93359375">
     <node id="n9">
       <data key="d6">
         <y:GenericNode configuration="ShinyPlateNodeWithShadow">
-          <y:Geometry height="30.0" width="27.0" x="177.0" y="-87.0"/>
+          <y:Geometry height="30.0" width="27.0" x="279.4473684210526" y="-398.4148315789469"/>
           <y:Fill color="#FFFF99" transparent="false"/>
           <y:BorderStyle color="#C0C0C0" type="line" width="1.0"/>
           <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" hasText="false" height="4.0" modelName="free" modelPosition="anywhere" textColor="#000000" visible="true" width="4.0" x="-184.7802734375" y="5.93359375"/>
     <node id="n10">
       <data key="d6">
         <y:GenericNode configuration="ShinyPlateNodeWithShadow">
-          <y:Geometry height="30.0" width="27.0" x="-12.0" y="-159.0"/>
+          <y:Geometry height="30.0" width="27.0" x="90.4473684210526" y="-360.4148315789469"/>
           <y:Fill color="#FFFF99" transparent="false"/>
           <y:BorderStyle color="#C0C0C0" type="line" width="1.0"/>
-          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" hasText="false" height="4.0" modelName="internal" modelPosition="c" textColor="#000000" visible="true" width="4.0" x="11.5" y="13.0"/>
+          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" modelName="custom" textColor="#000000" visible="true" width="7.796875" x="9.6015625" y="5.93359375">
+<y:LabelModel>
+              <y:SmartNodeLabelModel distance="4.0"/>
+            </y:LabelModel>
+            <y:ModelParameter>
+              <y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
+            </y:ModelParameter>
+          </y:NodeLabel>
         </y:GenericNode>
       </data>
     </node>
     <node id="n11">
       <data key="d6">
         <y:GenericNode configuration="ShinyPlateNodeWithShadow">
-          <y:Geometry height="30.0" width="27.0" x="15.0" y="-159.0"/>
+          <y:Geometry height="30.0" width="27.0" x="117.4473684210526" y="-360.4148315789469"/>
           <y:Fill color="#FFFF99" transparent="false"/>
           <y:BorderStyle color="#C0C0C0" type="line" width="1.0"/>
           <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" modelName="custom" textColor="#000000" visible="true" width="7.796875" x="9.6015625" y="5.93359375">
     <node id="n12">
       <data key="d6">
         <y:GenericNode configuration="ShinyPlateNodeWithShadow">
-          <y:Geometry height="30.0" width="27.0" x="42.0" y="-159.0"/>
+          <y:Geometry height="30.0" width="27.0" x="144.4473684210526" y="-360.4148315789469"/>
           <y:Fill color="#FFFF99" transparent="false"/>
           <y:BorderStyle color="#C0C0C0" type="line" width="1.0"/>
           <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" modelName="custom" textColor="#000000" visible="true" width="7.796875" x="9.6015625" y="5.93359375">
     <node id="n13">
       <data key="d6">
         <y:GenericNode configuration="ShinyPlateNodeWithShadow">
-          <y:Geometry height="30.0" width="27.0" x="69.0" y="-159.0"/>
+          <y:Geometry height="30.0" width="27.0" x="171.4473684210526" y="-360.4148315789469"/>
           <y:Fill color="#FFFF99" transparent="false"/>
           <y:BorderStyle color="#C0C0C0" type="line" width="1.0"/>
-          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" hasText="false" height="4.0" modelName="free" modelPosition="anywhere" textColor="#000000" visible="true" width="4.0" x="-78.4619140625" y="5.93359375"/>
+          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" modelName="custom" textColor="#000000" visible="true" width="7.796875" x="9.6015625" y="5.93359375">
+<y:LabelModel>
+              <y:SmartNodeLabelModel distance="4.0"/>
+            </y:LabelModel>
+            <y:ModelParameter>
+              <y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
+            </y:ModelParameter>
+          </y:NodeLabel>
         </y:GenericNode>
       </data>
     </node>
     <node id="n14">
       <data key="d6">
-        <y:GenericNode configuration="ShinyPlateNodeWithShadow">
-          <y:Geometry height="30.0" width="27.0" x="-12.0" y="-123.0"/>
-          <y:Fill color="#FFFF99" transparent="false"/>
-          <y:BorderStyle color="#C0C0C0" type="line" width="1.0"/>
-          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" hasText="false" height="4.0" modelName="internal" modelPosition="c" textColor="#000000" visible="true" width="4.0" x="11.5" y="13.0"/>
+        <y:GenericNode configuration="ShinyPlateNode">
+          <y:Geometry height="30.0" width="216.0" x="90.4473684210526" y="-398.4148315789469"/>
+          <y:Fill hasColor="false" transparent="false"/>
+          <y:BorderStyle color="#0000FF" type="line" width="1.0"/>
+          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" modelName="internal" modelPosition="l" textColor="#000000" visible="true" width="52.357421875" x="4.0" y="5.93359375">Revision</y:NodeLabel>
         </y:GenericNode>
       </data>
     </node>
     <node id="n15">
       <data key="d6">
         <y:GenericNode configuration="ShinyPlateNodeWithShadow">
-          <y:Geometry height="30.0" width="27.0" x="15.0" y="-123.0"/>
+          <y:Geometry height="30.0" width="181.0" x="90.4473684210526" y="-290.071081578947"/>
           <y:Fill color="#FFFF99" transparent="false"/>
           <y:BorderStyle color="#C0C0C0" type="line" width="1.0"/>
-          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" modelName="custom" textColor="#000000" visible="true" width="7.796875" x="9.6015625" y="5.93359375">
+          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" modelName="custom" textColor="#000000" visible="true" width="7.796875" x="86.6015625" y="5.93359375">
 <y:LabelModel>
               <y:SmartNodeLabelModel distance="4.0"/>
             </y:LabelModel>
     </node>
     <node id="n16">
       <data key="d6">
-        <y:GenericNode configuration="ShinyPlateNodeWithShadow">
-          <y:Geometry height="30.0" width="27.0" x="42.0" y="-123.0"/>
+        <y:GenericNode configuration="ShinyPlateNode">
+          <y:Geometry height="30.0" width="181.0" x="90.4473684210526" y="-290.071081578947"/>
+          <y:Fill hasColor="false" transparent="false"/>
+          <y:BorderStyle color="#0000FF" type="line" width="1.0"/>
+          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" modelName="internal" modelPosition="l" textColor="#000000" visible="true" width="51.466796875" x="4.0" y="5.93359375">Value[0]</y:NodeLabel>
+        </y:GenericNode>
+      </data>
+    </node>
+    <node id="n17">
+      <data key="d6">
+        <y:ShapeNode>
+          <y:Geometry height="30.0" width="181.0" x="90.4473684210526" y="-133.79055657894685"/>
           <y:Fill color="#FFFF99" transparent="false"/>
-          <y:BorderStyle color="#C0C0C0" type="line" width="1.0"/>
-          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" modelName="custom" textColor="#000000" visible="true" width="7.796875" x="9.6015625" y="5.93359375">
-<y:LabelModel>
+          <y:BorderStyle hasColor="false" type="line" width="1.0"/>
+          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" modelName="custom" textColor="#000000" visible="true" width="15.390625" x="82.8046875" y="5.93359375">...<y:LabelModel>
               <y:SmartNodeLabelModel distance="4.0"/>
             </y:LabelModel>
             <y:ModelParameter>
               <y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
             </y:ModelParameter>
           </y:NodeLabel>
-        </y:GenericNode>
+          <y:Shape type="rectangle"/>
+        </y:ShapeNode>
       </data>
     </node>
-    <node id="n17">
+    <node id="n18">
       <data key="d6">
         <y:GenericNode configuration="ShinyPlateNodeWithShadow">
-          <y:Geometry height="30.0" width="27.0" x="69.0" y="-123.0"/>
-          <y:Fill color="#FFFF99" transparent="false"/>
-          <y:BorderStyle color="#C0C0C0" type="line" width="1.0"/>
-          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" hasText="false" height="4.0" modelName="free" modelPosition="anywhere" textColor="#000000" visible="true" width="4.0" x="-77.1435546875" y="5.93359375"/>
+          <y:Geometry height="421.05146666666644" width="229.0" x="364.4473684210526" y="-403.41483157894686"/>
+          <y:Fill color="#FFCC99" transparent="false"/>
+          <y:BorderStyle hasColor="false" type="line" width="1.0"/>
+          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" modelName="free" modelPosition="anywhere" textColor="#000000" visible="true" width="28.123046875" x="100.4384765625" y="-22.1328125">Leaf</y:NodeLabel>
         </y:GenericNode>
       </data>
     </node>
-    <node id="n18">
+    <node id="n19">
       <data key="d6">
         <y:GenericNode configuration="ShinyPlateNodeWithShadow">
-          <y:Geometry height="30.0" width="27.0" x="-12.0" y="-51.0"/>
+          <y:Geometry height="30.0" width="27.0" x="369.4473684210526" y="-398.41483157894686"/>
           <y:Fill color="#FFFF99" transparent="false"/>
           <y:BorderStyle color="#C0C0C0" type="line" width="1.0"/>
           <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" modelName="custom" textColor="#000000" visible="true" width="7.796875" x="9.6015625" y="5.93359375">
         </y:GenericNode>
       </data>
     </node>
-    <node id="n19">
+    <node id="n20">
       <data key="d6">
         <y:GenericNode configuration="ShinyPlateNodeWithShadow">
-          <y:Geometry height="30.0" width="27.0" x="15.0" y="-51.0"/>
+          <y:Geometry height="30.0" width="27.0" x="396.4473684210526" y="-398.41483157894686"/>
           <y:Fill color="#FFFF99" transparent="false"/>
           <y:BorderStyle color="#C0C0C0" type="line" width="1.0"/>
           <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" modelName="custom" textColor="#000000" visible="true" width="7.796875" x="9.6015625" y="5.93359375">
         </y:GenericNode>
       </data>
     </node>
-    <node id="n20">
+    <node id="n21">
       <data key="d6">
         <y:GenericNode configuration="ShinyPlateNodeWithShadow">
-          <y:Geometry height="30.0" width="27.0" x="42.0" y="-51.0"/>
+          <y:Geometry height="30.0" width="27.0" x="423.4473684210526" y="-398.41483157894686"/>
           <y:Fill color="#FFFF99" transparent="false"/>
           <y:BorderStyle color="#C0C0C0" type="line" width="1.0"/>
           <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" modelName="custom" textColor="#000000" visible="true" width="7.796875" x="9.6015625" y="5.93359375">
         </y:GenericNode>
       </data>
     </node>
-    <node id="n21">
+    <node id="n22">
       <data key="d6">
         <y:GenericNode configuration="ShinyPlateNodeWithShadow">
-          <y:Geometry height="30.0" width="27.0" x="69.0" y="-51.0"/>
+          <y:Geometry height="30.0" width="27.0" x="450.4473684210526" y="-398.41483157894686"/>
           <y:Fill color="#FFFF99" transparent="false"/>
           <y:BorderStyle color="#C0C0C0" type="line" width="1.0"/>
           <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" modelName="custom" textColor="#000000" visible="true" width="7.796875" x="9.6015625" y="5.93359375">
         </y:GenericNode>
       </data>
     </node>
-    <node id="n22">
+    <node id="n23">
       <data key="d6">
         <y:GenericNode configuration="ShinyPlateNodeWithShadow">
-          <y:Geometry height="30.0" width="27.0" x="96.0" y="-51.0"/>
+          <y:Geometry height="30.0" width="27.0" x="477.4473684210526" y="-398.41483157894686"/>
           <y:Fill color="#FFFF99" transparent="false"/>
           <y:BorderStyle color="#C0C0C0" type="line" width="1.0"/>
           <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" modelName="custom" textColor="#000000" visible="true" width="7.796875" x="9.6015625" y="5.93359375">
         </y:GenericNode>
       </data>
     </node>
-    <node id="n23">
+    <node id="n24">
       <data key="d6">
         <y:GenericNode configuration="ShinyPlateNodeWithShadow">
-          <y:Geometry height="30.0" width="27.0" x="123.0" y="-51.0"/>
+          <y:Geometry height="30.0" width="27.0" x="504.4473684210526" y="-398.41483157894686"/>
           <y:Fill color="#FFFF99" transparent="false"/>
           <y:BorderStyle color="#C0C0C0" type="line" width="1.0"/>
           <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" modelName="custom" textColor="#000000" visible="true" width="7.796875" x="9.6015625" y="5.93359375">
         </y:GenericNode>
       </data>
     </node>
-    <node id="n24">
+    <node id="n25">
       <data key="d6">
         <y:GenericNode configuration="ShinyPlateNodeWithShadow">
-          <y:Geometry height="30.0" width="27.0" x="150.0" y="-51.0"/>
+          <y:Geometry height="30.0" width="27.0" x="531.4473684210526" y="-398.41483157894686"/>
           <y:Fill color="#FFFF99" transparent="false"/>
           <y:BorderStyle color="#C0C0C0" type="line" width="1.0"/>
           <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" modelName="custom" textColor="#000000" visible="true" width="7.796875" x="9.6015625" y="5.93359375">
         </y:GenericNode>
       </data>
     </node>
-    <node id="n25">
+    <node id="n26">
       <data key="d6">
         <y:GenericNode configuration="ShinyPlateNodeWithShadow">
-          <y:Geometry height="30.0" width="27.0" x="177.0" y="-51.0"/>
+          <y:Geometry height="30.0" width="27.0" x="558.4473684210526" y="-398.41483157894686"/>
           <y:Fill color="#FFFF99" transparent="false"/>
           <y:BorderStyle color="#C0C0C0" type="line" width="1.0"/>
           <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" hasText="false" height="4.0" modelName="free" modelPosition="anywhere" textColor="#000000" visible="true" width="4.0" x="-184.7802734375" y="5.93359375"/>
         </y:GenericNode>
       </data>
     </node>
-    <node id="n26">
-      <data key="d6">
-        <y:GenericNode configuration="ShinyPlateNode">
-          <y:Geometry height="30.0" width="108.0" x="-12.0" y="-123.0"/>
-          <y:Fill hasColor="false" transparent="false"/>
-          <y:BorderStyle color="#0000FF" type="line" width="1.0"/>
-          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" modelName="internal" modelPosition="l" textColor="#000000" visible="true" width="46.287109375" x="4.0" y="5.93359375">NbTree</y:NodeLabel>
-        </y:GenericNode>
-      </data>
-    </node>
     <node id="n27">
       <data key="d6">
-        <y:GenericNode configuration="ShinyPlateNode">
-          <y:Geometry height="30.0" width="108.0" x="-12.0" y="-159.0"/>
-          <y:Fill hasColor="false" transparent="false"/>
-          <y:BorderStyle color="#0000FF" type="line" width="1.0"/>
-          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" modelName="internal" modelPosition="l" textColor="#000000" visible="true" width="54.923828125" x="4.0" y="5.93359375">PageSize</y:NodeLabel>
-        </y:GenericNode>
-      </data>
-    </node>
-    <node id="n28">
-      <data key="d6">
-        <y:GenericNode configuration="ShinyPlateNode">
-          <y:Geometry height="30.0" width="216.0" x="-12.0" y="-87.0"/>
-          <y:Fill hasColor="false" transparent="false"/>
-          <y:BorderStyle color="#0000FF" type="line" width="1.0"/>
-          <y:NodeLabel alignment="left" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" modelName="internal" modelPosition="l" textColor="#000000" visible="true" width="81.560546875" x="4.0" y="5.93359375">FirstFreePage</y:NodeLabel>
-        </y:GenericNode>
-      </data>
-    </node>
-    <node id="n29">
-      <data key="d6">
-        <y:GenericNode configuration="ShinyPlateNode">
-          <y:Geometry height="30.0" width="216.0" x="-12.0" y="-51.0"/>
-          <y:Fill hasColor="false" transparent="false"/>
-          <y:BorderStyle color="#0000FF" type="line" width="1.0"/>
-          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" modelName="internal" modelPosition="l" textColor="#000000" visible="true" width="79.7734375" x="4.0" y="5.93359375">LastFreePage</y:NodeLabel>
-        </y:GenericNode>
-      </data>
-    </node>
-    <node id="n30">
-      <data key="d6">
-        <y:GenericNode configuration="ShinyPlateNodeWithShadow">
-          <y:Geometry height="308.0256" width="229.0" x="-18.5" y="-1.0"/>
-          <y:Fill color="#FFCC99" transparent="false"/>
-          <y:BorderStyle hasColor="false" type="line" width="1.0"/>
-          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" modelName="free" modelPosition="anywhere" textColor="#000000" visible="true" width="81.84765625" x="-85.84765625" y="4.0">BTree Header</y:NodeLabel>
-        </y:GenericNode>
-      </data>
-    </node>
-    <node id="n31">
-      <data key="d6">
         <y:GenericNode configuration="ShinyPlateNodeWithShadow">
-          <y:Geometry height="30.0" width="27.0" x="-12.5" y="4.0"/>
+          <y:Geometry height="30.0" width="27.0" x="369.4473684210526" y="-360.41483157894686"/>
           <y:Fill color="#FFFF99" transparent="false"/>
           <y:BorderStyle color="#C0C0C0" type="line" width="1.0"/>
           <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" modelName="custom" textColor="#000000" visible="true" width="7.796875" x="9.6015625" y="5.93359375">
         </y:GenericNode>
       </data>
     </node>
-    <node id="n32">
+    <node id="n28">
       <data key="d6">
         <y:GenericNode configuration="ShinyPlateNodeWithShadow">
-          <y:Geometry height="30.0" width="27.0" x="14.5" y="4.0"/>
+          <y:Geometry height="30.0" width="27.0" x="396.4473684210526" y="-360.41483157894686"/>
           <y:Fill color="#FFFF99" transparent="false"/>
           <y:BorderStyle color="#C0C0C0" type="line" width="1.0"/>
           <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" modelName="custom" textColor="#000000" visible="true" width="7.796875" x="9.6015625" y="5.93359375">
         </y:GenericNode>
       </data>
     </node>
-    <node id="n33">
+    <node id="n29">
       <data key="d6">
         <y:GenericNode configuration="ShinyPlateNodeWithShadow">
-          <y:Geometry height="30.0" width="27.0" x="41.5" y="4.0"/>
+          <y:Geometry height="30.0" width="27.0" x="423.4473684210526" y="-360.41483157894686"/>
           <y:Fill color="#FFFF99" transparent="false"/>
           <y:BorderStyle color="#C0C0C0" type="line" width="1.0"/>
           <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" modelName="custom" textColor="#000000" visible="true" width="7.796875" x="9.6015625" y="5.93359375">
         </y:GenericNode>
       </data>
     </node>
-    <node id="n34">
+    <node id="n30">
       <data key="d6">
         <y:GenericNode configuration="ShinyPlateNodeWithShadow">
-          <y:Geometry height="30.0" width="27.0" x="68.5" y="4.0"/>
+          <y:Geometry height="30.0" width="27.0" x="450.4473684210526" y="-360.41483157894686"/>
           <y:Fill color="#FFFF99" transparent="false"/>
           <y:BorderStyle color="#C0C0C0" type="line" width="1.0"/>
           <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" modelName="custom" textColor="#000000" visible="true" width="7.796875" x="9.6015625" y="5.93359375">
         </y:GenericNode>
       </data>
     </node>
-    <node id="n35">
+    <node id="n31">
       <data key="d6">
-        <y:GenericNode configuration="ShinyPlateNodeWithShadow">
-          <y:Geometry height="30.0" width="27.0" x="95.5" y="4.0"/>
+        <y:GenericNode configuration="ShinyPlateNode">
+          <y:Geometry height="30.0" width="216.0" x="369.4473684210526" y="-398.41483157894686"/>
+          <y:Fill hasColor="false" transparent="false"/>
+          <y:BorderStyle color="#0000FF" type="line" width="1.0"/>
+          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" modelName="internal" modelPosition="l" textColor="#000000" visible="true" width="52.357421875" x="4.0" y="5.93359375">Revision</y:NodeLabel>
+        </y:GenericNode>
+      </data>
+    </node>
+    <node id="n32">
+      <data key="d6">
+        <y:ShapeNode>
+          <y:Geometry height="30.0" width="181.0" x="369.4473684210526" y="-125.86067157894684"/>
           <y:Fill color="#FFFF99" transparent="false"/>
-          <y:BorderStyle color="#C0C0C0" type="line" width="1.0"/>
-          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" modelName="custom" textColor="#000000" visible="true" width="7.796875" x="9.6015625" y="5.93359375">
-<y:LabelModel>
+          <y:BorderStyle hasColor="false" type="line" width="1.0"/>
+          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" modelName="custom" textColor="#000000" visible="true" width="15.390625" x="82.8046875" y="5.93359375">...<y:LabelModel>
               <y:SmartNodeLabelModel distance="4.0"/>
             </y:LabelModel>
             <y:ModelParameter>
               <y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
             </y:ModelParameter>
           </y:NodeLabel>
-        </y:GenericNode>
+          <y:Shape type="rectangle"/>
+        </y:ShapeNode>
       </data>
     </node>
-    <node id="n36">
+    <node id="n33">
       <data key="d6">
         <y:GenericNode configuration="ShinyPlateNodeWithShadow">
-          <y:Geometry height="30.0" width="27.0" x="122.5" y="4.0"/>
+          <y:Geometry height="30.0" width="181.0" x="90.4473684210526" y="-252.07108157894697"/>
           <y:Fill color="#FFFF99" transparent="false"/>
           <y:BorderStyle color="#C0C0C0" type="line" width="1.0"/>
-          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" modelName="custom" textColor="#000000" visible="true" width="7.796875" x="9.6015625" y="5.93359375">
+          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" modelName="custom" textColor="#000000" visible="true" width="7.796875" x="86.6015625" y="5.93359375">
 <y:LabelModel>
               <y:SmartNodeLabelModel distance="4.0"/>
             </y:LabelModel>
         </y:GenericNode>
       </data>
     </node>
-    <node id="n37">
+    <node id="n34">
+      <data key="d6">
+        <y:GenericNode configuration="ShinyPlateNode">
+          <y:Geometry height="30.0" width="181.0" x="90.4473684210526" y="-252.07108157894697"/>
+          <y:Fill hasColor="false" transparent="false"/>
+          <y:BorderStyle color="#0000FF" type="line" width="1.0"/>
+          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" modelName="internal" modelPosition="l" textColor="#000000" visible="true" width="40.181640625" x="4.0" y="5.93359375">Key[0]</y:NodeLabel>
+        </y:GenericNode>
+      </data>
+    </node>
+    <node id="n35">
       <data key="d6">
         <y:GenericNode configuration="ShinyPlateNodeWithShadow">
-          <y:Geometry height="30.0" width="27.0" x="149.5" y="4.0"/>
+          <y:Geometry height="30.0" width="181.0" x="90.4473684210526" y="-214.07108157894686"/>
           <y:Fill color="#FFFF99" transparent="false"/>
           <y:BorderStyle color="#C0C0C0" type="line" width="1.0"/>
-          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" modelName="custom" textColor="#000000" visible="true" width="7.796875" x="9.6015625" y="5.93359375">
+          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" modelName="custom" textColor="#000000" visible="true" width="7.796875" x="86.6015625" y="5.93359375">
 <y:LabelModel>
               <y:SmartNodeLabelModel distance="4.0"/>
             </y:LabelModel>
         </y:GenericNode>
       </data>
     </node>
-    <node id="n38">
+    <node id="n36">
       <data key="d6">
-        <y:GenericNode configuration="ShinyPlateNodeWithShadow">
-          <y:Geometry height="30.0" width="27.0" x="176.5" y="4.0"/>
-          <y:Fill color="#FFFF99" transparent="false"/>
-          <y:BorderStyle color="#C0C0C0" type="line" width="1.0"/>
-          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" hasText="false" height="4.0" modelName="free" modelPosition="anywhere" textColor="#000000" visible="true" width="4.0" x="-184.7802734375" y="5.93359375"/>
+        <y:GenericNode configuration="ShinyPlateNode">
+          <y:Geometry height="30.0" width="181.0" x="90.4473684210526" y="-214.07108157894686"/>
+          <y:Fill hasColor="false" transparent="false"/>
+          <y:BorderStyle color="#0000FF" type="line" width="1.0"/>
+          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" modelName="internal" modelPosition="l" textColor="#000000" visible="true" width="51.466796875" x="4.0" y="5.93359375">Value[1]</y:NodeLabel>
         </y:GenericNode>
       </data>
     </node>
-    <node id="n39">
+    <node id="n37">
       <data key="d6">
         <y:GenericNode configuration="ShinyPlateNodeWithShadow">
-          <y:Geometry height="30.0" width="27.0" x="-12.5" y="42.0"/>
+          <y:Geometry height="30.0" width="181.0" x="90.4473684210526" y="-177.61868157894685"/>
           <y:Fill color="#FFFF99" transparent="false"/>
           <y:BorderStyle color="#C0C0C0" type="line" width="1.0"/>
-          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" modelName="custom" textColor="#000000" visible="true" width="7.796875" x="9.6015625" y="5.93359375">
+          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" modelName="custom" textColor="#000000" visible="true" width="7.796875" x="86.6015625" y="5.93359375">
 <y:LabelModel>
               <y:SmartNodeLabelModel distance="4.0"/>
             </y:LabelModel>
         </y:GenericNode>
       </data>
     </node>
-    <node id="n40">
+    <node id="n38">
+      <data key="d6">
+        <y:GenericNode configuration="ShinyPlateNode">
+          <y:Geometry height="30.0" width="181.0" x="90.4473684210526" y="-177.61868157894685"/>
+          <y:Fill hasColor="false" transparent="false"/>
+          <y:BorderStyle color="#0000FF" type="line" width="1.0"/>
+          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" modelName="internal" modelPosition="l" textColor="#000000" visible="true" width="40.181640625" x="4.0" y="5.93359375">Key[1]</y:NodeLabel>
+        </y:GenericNode>
+      </data>
+    </node>
+    <node id="n39">
       <data key="d6">
         <y:GenericNode configuration="ShinyPlateNodeWithShadow">
-          <y:Geometry height="30.0" width="27.0" x="14.5" y="42.0"/>
+          <y:Geometry height="30.0" width="181.0" x="90.4473684210526" y="-89.96243157894685"/>
           <y:Fill color="#FFFF99" transparent="false"/>
           <y:BorderStyle color="#C0C0C0" type="line" width="1.0"/>
-          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" modelName="custom" textColor="#000000" visible="true" width="7.796875" x="9.6015625" y="5.93359375">
+          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" modelName="custom" textColor="#000000" visible="true" width="7.796875" x="86.6015625" y="5.93359375">
 <y:LabelModel>
               <y:SmartNodeLabelModel distance="4.0"/>
             </y:LabelModel>
         </y:GenericNode>
       </data>
     </node>
+    <node id="n40">
+      <data key="d6">
+        <y:GenericNode configuration="ShinyPlateNode">
+          <y:Geometry height="30.0" width="181.0" x="90.4473684210526" y="-89.96243157894685"/>
+          <y:Fill hasColor="false" transparent="false"/>
+          <y:BorderStyle color="#0000FF" type="line" width="1.0"/>
+          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" modelName="internal" modelPosition="l" textColor="#000000" visible="true" width="114.982421875" x="4.0" y="5.93359375">Value[nbElems - 1]</y:NodeLabel>
+        </y:GenericNode>
+      </data>
+    </node>
     <node id="n41">
       <data key="d6">
         <y:GenericNode configuration="ShinyPlateNodeWithShadow">
-          <y:Geometry height="30.0" width="27.0" x="41.5" y="42.0"/>
+          <y:Geometry height="30.0" width="181.0" x="90.4473684210526" y="-54.06419157894686"/>
           <y:Fill color="#FFFF99" transparent="false"/>
           <y:BorderStyle color="#C0C0C0" type="line" width="1.0"/>
-          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" modelName="custom" textColor="#000000" visible="true" width="7.796875" x="9.6015625" y="5.93359375">
+          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" modelName="custom" textColor="#000000" visible="true" width="7.796875" x="86.6015625" y="5.93359375">
 <y:LabelModel>
               <y:SmartNodeLabelModel distance="4.0"/>
             </y:LabelModel>
     </node>
     <node id="n42">
       <data key="d6">
-        <y:GenericNode configuration="ShinyPlateNodeWithShadow">
-          <y:Geometry height="30.0" width="27.0" x="68.5" y="42.0"/>
-          <y:Fill color="#FFFF99" transparent="false"/>
-          <y:BorderStyle color="#C0C0C0" type="line" width="1.0"/>
-          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" modelName="custom" textColor="#000000" visible="true" width="7.796875" x="9.6015625" y="5.93359375">
-<y:LabelModel>
-              <y:SmartNodeLabelModel distance="4.0"/>
-            </y:LabelModel>
-            <y:ModelParameter>
-              <y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
-            </y:ModelParameter>
-          </y:NodeLabel>
+        <y:GenericNode configuration="ShinyPlateNode">
+          <y:Geometry height="30.0" width="181.0" x="90.4473684210526" y="-54.06419157894686"/>
+          <y:Fill hasColor="false" transparent="false"/>
+          <y:BorderStyle color="#0000FF" type="line" width="1.0"/>
+          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" modelName="internal" modelPosition="l" textColor="#000000" visible="true" width="103.697265625" x="4.0" y="5.93359375">Key[nbElems - 1]</y:NodeLabel>
         </y:GenericNode>
       </data>
     </node>
     <node id="n43">
       <data key="d6">
         <y:GenericNode configuration="ShinyPlateNodeWithShadow">
-          <y:Geometry height="30.0" width="27.0" x="95.5" y="42.0"/>
+          <y:Geometry height="30.0" width="181.0" x="369.4473684210526" y="-283.8890982456137"/>
           <y:Fill color="#FFFF99" transparent="false"/>
           <y:BorderStyle color="#C0C0C0" type="line" width="1.0"/>
-          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" modelName="custom" textColor="#000000" visible="true" width="7.796875" x="9.6015625" y="5.93359375">
+          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" modelName="custom" textColor="#000000" visible="true" width="7.796875" x="86.6015625" y="5.93359375">
 <y:LabelModel>
               <y:SmartNodeLabelModel distance="4.0"/>
             </y:LabelModel>
     </node>
     <node id="n44">
       <data key="d6">
-        <y:GenericNode configuration="ShinyPlateNodeWithShadow">
-          <y:Geometry height="30.0" width="27.0" x="122.5" y="42.0"/>
-          <y:Fill color="#FFFF99" transparent="false"/>
-          <y:BorderStyle color="#C0C0C0" type="line" width="1.0"/>
-          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" modelName="custom" textColor="#000000" visible="true" width="7.796875" x="9.6015625" y="5.93359375">
-<y:LabelModel>
-              <y:SmartNodeLabelModel distance="4.0"/>
-            </y:LabelModel>
-            <y:ModelParameter>
-              <y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
-            </y:ModelParameter>
-          </y:NodeLabel>
+        <y:GenericNode configuration="ShinyPlateNode">
+          <y:Geometry height="30.0" width="181.0" x="369.4473684210526" y="-283.8890982456137"/>
+          <y:Fill hasColor="false" transparent="false"/>
+          <y:BorderStyle color="#0000FF" type="line" width="1.0"/>
+          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" modelName="internal" modelPosition="l" textColor="#000000" visible="true" width="51.466796875" x="4.0" y="5.93359375">Value[0]</y:NodeLabel>
         </y:GenericNode>
       </data>
     </node>
     <node id="n45">
       <data key="d6">
         <y:GenericNode configuration="ShinyPlateNodeWithShadow">
-          <y:Geometry height="30.0" width="27.0" x="149.5" y="42.0"/>
+          <y:Geometry height="30.0" width="181.0" x="369.4473684210526" y="-245.8890982456137"/>
           <y:Fill color="#FFFF99" transparent="false"/>
           <y:BorderStyle color="#C0C0C0" type="line" width="1.0"/>
-          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" modelName="custom" textColor="#000000" visible="true" width="7.796875" x="9.6015625" y="5.93359375">
+          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" modelName="custom" textColor="#000000" visible="true" width="7.796875" x="86.6015625" y="5.93359375">
 <y:LabelModel>
               <y:SmartNodeLabelModel distance="4.0"/>
             </y:LabelModel>
     </node>
     <node id="n46">
       <data key="d6">
-        <y:GenericNode configuration="ShinyPlateNodeWithShadow">
-          <y:Geometry height="30.0" width="27.0" x="176.5" y="42.0"/>
-          <y:Fill color="#FFFF99" transparent="false"/>
-          <y:BorderStyle color="#C0C0C0" type="line" width="1.0"/>
-          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" hasText="false" height="4.0" modelName="free" modelPosition="anywhere" textColor="#000000" visible="true" width="4.0" x="-184.7802734375" y="5.93359375"/>
+        <y:GenericNode configuration="ShinyPlateNode">
+          <y:Geometry height="30.0" width="181.0" x="369.4473684210526" y="-245.8890982456137"/>
+          <y:Fill hasColor="false" transparent="false"/>
+          <y:BorderStyle color="#0000FF" type="line" width="1.0"/>
+          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" modelName="internal" modelPosition="l" textColor="#000000" visible="true" width="40.181640625" x="4.0" y="5.93359375">Key[0]</y:NodeLabel>
         </y:GenericNode>
       </data>
     </node>
     <node id="n47">
       <data key="d6">
-        <y:GenericNode configuration="ShinyPlateNode">
-          <y:Geometry height="30.0" width="216.0" x="-12.5" y="42.0"/>
-          <y:Fill hasColor="false" transparent="false"/>
-          <y:BorderStyle color="#0000FF" type="line" width="1.0"/>
-          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" modelName="internal" modelPosition="l" textColor="#000000" visible="true" width="54.396484375" x="4.0" y="5.93359375">NbElems</y:NodeLabel>
+        <y:GenericNode configuration="ShinyPlateNodeWithShadow">
+          <y:Geometry height="30.0" width="181.0" x="369.4473684210526" y="-207.88909824561358"/>
+          <y:Fill color="#FFFF99" transparent="false"/>
+          <y:BorderStyle color="#C0C0C0" type="line" width="1.0"/>
+          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" modelName="custom" textColor="#000000" visible="true" width="7.796875" x="86.6015625" y="5.93359375">
+<y:LabelModel>
+              <y:SmartNodeLabelModel distance="4.0"/>
+            </y:LabelModel>
+            <y:ModelParameter>
+              <y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
+            </y:ModelParameter>
+          </y:NodeLabel>
         </y:GenericNode>
       </data>
     </node>
     <node id="n48">
       <data key="d6">
         <y:GenericNode configuration="ShinyPlateNode">
-          <y:Geometry height="30.0" width="216.0" x="-12.5" y="4.0"/>
+          <y:Geometry height="30.0" width="181.0" x="369.4473684210526" y="-207.88909824561358"/>
           <y:Fill hasColor="false" transparent="false"/>
           <y:BorderStyle color="#0000FF" type="line" width="1.0"/>
-          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" modelName="internal" modelPosition="l" textColor="#000000" visible="true" width="52.357421875" x="4.0" y="5.93359375">Revision</y:NodeLabel>
+          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" modelName="internal" modelPosition="l" textColor="#000000" visible="true" width="51.466796875" x="4.0" y="5.93359375">Value[1]</y:NodeLabel>
         </y:GenericNode>
       </data>
     </node>
     <node id="n49">
       <data key="d6">
         <y:GenericNode configuration="ShinyPlateNodeWithShadow">
-          <y:Geometry height="30.0" width="27.0" x="-12.5" y="80.0"/>
+          <y:Geometry height="30.0" width="181.0" x="369.4473684210526" y="-171.43669824561368"/>
           <y:Fill color="#FFFF99" transparent="false"/>
           <y:BorderStyle color="#C0C0C0" type="line" width="1.0"/>
-          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" modelName="custom" textColor="#000000" visible="true" width="7.796875" x="9.6015625" y="5.93359375">
+          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" modelName="custom" textColor="#000000" visible="true" width="7.796875" x="86.6015625" y="5.93359375">
 <y:LabelModel>
               <y:SmartNodeLabelModel distance="4.0"/>
             </y:LabelModel>
     </node>
     <node id="n50">
       <data key="d6">
-        <y:GenericNode configuration="ShinyPlateNodeWithShadow">
-          <y:Geometry height="30.0" width="27.0" x="14.5" y="80.0"/>
-          <y:Fill color="#FFFF99" transparent="false"/>
-          <y:BorderStyle color="#C0C0C0" type="line" width="1.0"/>
-          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" modelName="custom" textColor="#000000" visible="true" width="7.796875" x="9.6015625" y="5.93359375">
-<y:LabelModel>
-              <y:SmartNodeLabelModel distance="4.0"/>
-            </y:LabelModel>
-            <y:ModelParameter>
-              <y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
-            </y:ModelParameter>
-          </y:NodeLabel>
+        <y:GenericNode configuration="ShinyPlateNode">
+          <y:Geometry height="30.0" width="181.0" x="369.4473684210526" y="-171.43669824561368"/>
+          <y:Fill hasColor="false" transparent="false"/>
+          <y:BorderStyle color="#0000FF" type="line" width="1.0"/>
+          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" modelName="internal" modelPosition="l" textColor="#000000" visible="true" width="40.181640625" x="4.0" y="5.93359375">Key[1]</y:NodeLabel>
         </y:GenericNode>
       </data>
     </node>
     <node id="n51">
       <data key="d6">
         <y:GenericNode configuration="ShinyPlateNodeWithShadow">
-          <y:Geometry height="30.0" width="27.0" x="41.5" y="80.0"/>
+          <y:Geometry height="30.0" width="181.0" x="369.4473684210526" y="-89.96243157894685"/>
           <y:Fill color="#FFFF99" transparent="false"/>
           <y:BorderStyle color="#C0C0C0" type="line" width="1.0"/>
-          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" modelName="custom" textColor="#000000" visible="true" width="7.796875" x="9.6015625" y="5.93359375">
+          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" modelName="custom" textColor="#000000" visible="true" width="7.796875" x="86.6015625" y="5.93359375">
 <y:LabelModel>
               <y:SmartNodeLabelModel distance="4.0"/>
             </y:LabelModel>
     </node>
     <node id="n52">
       <data key="d6">
-        <y:GenericNode configuration="ShinyPlateNodeWithShadow">
-          <y:Geometry height="30.0" width="27.0" x="68.5" y="80.0"/>
-          <y:Fill color="#FFFF99" transparent="false"/>
-          <y:BorderStyle color="#C0C0C0" type="line" width="1.0"/>
-          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" modelName="custom" textColor="#000000" visible="true" width="7.796875" x="9.6015625" y="5.93359375">
-<y:LabelModel>
-              <y:SmartNodeLabelModel distance="4.0"/>
-            </y:LabelModel>
-            <y:ModelParameter>
-              <y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
-            </y:ModelParameter>
-          </y:NodeLabel>
+        <y:GenericNode configuration="ShinyPlateNode">
+          <y:Geometry height="30.0" width="181.0" x="369.4473684210526" y="-89.96243157894685"/>
+          <y:Fill hasColor="false" transparent="false"/>
+          <y:BorderStyle color="#0000FF" type="line" width="1.0"/>
+          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" modelName="internal" modelPosition="l" textColor="#000000" visible="true" width="114.982421875" x="4.0" y="5.93359375">Value[nbElems - 1]</y:NodeLabel>
         </y:GenericNode>
       </data>
     </node>
     <node id="n53">
       <data key="d6">
         <y:GenericNode configuration="ShinyPlateNodeWithShadow">
-          <y:Geometry height="30.0" width="27.0" x="95.5" y="80.0"/>
+          <y:Geometry height="30.0" width="181.0" x="369.4473684210526" y="-54.06419157894686"/>
           <y:Fill color="#FFFF99" transparent="false"/>
           <y:BorderStyle color="#C0C0C0" type="line" width="1.0"/>
-          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" modelName="custom" textColor="#000000" visible="true" width="7.796875" x="9.6015625" y="5.93359375">
+          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" modelName="custom" textColor="#000000" visible="true" width="7.796875" x="86.6015625" y="5.93359375">
 <y:LabelModel>
               <y:SmartNodeLabelModel distance="4.0"/>
             </y:LabelModel>
     </node>
     <node id="n54">
       <data key="d6">
-        <y:GenericNode configuration="ShinyPlateNodeWithShadow">
-          <y:Geometry height="30.0" width="27.0" x="122.5" y="80.0"/>
-          <y:Fill color="#FFFF99" transparent="false"/>
-          <y:BorderStyle color="#C0C0C0" type="line" width="1.0"/>
-          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" modelName="custom" textColor="#000000" visible="true" width="7.796875" x="9.6015625" y="5.93359375">
-<y:LabelModel>
-              <y:SmartNodeLabelModel distance="4.0"/>
-            </y:LabelModel>
-            <y:ModelParameter>
-              <y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
-            </y:ModelParameter>
-          </y:NodeLabel>
+        <y:GenericNode configuration="ShinyPlateNode">
+          <y:Geometry height="30.0" width="181.0" x="369.4473684210526" y="-54.06419157894686"/>
+          <y:Fill hasColor="false" transparent="false"/>
+          <y:BorderStyle color="#0000FF" type="line" width="1.0"/>
+          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" modelName="internal" modelPosition="l" textColor="#000000" visible="true" width="103.697265625" x="4.0" y="5.93359375">Key[nbElems - 1]</y:NodeLabel>
         </y:GenericNode>
       </data>
     </node>
     <node id="n55">
       <data key="d6">
         <y:GenericNode configuration="ShinyPlateNodeWithShadow">
-          <y:Geometry height="30.0" width="27.0" x="149.5" y="80.0"/>
+          <y:Geometry height="30.0" width="181.0" x="369.4473684210526" y="-18.165951578946874"/>
           <y:Fill color="#FFFF99" transparent="false"/>
           <y:BorderStyle color="#C0C0C0" type="line" width="1.0"/>
-          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" modelName="custom" textColor="#000000" visible="true" width="7.796875" x="9.6015625" y="5.93359375">
+          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" modelName="custom" textColor="#000000" visible="true" width="7.796875" x="86.6015625" y="5.93359375">
 <y:LabelModel>
               <y:SmartNodeLabelModel distance="4.0"/>
             </y:LabelModel>
     </node>
     <node id="n56">
       <data key="d6">
-        <y:GenericNode configuration="ShinyPlateNodeWithShadow">
-          <y:Geometry height="30.0" width="27.0" x="176.5" y="80.0"/>
-          <y:Fill color="#FFFF99" transparent="false"/>
-          <y:BorderStyle color="#C0C0C0" type="line" width="1.0"/>
-          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" hasText="false" height="4.0" modelName="free" modelPosition="anywhere" textColor="#000000" visible="true" width="4.0" x="-184.7802734375" y="5.93359375"/>
+        <y:GenericNode configuration="ShinyPlateNode">
+          <y:Geometry height="30.0" width="181.0" x="369.4473684210526" y="-18.165951578946874"/>
+          <y:Fill hasColor="false" transparent="false"/>
+          <y:BorderStyle color="#0000FF" type="line" width="1.0"/>
+          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" modelName="internal" modelPosition="l" textColor="#000000" visible="true" width="92.857421875" x="4.0" y="5.93359375">Value[nbElems]</y:NodeLabel>
         </y:GenericNode>
       </data>
     </node>
     <node id="n57">
       <data key="d6">
         <y:GenericNode configuration="ShinyPlateNode">
-          <y:Geometry height="30.0" width="216.0" x="-12.5" y="80.0"/>
+          <y:Geometry height="30.0" width="108.0" x="90.4473684210526" y="-360.414831578947"/>
           <y:Fill hasColor="false" transparent="false"/>
           <y:BorderStyle color="#0000FF" type="line" width="1.0"/>
-          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" modelName="internal" modelPosition="l" textColor="#000000" visible="true" width="93.68359375" x="4.0" y="5.93359375">RootPageOffset</y:NodeLabel>
+          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" modelName="internal" modelPosition="l" textColor="#000000" visible="true" width="54.396484375" x="4.0" y="5.93359375">NbElems</y:NodeLabel>
         </y:GenericNode>
       </data>
     </node>
     <node id="n58">
       <data key="d6">
-        <y:GenericNode configuration="ShinyPlateNodeWithShadow">
-          <y:Geometry height="30.0" width="27.0" x="-12.5" y="156.0"/>
-          <y:Fill color="#FFFF99" transparent="false"/>
-          <y:BorderStyle color="#C0C0C0" type="line" width="1.0"/>
-          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" hasText="false" height="4.0" modelName="internal" modelPosition="c" textColor="#000000" visible="true" width="4.0" x="11.5" y="13.0"/>
+        <y:GenericNode configuration="ShinyPlateNode">
+          <y:Geometry height="30.0" width="108.0" x="369.4473684210526" y="-360.41483157894686"/>
+          <y:Fill hasColor="false" transparent="false"/>
+          <y:BorderStyle color="#0000FF" type="line" width="1.0"/>
+          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" modelName="internal" modelPosition="l" textColor="#000000" visible="true" width="54.396484375" x="4.0" y="5.93359375">NbElems</y:NodeLabel>
         </y:GenericNode>
       </data>
     </node>
     <node id="n59">
       <data key="d6">
         <y:GenericNode configuration="ShinyPlateNodeWithShadow">
-          <y:Geometry height="30.0" width="27.0" x="14.5" y="156.0"/>
+          <y:Geometry height="30.0" width="27.0" x="90.4473684210526" y="-325.6087315789469"/>
           <y:Fill color="#FFFF99" transparent="false"/>
           <y:BorderStyle color="#C0C0C0" type="line" width="1.0"/>
-          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" modelName="custom" textColor="#000000" visible="true" width="7.796875" x="9.6015625" y="5.93359375">
+          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" modelName="custom" textColor="#000000" visible="true" width="7.796875" x="9.6015625" y="5.933593749999943">
 <y:LabelModel>
               <y:SmartNodeLabelModel distance="4.0"/>
             </y:LabelModel>
     <node id="n60">
       <data key="d6">
         <y:GenericNode configuration="ShinyPlateNodeWithShadow">
-          <y:Geometry height="30.0" width="27.0" x="41.5" y="156.0"/>
+          <y:Geometry height="30.0" width="27.0" x="117.4473684210526" y="-325.6087315789469"/>
           <y:Fill color="#FFFF99" transparent="false"/>
           <y:BorderStyle color="#C0C0C0" type="line" width="1.0"/>
-          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" modelName="custom" textColor="#000000" visible="true" width="7.796875" x="9.6015625" y="5.93359375">
+          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" modelName="custom" textColor="#000000" visible="true" width="7.796875" x="9.6015625" y="5.933593749999943">
 <y:LabelModel>
               <y:SmartNodeLabelModel distance="4.0"/>
             </y:LabelModel>
     <node id="n61">
       <data key="d6">
         <y:GenericNode configuration="ShinyPlateNodeWithShadow">
-          <y:Geometry height="30.0" width="27.0" x="68.5" y="156.0"/>
+          <y:Geometry height="30.0" width="27.0" x="144.4473684210526" y="-325.6087315789469"/>
           <y:Fill color="#FFFF99" transparent="false"/>
           <y:BorderStyle color="#C0C0C0" type="line" width="1.0"/>
-          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" hasText="false" height="4.0" modelName="free" modelPosition="anywhere" textColor="#000000" visible="true" width="4.0" x="-78.4619140625" y="5.93359375"/>
+          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" modelName="custom" textColor="#000000" visible="true" width="7.796875" x="9.6015625" y="5.933593749999943">
+<y:LabelModel>
+              <y:SmartNodeLabelModel distance="4.0"/>
+            </y:LabelModel>
+            <y:ModelParameter>
+              <y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
+            </y:ModelParameter>
+          </y:NodeLabel>
         </y:GenericNode>
       </data>
     </node>
     <node id="n62">
       <data key="d6">
-        <y:GenericNode configuration="ShinyPlateNode">
-          <y:Geometry height="30.0" width="108.0" x="-12.5" y="156.0"/>
-          <y:Fill hasColor="false" transparent="false"/>
-          <y:BorderStyle color="#0000FF" type="line" width="1.0"/>
-          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" modelName="internal" modelPosition="l" textColor="#000000" visible="true" width="87.6953125" x="4.0" y="5.93359375">BTreePageSize</y:NodeLabel>
+        <y:GenericNode configuration="ShinyPlateNodeWithShadow">
+          <y:Geometry height="30.0" width="27.0" x="171.4473684210526" y="-325.6087315789469"/>
+          <y:Fill color="#FFFF99" transparent="false"/>
+          <y:BorderStyle color="#C0C0C0" type="line" width="1.0"/>
+          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" modelName="custom" textColor="#000000" visible="true" width="7.796875" x="9.6015625" y="5.933593749999943">
+<y:LabelModel>
+              <y:SmartNodeLabelModel distance="4.0"/>
+            </y:LabelModel>
+            <y:ModelParameter>
+              <y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
+            </y:ModelParameter>
+          </y:NodeLabel>
         </y:GenericNode>
       </data>
     </node>
     <node id="n63">
       <data key="d6">
-        <y:GenericNode configuration="ShinyPlateNodeWithShadow">
-          <y:Geometry height="30.0" width="27.0" x="-12.5" y="194.0"/>
-          <y:Fill color="#FFFF99" transparent="false"/>
-          <y:BorderStyle color="#C0C0C0" type="line" width="1.0"/>
-          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" hasText="false" height="4.0" modelName="internal" modelPosition="c" textColor="#000000" visible="true" width="4.0" x="11.5" y="13.0"/>
+        <y:GenericNode configuration="ShinyPlateNode">
+          <y:Geometry height="30.0" width="108.0" x="90.4473684210526" y="-325.60873157894696"/>
+          <y:Fill hasColor="false" transparent="false"/>
+          <y:BorderStyle color="#0000FF" type="line" width="1.0"/>
+          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" modelName="internal" modelPosition="l" textColor="#000000" visible="true" width="54.2265625" x="4.0" y="5.93359375">DataSize</y:NodeLabel>
         </y:GenericNode>
       </data>
     </node>
     <node id="n64">
       <data key="d6">
         <y:GenericNode configuration="ShinyPlateNodeWithShadow">
-          <y:Geometry height="30.0" width="27.0" x="14.5" y="194.0"/>
+          <y:Geometry height="30.0" width="27.0" x="369.4473684210526" y="-322.1519649122803"/>
           <y:Fill color="#FFFF99" transparent="false"/>
           <y:BorderStyle color="#C0C0C0" type="line" width="1.0"/>
           <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" modelName="custom" textColor="#000000" visible="true" width="7.796875" x="9.6015625" y="5.93359375">
     <node id="n65">
       <data key="d6">
         <y:GenericNode configuration="ShinyPlateNodeWithShadow">
-          <y:Geometry height="30.0" width="27.0" x="41.5" y="194.0"/>
+          <y:Geometry height="30.0" width="27.0" x="396.4473684210526" y="-322.1519649122803"/>
           <y:Fill color="#FFFF99" transparent="false"/>
           <y:BorderStyle color="#C0C0C0" type="line" width="1.0"/>
           <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" modelName="custom" textColor="#000000" visible="true" width="7.796875" x="9.6015625" y="5.93359375">
     <node id="n66">
       <data key="d6">
         <y:GenericNode configuration="ShinyPlateNodeWithShadow">
-          <y:Geometry height="30.0" width="27.0" x="68.5" y="194.0"/>
+          <y:Geometry height="30.0" width="27.0" x="423.4473684210526" y="-322.1519649122803"/>
           <y:Fill color="#FFFF99" transparent="false"/>
           <y:BorderStyle color="#C0C0C0" type="line" width="1.0"/>
-          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" hasText="false" height="4.0" modelName="free" modelPosition="anywhere" textColor="#000000" visible="true" width="4.0" x="-78.4619140625" y="5.93359375"/>
+          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" modelName="custom" textColor="#000000" visible="true" width="7.796875" x="9.6015625" y="5.93359375">
+<y:LabelModel>
+              <y:SmartNodeLabelModel distance="4.0"/>
+            </y:LabelModel>
+            <y:ModelParameter>
+              <y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
+            </y:ModelParameter>
+          </y:NodeLabel>
         </y:GenericNode>
       </data>
     </node>
     <node id="n67">
       <data key="d6">
-        <y:GenericNode configuration="ShinyPlateNode">
-          <y:Geometry height="30.0" width="108.0" x="-12.5" y="194.0"/>
-          <y:Fill hasColor="false" transparent="false"/>
-          <y:BorderStyle color="#0000FF" type="line" width="1.0"/>
-          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" modelName="internal" modelPosition="l" textColor="#000000" visible="true" width="72.53125" x="4.0" y="5.93359375">BTree name</y:NodeLabel>
-        </y:GenericNode>
-      </data>
-    </node>
-    <node id="n68">
-      <data key="d6">
         <y:GenericNode configuration="ShinyPlateNodeWithShadow">
-          <y:Geometry height="30.0" width="70.0" x="98.5" y="194.0"/>
+          <y:Geometry height="30.0" width="27.0" x="450.4473684210526" y="-322.1519649122803"/>
           <y:Fill color="#FFFF99" transparent="false"/>
           <y:BorderStyle color="#C0C0C0" type="line" width="1.0"/>
-          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" modelName="custom" textColor="#000000" visible="true" width="7.796875" x="31.1015625" y="5.93359375">
+          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" modelName="custom" textColor="#000000" visible="true" width="7.796875" x="9.6015625" y="5.93359375">
 <y:LabelModel>
               <y:SmartNodeLabelModel distance="4.0"/>
             </y:LabelModel>
         </y:GenericNode>
       </data>
     </node>
-    <node id="n69">
+    <node id="n68">
       <data key="d6">
         <y:GenericNode configuration="ShinyPlateNode">
-          <y:Geometry height="30.0" width="70.0" x="98.5" y="194.0"/>
+          <y:Geometry height="30.0" width="108.0" x="369.4473684210526" y="-322.1519649122803"/>
           <y:Fill hasColor="false" transparent="false"/>
           <y:BorderStyle color="#0000FF" type="line" width="1.0"/>
-          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" modelName="custom" textColor="#000000" visible="true" width="35.8984375" x="17.05078125" y="5.93359375">xyz...<y:LabelModel>
-              <y:SmartNodeLabelModel distance="4.0"/>
-            </y:LabelModel>
-            <y:ModelParameter>
-              <y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
-            </y:ModelParameter>
-          </y:NodeLabel>
+          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" modelName="internal" modelPosition="l" textColor="#000000" visible="true" width="54.2265625" x="4.0" y="5.93359375">DataSize</y:NodeLabel>
+        </y:GenericNode>
+      </data>
+    </node>
+    <node id="n69">
+      <data key="d6">
+        <y:GenericNode configuration="ShinyPlateNodeWithShadow">
+          <y:Geometry height="157.0256" width="229.0" x="-259.5" y="-152.97057368421042"/>
+          <y:Fill color="#FFCC99" transparent="false"/>
+          <y:BorderStyle hasColor="false" type="line" width="1.0"/>
+          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" modelName="free" modelPosition="anywhere" textColor="#000000" visible="true" width="81.84765625" x="73.576171875" y="-22.1328125">BTree Header</y:NodeLabel>
         </y:GenericNode>
       </data>
     </node>
     <node id="n70">
       <data key="d6">
         <y:GenericNode configuration="ShinyPlateNodeWithShadow">
-          <y:Geometry height="30.0" width="27.0" x="-12.5" y="232.0"/>
+          <y:Geometry height="30.0" width="27.0" x="-253.5" y="-147.97057368421042"/>
           <y:Fill color="#FFFF99" transparent="false"/>
           <y:BorderStyle color="#C0C0C0" type="line" width="1.0"/>
-          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" hasText="false" height="4.0" modelName="internal" modelPosition="c" textColor="#000000" visible="true" width="4.0" x="11.5" y="13.0"/>
+          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" modelName="custom" textColor="#000000" visible="true" width="7.796875" x="9.6015625" y="5.93359375">
+<y:LabelModel>
+              <y:SmartNodeLabelModel distance="4.0"/>
+            </y:LabelModel>
+            <y:ModelParameter>
+              <y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
+            </y:ModelParameter>
+          </y:NodeLabel>
         </y:GenericNode>
       </data>
     </node>
     <node id="n71">
       <data key="d6">
         <y:GenericNode configuration="ShinyPlateNodeWithShadow">
-          <y:Geometry height="30.0" width="27.0" x="14.5" y="232.0"/>
+          <y:Geometry height="30.0" width="27.0" x="-226.5" y="-147.97057368421042"/>
           <y:Fill color="#FFFF99" transparent="false"/>
           <y:BorderStyle color="#C0C0C0" type="line" width="1.0"/>
           <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" modelName="custom" textColor="#000000" visible="true" width="7.796875" x="9.6015625" y="5.93359375">
     <node id="n72">
       <data key="d6">
         <y:GenericNode configuration="ShinyPlateNodeWithShadow">
-          <y:Geometry height="30.0" width="27.0" x="41.5" y="232.0"/>
+          <y:Geometry height="30.0" width="27.0" x="-199.5" y="-147.97057368421042"/>
           <y:Fill color="#FFFF99" transparent="false"/>
           <y:BorderStyle color="#C0C0C0" type="line" width="1.0"/>
           <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" modelName="custom" textColor="#000000" visible="true" width="7.796875" x="9.6015625" y="5.93359375">
     <node id="n73">
       <data key="d6">
         <y:GenericNode configuration="ShinyPlateNodeWithShadow">
-          <y:Geometry height="30.0" width="27.0" x="68.5" y="232.0"/>
+          <y:Geometry height="30.0" width="27.0" x="-172.5" y="-147.97057368421042"/>
           <y:Fill color="#FFFF99" transparent="false"/>
           <y:BorderStyle color="#C0C0C0" type="line" width="1.0"/>
-          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" hasText="false" height="4.0" modelName="free" modelPosition="anywhere" textColor="#000000" visible="true" width="4.0" x="-78.4619140625" y="5.93359375"/>
+          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" modelName="custom" textColor="#000000" visible="true" width="7.796875" x="9.6015625" y="5.93359375">
+<y:LabelModel>
+              <y:SmartNodeLabelModel distance="4.0"/>
+            </y:LabelModel>
+            <y:ModelParameter>
+              <y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
+            </y:ModelParameter>
+          </y:NodeLabel>
         </y:GenericNode>
       </data>
     </node>
     <node id="n74">
       <data key="d6">
-        <y:GenericNode configuration="ShinyPlateNode">
-          <y:Geometry height="30.0" width="108.0" x="-12.5" y="232.0"/>
-          <y:Fill hasColor="false" transparent="false"/>
-          <y:BorderStyle color="#0000FF" type="line" width="1.0"/>
-          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" modelName="internal" modelPosition="l" textColor="#000000" visible="true" width="78.35546875" x="4.0" y="5.93359375">KeySerializer</y:NodeLabel>
+        <y:GenericNode configuration="ShinyPlateNodeWithShadow">
+          <y:Geometry height="30.0" width="27.0" x="-145.5" y="-147.97057368421042"/>
+          <y:Fill color="#FFFF99" transparent="false"/>
+          <y:BorderStyle color="#C0C0C0" type="line" width="1.0"/>
+          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" modelName="custom" textColor="#000000" visible="true" width="7.796875" x="9.6015625" y="5.93359375">
+<y:LabelModel>
+              <y:SmartNodeLabelModel distance="4.0"/>
+            </y:LabelModel>
+            <y:ModelParameter>
+              <y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
+            </y:ModelParameter>
+          </y:NodeLabel>
         </y:GenericNode>
       </data>
     </node>
     <node id="n75">
       <data key="d6">
         <y:GenericNode configuration="ShinyPlateNodeWithShadow">
-          <y:Geometry height="30.0" width="70.0" x="98.5" y="232.0"/>
+          <y:Geometry height="30.0" width="27.0" x="-118.5" y="-147.97057368421042"/>
           <y:Fill color="#FFFF99" transparent="false"/>
           <y:BorderStyle color="#C0C0C0" type="line" width="1.0"/>
-          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" modelName="custom" textColor="#000000" visible="true" width="7.796875" x="31.1015625" y="5.93359375">
+          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" modelName="custom" textColor="#000000" visible="true" width="7.796875" x="9.6015625" y="5.93359375">
 <y:LabelModel>
               <y:SmartNodeLabelModel distance="4.0"/>
             </y:LabelModel>
     </node>
     <node id="n76">
       <data key="d6">
-        <y:GenericNode configuration="ShinyPlateNode">
-          <y:Geometry height="30.0" width="70.0" x="98.5" y="232.0"/>
-          <y:Fill hasColor="false" transparent="false"/>
-          <y:BorderStyle color="#0000FF" type="line" width="1.0"/>
-          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" modelName="custom" textColor="#000000" visible="true" width="35.8984375" x="17.05078125" y="5.93359375">xyz...<y:LabelModel>
+        <y:GenericNode configuration="ShinyPlateNodeWithShadow">
+          <y:Geometry height="30.0" width="27.0" x="-91.5" y="-147.97057368421042"/>
+          <y:Fill color="#FFFF99" transparent="false"/>
+          <y:BorderStyle color="#C0C0C0" type="line" width="1.0"/>
+          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" modelName="custom" textColor="#000000" visible="true" width="7.796875" x="9.6015625" y="5.93359375">
+<y:LabelModel>
               <y:SmartNodeLabelModel distance="4.0"/>
             </y:LabelModel>
             <y:ModelParameter>
     <node id="n77">
       <data key="d6">
         <y:GenericNode configuration="ShinyPlateNodeWithShadow">
-          <y:Geometry height="30.0" width="27.0" x="-12.5" y="270.0"/>
+          <y:Geometry height="30.0" width="27.0" x="-64.5" y="-147.97057368421042"/>
           <y:Fill color="#FFFF99" transparent="false"/>
           <y:BorderStyle color="#C0C0C0" type="line" width="1.0"/>
-          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" hasText="false" height="4.0" modelName="internal" modelPosition="c" textColor="#000000" visible="true" width="4.0" x="11.5" y="13.0"/>
+          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" hasText="false" height="4.0" modelName="free" modelPosition="anywhere" textColor="#000000" visible="true" width="4.0" x="-184.7802734375" y="5.93359375"/>
         </y:GenericNode>
       </data>
     </node>
     <node id="n78">
       <data key="d6">
         <y:GenericNode configuration="ShinyPlateNodeWithShadow">
-          <y:Geometry height="30.0" width="27.0" x="14.5" y="270.0"/>
+          <y:Geometry height="30.0" width="27.0" x="-253.5" y="-109.97057368421042"/>
           <y:Fill color="#FFFF99" transparent="false"/>
           <y:BorderStyle color="#C0C0C0" type="line" width="1.0"/>
           <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" modelName="custom" textColor="#000000" visible="true" width="7.796875" x="9.6015625" y="5.93359375">
     <node id="n79">
       <data key="d6">
         <y:GenericNode configuration="ShinyPlateNodeWithShadow">
-          <y:Geometry height="30.0" width="27.0" x="41.5" y="270.0"/>
+          <y:Geometry height="30.0" width="27.0" x="-226.5" y="-109.97057368421042"/>
           <y:Fill color="#FFFF99" transparent="false"/>
           <y:BorderStyle color="#C0C0C0" type="line" width="1.0"/>
           <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" modelName="custom" textColor="#000000" visible="true" width="7.796875" x="9.6015625" y="5.93359375">
     <node id="n80">
       <data key="d6">
         <y:GenericNode configuration="ShinyPlateNodeWithShadow">
-          <y:Geometry height="30.0" width="27.0" x="68.5" y="270.0"/>
-          <y:Fill color="#FFFF99" transparent="false"/>
-          <y:BorderStyle color="#C0C0C0" type="line" width="1.0"/>
-          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" hasText="false" height="4.0" modelName="free" modelPosition="anywhere" textColor="#000000" visible="true" width="4.0" x="-78.4619140625" y="5.93359375"/>
-        </y:GenericNode>
-      </data>
-    </node>
-    <node id="n81">
-      <data key="d6">
-        <y:GenericNode configuration="ShinyPlateNode">
-          <y:Geometry height="30.0" width="108.0" x="-12.5" y="270.0"/>
-          <y:Fill hasColor="false" transparent="false"/>
-          <y:BorderStyle color="#0000FF" type="line" width="1.0"/>
-          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" modelName="internal" modelPosition="l" textColor="#000000" visible="true" width="89.640625" x="4.0" y="5.93359375">ValueSerializer</y:NodeLabel>
-        </y:GenericNode>
-      </data>
-    </node>
-    <node id="n82">
-      <data key="d6">
-        <y:GenericNode configuration="ShinyPlateNodeWithShadow">
-          <y:Geometry height="30.0" width="70.0" x="98.5" y="270.0"/>
+          <y:Geometry height="30.0" width="27.0" x="-199.5" y="-109.97057368421042"/>
           <y:Fill color="#FFFF99" transparent="false"/>
           <y:BorderStyle color="#C0C0C0" type="line" width="1.0"/>
-          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" modelName="custom" textColor="#000000" visible="true" width="7.796875" x="31.1015625" y="5.93359375">
+          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" modelName="custom" textColor="#000000" visible="true" width="7.796875" x="9.6015625" y="5.93359375">
 <y:LabelModel>
               <y:SmartNodeLabelModel distance="4.0"/>
             </y:LabelModel>
         </y:GenericNode>
       </data>
     </node>
-    <node id="n83">
+    <node id="n81">
       <data key="d6">
-        <y:GenericNode configuration="ShinyPlateNode">
-          <y:Geometry height="30.0" width="70.0" x="98.5" y="270.0"/>
-          <y:Fill hasColor="false" transparent="false"/>
-          <y:BorderStyle color="#0000FF" type="line" width="1.0"/>
-          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" modelName="custom" textColor="#000000" visible="true" width="35.8984375" x="17.05078125" y="5.93359375">xyz...<y:LabelModel>
+        <y:GenericNode configuration="ShinyPlateNodeWithShadow">
+          <y:Geometry height="30.0" width="27.0" x="-172.5" y="-109.97057368421042"/>
+          <y:Fill color="#FFFF99" transparent="false"/>
+          <y:BorderStyle color="#C0C0C0" type="line" width="1.0"/>
+          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" modelName="custom" textColor="#000000" visible="true" width="7.796875" x="9.6015625" y="5.93359375">
+<y:LabelModel>
               <y:SmartNodeLabelModel distance="4.0"/>
             </y:LabelModel>
             <y:ModelParameter>
         </y:GenericNode>
       </data>
     </node>
-    <node id="n84">
+    <node id="n82">
       <data key="d6">
         <y:GenericNode configuration="ShinyPlateNodeWithShadow">
-          <y:Geometry height="30.0" width="27.0" x="-12.5" y="118.0"/>
+          <y:Geometry height="30.0" width="27.0" x="-145.5" y="-109.97057368421042"/>
           <y:Fill color="#FFFF99" transparent="false"/>
           <y:BorderStyle color="#C0C0C0" type="line" width="1.0"/>
           <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" modelName="custom" textColor="#000000" visible="true" width="7.796875" x="9.6015625" y="5.93359375">
         </y:GenericNode>
       </data>
     </node>
-    <node id="n85">
+    <node id="n83">
       <data key="d6">
         <y:GenericNode configuration="ShinyPlateNodeWithShadow">
-          <y:Geometry height="30.0" width="27.0" x="14.5" y="118.0"/>
+          <y:Geometry height="30.0" width="27.0" x="-118.5" y="-109.97057368421042"/>
           <y:Fill color="#FFFF99" transparent="false"/>
           <y:BorderStyle color="#C0C0C0" type="line" width="1.0"/>
           <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" modelName="custom" textColor="#000000" visible="true" width="7.796875" x="9.6015625" y="5.93359375">
         </y:GenericNode>
       </data>
     </node>
-    <node id="n86">
+    <node id="n84">
       <data key="d6">
         <y:GenericNode configuration="ShinyPlateNodeWithShadow">
-          <y:Geometry height="30.0" width="27.0" x="41.5" y="118.0"/>
+          <y:Geometry height="30.0" width="27.0" x="-91.5" y="-109.97057368421042"/>
           <y:Fill color="#FFFF99" transparent="false"/>
           <y:BorderStyle color="#C0C0C0" type="line" width="1.0"/>
           <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" modelName="custom" textColor="#000000" visible="true" width="7.796875" x="9.6015625" y="5.93359375">
         </y:GenericNode>
       </data>
     </node>
-    <node id="n87">
+    <node id="n85">
       <data key="d6">
         <y:GenericNode configuration="ShinyPlateNodeWithShadow">
-          <y:Geometry height="30.0" width="27.0" x="68.5" y="118.0"/>
+          <y:Geometry height="30.0" width="27.0" x="-64.5" y="-109.97057368421042"/>
           <y:Fill color="#FFFF99" transparent="false"/>
           <y:BorderStyle color="#C0C0C0" type="line" width="1.0"/>
-          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" modelName="custom" textColor="#000000" visible="true" width="7.796875" x="9.6015625" y="5.93359375">
-<y:LabelModel>
-              <y:SmartNodeLabelModel distance="4.0"/>
-            </y:LabelModel>
-            <y:ModelParameter>
-              <y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
-            </y:ModelParameter>
-          </y:NodeLabel>
+          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" hasText="false" height="4.0" modelName="free" modelPosition="anywhere" textColor="#000000" visible="true" width="4.0" x="-184.7802734375" y="5.93359375"/>
+        </y:GenericNode>
+      </data>
+    </node>
+    <node id="n86">
+      <data key="d6">
+        <y:GenericNode configuration="ShinyPlateNode">
+          <y:Geometry height="30.0" width="216.0" x="-253.5" y="-109.97057368421042"/>
+          <y:Fill hasColor="false" transparent="false"/>
+          <y:BorderStyle color="#0000FF" type="line" width="1.0"/>
+          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" modelName="internal" modelPosition="l" textColor="#000000" visible="true" width="54.396484375" x="4.0" y="5.93359375">NbElems</y:NodeLabel>
+        </y:GenericNode>
+      </data>
+    </node>
+    <node id="n87">
+      <data key="d6">
+        <y:GenericNode configuration="ShinyPlateNode">
+          <y:Geometry height="30.0" width="216.0" x="-253.5" y="-147.97057368421042"/>
+          <y:Fill hasColor="false" transparent="false"/>
+          <y:BorderStyle color="#0000FF" type="line" width="1.0"/>
+          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" modelName="internal" modelPosition="l" textColor="#000000" visible="true" width="52.357421875" x="4.0" y="5.93359375">Revision</y:NodeLabel>
         </y:GenericNode>
       </data>
     </node>
     <node id="n88">
       <data key="d6">
         <y:GenericNode configuration="ShinyPlateNodeWithShadow">
-          <y:Geometry height="30.0" width="27.0" x="95.5" y="118.0"/>
+          <y:Geometry height="30.0" width="27.0" x="-253.5" y="-71.97057368421042"/>
           <y:Fill color="#FFFF99" transparent="false"/>
           <y:BorderStyle color="#C0C0C0" type="line" width="1.0"/>
           <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" modelName="custom" textColor="#000000" visible="true" width="7.796875" x="9.6015625" y="5.93359375">
     <node id="n89">
       <data key="d6">
         <y:GenericNode configuration="ShinyPlateNodeWithShadow">
-          <y:Geometry height="30.0" width="27.0" x="122.5" y="118.0"/>
+          <y:Geometry height="30.0" width="27.0" x="-226.5" y="-71.97057368421042"/>
           <y:Fill color="#FFFF99" transparent="false"/>
           <y:BorderStyle color="#C0C0C0" type="line" width="1.0"/>
           <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" modelName="custom" textColor="#000000" visible="true" width="7.796875" x="9.6015625" y="5.93359375">
     <node id="n90">
       <data key="d6">
         <y:GenericNode configuration="ShinyPlateNodeWithShadow">
-          <y:Geometry height="30.0" width="27.0" x="149.5" y="118.0"/>
+          <y:Geometry height="30.0" width="27.0" x="-199.5" y="-71.97057368421042"/>
           <y:Fill color="#FFFF99" transparent="false"/>
           <y:BorderStyle color="#C0C0C0" type="line" width="1.0"/>
           <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" modelName="custom" textColor="#000000" visible="true" width="7.796875" x="9.6015625" y="5.93359375">
     <node id="n91">
       <data key="d6">
         <y:GenericNode configuration="ShinyPlateNodeWithShadow">
-          <y:Geometry height="30.0" width="27.0" x="176.5" y="118.0"/>
-          <y:Fill color="#FFFF99" transparent="false"/>
-          <y:BorderStyle color="#C0C0C0" type="line" width="1.0"/>
-          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" hasText="false" height="4.0" modelName="free" modelPosition="anywhere" textColor="#000000" visible="true" width="4.0" x="-184.7802734375" y="5.93359375"/>
-        </y:GenericNode>
-      </data>
-    </node>
-    <node id="n92">
-      <data key="d6">
-        <y:GenericNode configuration="ShinyPlateNode">
-          <y:Geometry height="30.0" width="216.0" x="-12.5" y="118.0"/>
-          <y:Fill hasColor="false" transparent="false"/>
-          <y:BorderStyle color="#0000FF" type="line" width="1.0"/>
-          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" modelName="internal" modelPosition="l" textColor="#000000" visible="true" width="102.349609375" x="4.0" y="5.93359375">NextBtreeHeader</y:NodeLabel>
-        </y:GenericNode>
-      </data>
-    </node>
-    <node id="n93">
-      <data key="d6">
-        <y:GenericNode configuration="ShinyPlateNodeWithShadow">
-          <y:Geometry height="383.55146666666644" width="229.0" x="-158.5" y="417.6378"/>
-          <y:Fill color="#FFCC99" transparent="false"/>
-          <y:BorderStyle hasColor="false" type="line" width="1.0"/>
-          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" modelName="free" modelPosition="anywhere" textColor="#000000" visible="true" width="34.474609375" x="97.2626953125" y="-22.1328125">Node</y:NodeLabel>
-        </y:GenericNode>
-      </data>
-    </node>
-    <node id="n94">
-      <data key="d6">
-        <y:GenericNode configuration="ShinyPlateNodeWithShadow">
-          <y:Geometry height="30.0" width="27.0" x="-153.5" y="422.6378"/>
+          <y:Geometry height="30.0" width="27.0" x="-172.5" y="-71.97057368421042"/>
           <y:Fill color="#FFFF99" transparent="false"/>
           <y:BorderStyle color="#C0C0C0" type="line" width="1.0"/>
           <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" modelName="custom" textColor="#000000" visible="true" width="7.796875" x="9.6015625" y="5.93359375">
         </y:GenericNode>
       </data>
     </node>
-    <node id="n95">
+    <node id="n92">
       <data key="d6">
         <y:GenericNode configuration="ShinyPlateNodeWithShadow">
-          <y:Geometry height="30.0" width="27.0" x="-126.5" y="422.6378"/>
+          <y:Geometry height="30.0" width="27.0" x="-145.5" y="-71.97057368421042"/>
           <y:Fill color="#FFFF99" transparent="false"/>
           <y:BorderStyle color="#C0C0C0" type="line" width="1.0"/>
           <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" modelName="custom" textColor="#000000" visible="true" width="7.796875" x="9.6015625" y="5.93359375">
         </y:GenericNode>
       </data>
     </node>
-    <node id="n96">
+    <node id="n93">
       <data key="d6">
         <y:GenericNode configuration="ShinyPlateNodeWithShadow">
-          <y:Geometry height="30.0" width="27.0" x="-99.5" y="422.6378"/>
+          <y:Geometry height="30.0" width="27.0" x="-118.5" y="-71.97057368421042"/>
           <y:Fill color="#FFFF99" transparent="false"/>
           <y:BorderStyle color="#C0C0C0" type="line" width="1.0"/>
           <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" modelName="custom" textColor="#000000" visible="true" width="7.796875" x="9.6015625" y="5.93359375">
         </y:GenericNode>
       </data>
     </node>
-    <node id="n97">
+    <node id="n94">
       <data key="d6">
         <y:GenericNode configuration="ShinyPlateNodeWithShadow">
-          <y:Geometry height="30.0" width="27.0" x="-72.5" y="422.6378"/>
+          <y:Geometry height="30.0" width="27.0" x="-91.5" y="-71.97057368421042"/>
           <y:Fill color="#FFFF99" transparent="false"/>
           <y:BorderStyle color="#C0C0C0" type="line" width="1.0"/>
           <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" modelName="custom" textColor="#000000" visible="true" width="7.796875" x="9.6015625" y="5.93359375">
         </y:GenericNode>
       </data>
     </node>
+    <node id="n95">
+      <data key="d6">
+        <y:GenericNode configuration="ShinyPlateNodeWithShadow">
+          <y:Geometry height="30.0" width="27.0" x="-64.5" y="-71.97057368421042"/>
+          <y:Fill color="#FFFF99" transparent="false"/>
+          <y:BorderStyle color="#C0C0C0" type="line" width="1.0"/>
+          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" hasText="false" height="4.0" modelName="free" modelPosition="anywhere" textColor="#000000" visible="true" width="4.0" x="-184.7802734375" y="5.93359375"/>
+        </y:GenericNode>
+      </data>
+    </node>
+    <node id="n96">
+      <data key="d6">
+        <y:GenericNode configuration="ShinyPlateNode">
+          <y:Geometry height="30.0" width="216.0" x="-253.5" y="-71.97057368421042"/>
+          <y:Fill hasColor="false" transparent="false"/>
+          <y:BorderStyle color="#0000FF" type="line" width="1.0"/>
+          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" modelName="internal" modelPosition="l" textColor="#000000" visible="true" width="93.68359375" x="4.0" y="5.93359375">RootPageOffset</y:NodeLabel>
+        </y:GenericNode>
+      </data>
+    </node>
+    <node id="n97">
+      <data key="d6">
+        <y:GenericNode configuration="ShinyPlateNodeWithShadow">
+          <y:Geometry height="199.0256" width="229.0" x="-259.5" y="34.055026315789576"/>
+          <y:Fill color="#FFCC99" transparent="false"/>
+          <y:BorderStyle hasColor="false" type="line" width="1.0"/>
+          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" modelName="free" modelPosition="anywhere" textColor="#000000" visible="true" width="59.458984375" x="73.576171875" y="-22.1328125">BTreeInfo</y:NodeLabel>
+        </y:GenericNode>
+      </data>
+    </node>
     <node id="n98">
       <data key="d6">
         <y:GenericNode configuration="ShinyPlateNodeWithShadow">
-          <y:Geometry height="30.0" width="27.0" x="-45.5" y="422.6378"/>
+          <y:Geometry height="30.0" width="27.0" x="-253.5" y="43.0678263157896"/>
           <y:Fill color="#FFFF99" transparent="false"/>
           <y:BorderStyle color="#C0C0C0" type="line" width="1.0"/>
-          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" modelName="custom" textColor="#000000" visible="true" width="7.796875" x="9.6015625" y="5.93359375">
-<y:LabelModel>
-              <y:SmartNodeLabelModel distance="4.0"/>
-            </y:LabelModel>
-            <y:ModelParameter>
-              <y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
-            </y:ModelParameter>
-          </y:NodeLabel>
+          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" hasText="false" height="4.0" modelName="internal" modelPosition="c" textColor="#000000" visible="true" width="4.0" x="11.5" y="13.0"/>
         </y:GenericNode>
       </data>
     </node>
     <node id="n99">
       <data key="d6">
         <y:GenericNode configuration="ShinyPlateNodeWithShadow">
-          <y:Geometry height="30.0" width="27.0" x="-18.5" y="422.6378"/>
+          <y:Geometry height="30.0" width="27.0" x="-226.5" y="43.0678263157896"/>
           <y:Fill color="#FFFF99" transparent="false"/>
           <y:BorderStyle color="#C0C0C0" type="line" width="1.0"/>
           <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" modelName="custom" textColor="#000000" visible="true" width="7.796875" x="9.6015625" y="5.93359375">
     <node id="n100">
       <data key="d6">
         <y:GenericNode configuration="ShinyPlateNodeWithShadow">
-          <y:Geometry height="30.0" width="27.0" x="8.5" y="422.6378"/>
+          <y:Geometry height="30.0" width="27.0" x="-199.5" y="43.0678263157896"/>
           <y:Fill color="#FFFF99" transparent="false"/>
           <y:BorderStyle color="#C0C0C0" type="line" width="1.0"/>
           <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" modelName="custom" textColor="#000000" visible="true" width="7.796875" x="9.6015625" y="5.93359375">
     <node id="n101">
       <data key="d6">
         <y:GenericNode configuration="ShinyPlateNodeWithShadow">
-          <y:Geometry height="30.0" width="27.0" x="35.5" y="422.6378"/>
+          <y:Geometry height="30.0" width="27.0" x="-172.5" y="43.0678263157896"/>
           <y:Fill color="#FFFF99" transparent="false"/>
           <y:BorderStyle color="#C0C0C0" type="line" width="1.0"/>
-          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" hasText="false" height="4.0" modelName="free" modelPosition="anywhere" textColor="#000000" visible="true" width="4.0" x="-184.7802734375" y="5.93359375"/>
+          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" hasText="false" height="4.0" modelName="free" modelPosition="anywhere" textColor="#000000" visible="true" width="4.0" x="-78.4619140625" y="5.93359375"/>
         </y:GenericNode>
       </data>
     </node>
     <node id="n102">
       <data key="d6">
-        <y:GenericNode configuration="ShinyPlateNodeWithShadow">
-          <y:Geometry height="30.0" width="27.0" x="-153.5" y="460.6378"/>
-          <y:Fill color="#FFFF99" transparent="false"/>
-          <y:BorderStyle color="#C0C0C0" type="line" width="1.0"/>
-          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" modelName="custom" textColor="#000000" visible="true" width="7.796875" x="9.6015625" y="5.93359375">
-<y:LabelModel>
-              <y:SmartNodeLabelModel distance="4.0"/>
-            </y:LabelModel>
-            <y:ModelParameter>
-              <y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
-            </y:ModelParameter>
-          </y:NodeLabel>
+        <y:GenericNode configuration="ShinyPlateNode">
+          <y:Geometry height="30.0" width="108.0" x="-253.5" y="43.0678263157896"/>
+          <y:Fill hasColor="false" transparent="false"/>
+          <y:BorderStyle color="#0000FF" type="line" width="1.0"/>
+          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" modelName="internal" modelPosition="l" textColor="#000000" visible="true" width="87.6953125" x="4.0" y="5.93359375">BTreePageSize</y:NodeLabel>
         </y:GenericNode>
       </data>
     </node>
     <node id="n103">
       <data key="d6">
         <y:GenericNode configuration="ShinyPlateNodeWithShadow">
-          <y:Geometry height="30.0" width="27.0" x="-126.5" y="460.6378"/>
+          <y:Geometry height="30.0" width="27.0" x="-253.5" y="81.0678263157896"/>
           <y:Fill color="#FFFF99" transparent="false"/>
           <y:BorderStyle color="#C0C0C0" type="line" width="1.0"/>
-          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" modelName="custom" textColor="#000000" visible="true" width="7.796875" x="9.6015625" y="5.93359375">
-<y:LabelModel>
-              <y:SmartNodeLabelModel distance="4.0"/>
-            </y:LabelModel>
-            <y:ModelParameter>
-              <y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
-            </y:ModelParameter>
-          </y:NodeLabel>
+          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" hasText="false" height="4.0" modelName="internal" modelPosition="c" textColor="#000000" visible="true" width="4.0" x="11.5" y="13.0"/>
         </y:GenericNode>
       </data>
     </node>
     <node id="n104">
       <data key="d6">
         <y:GenericNode configuration="ShinyPlateNodeWithShadow">
-          <y:Geometry height="30.0" width="27.0" x="-99.5" y="460.6378"/>
+          <y:Geometry height="30.0" width="27.0" x="-226.5" y="81.0678263157896"/>
           <y:Fill color="#FFFF99" transparent="false"/>
           <y:BorderStyle color="#C0C0C0" type="line" width="1.0"/>
           <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" modelName="custom" textColor="#000000" visible="true" width="7.796875" x="9.6015625" y="5.93359375">
     <node id="n105">
       <data key="d6">
         <y:GenericNode configuration="ShinyPlateNodeWithShadow">
-          <y:Geometry height="30.0" width="27.0" x="-72.5" y="460.6378"/>
+          <y:Geometry height="30.0" width="27.0" x="-199.5" y="81.0678263157896"/>
           <y:Fill color="#FFFF99" transparent="false"/>
           <y:BorderStyle color="#C0C0C0" type="line" width="1.0"/>
           <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" modelName="custom" textColor="#000000" visible="true" width="7.796875" x="9.6015625" y="5.93359375">
     </node>
     <node id="n106">
       <data key="d6">
+        <y:GenericNode configuration="ShinyPlateNodeWithShadow">
+          <y:Geometry height="30.0" width="27.0" x="-172.5" y="81.0678263157896"/>
+          <y:Fill color="#FFFF99" transparent="false"/>
+          <y:BorderStyle color="#C0C0C0" type="line" width="1.0"/>
+          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" hasText="false" height="4.0" modelName="free" modelPosition="anywhere" textColor="#000000" visible="true" width="4.0" x="-78.4619140625" y="5.93359375"/>
+        </y:GenericNode>
+      </data>
+    </node>
+    <node id="n107">
+      <data key="d6">
         <y:GenericNode configuration="ShinyPlateNode">
-          <y:Geometry height="30.0" width="216.0" x="-153.5" y="422.6378"/>
+          <y:Geometry height="30.0" width="108.0" x="-253.5" y="81.0678263157896"/>
           <y:Fill hasColor="false" transparent="false"/>
           <y:BorderStyle color="#0000FF" type="line" width="1.0"/>
-          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" modelName="internal" modelPosition="l" textColor="#000000" visible="true" width="52.357421875" x="4.0" y="5.93359375">Revision</y:NodeLabel>
+          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" modelName="internal" modelPosition="l" textColor="#000000" visible="true" width="72.53125" x="4.0" y="5.93359375">BTree name</y:NodeLabel>
         </y:GenericNode>
       </data>
     </node>
-    <node id="n107">
+    <node id="n108">
       <data key="d6">
         <y:GenericNode configuration="ShinyPlateNodeWithShadow">
-          <y:Geometry height="30.0" width="181.0" x="-153.5" y="530.98155"/>
+          <y:Geometry height="30.0" width="70.0" x="-142.5" y="81.0678263157896"/>
           <y:Fill color="#FFFF99" transparent="false"/>
           <y:BorderStyle color="#C0C0C0" type="line" width="1.0"/>
-          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" modelName="custom" textColor="#000000" visible="true" width="7.796875" x="86.6015625" y="5.933593749999943">
+          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" modelName="custom" textColor="#000000" visible="true" width="7.796875" x="31.1015625" y="5.93359375">
 <y:LabelModel>
               <y:SmartNodeLabelModel distance="4.0"/>
             </y:LabelModel>
         </y:GenericNode>
       </data>
     </node>
-    <node id="n108">
+    <node id="n109">
       <data key="d6">
         <y:GenericNode configuration="ShinyPlateNode">
-          <y:Geometry height="30.0" width="181.0" x="-153.5" y="530.98155"/>
+          <y:Geometry height="30.0" width="70.0" x="-142.5" y="81.0678263157896"/>
           <y:Fill hasColor="false" transparent="false"/>
           <y:BorderStyle color="#0000FF" type="line" width="1.0"/>
-          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" modelName="internal" modelPosition="l" textColor="#000000" visible="true" width="51.466796875" x="4.0" y="5.933593749999943">Value[0]</y:NodeLabel>
-        </y:GenericNode>
-      </data>
-    </node>
-    <node id="n109">
-      <data key="d6">
-        <y:ShapeNode>
-          <y:Geometry height="30.0" width="181.0" x="-153.5" y="687.2620750000001"/>
-          <y:Fill color="#FFFF99" transparent="false"/>
-          <y:BorderStyle hasColor="false" type="line" width="1.0"/>
-          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" modelName="custom" textColor="#000000" visible="true" width="15.390625" x="82.8046875" y="5.93359375">...<y:LabelModel>
+          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" modelName="custom" textColor="#000000" visible="true" width="35.8984375" x="17.05078125" y="5.93359375">xyz...<y:LabelModel>
               <y:SmartNodeLabelModel distance="4.0"/>
             </y:LabelModel>
             <y:ModelParameter>
               <y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
             </y:ModelParameter>
           </y:NodeLabel>
-          <y:Shape type="rectangle"/>
-        </y:ShapeNode>
+        </y:GenericNode>
       </data>
     </node>
     <node id="n110">
       <data key="d6">
         <y:GenericNode configuration="ShinyPlateNodeWithShadow">
-          <y:Geometry height="421.05146666666644" width="229.0" x="120.5" y="417.6378000000001"/>
-          <y:Fill color="#FFCC99" transparent="false"/>
-          <y:BorderStyle hasColor="false" type="line" width="1.0"/>
-          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" modelName="free" modelPosition="anywhere" textColor="#000000" visible="true" width="28.123046875" x="100.4384765625" y="-22.1328125">Leaf</y:NodeLabel>
+          <y:Geometry height="30.0" width="27.0" x="-253.5" y="119.06782631578955"/>
+          <y:Fill color="#FFFF99" transparent="false"/>
+          <y:BorderStyle color="#C0C0C0" type="line" width="1.0"/>
+          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" hasText="false" height="4.0" modelName="internal" modelPosition="c" textColor="#000000" visible="true" width="4.0" x="11.5" y="13.0"/>
         </y:GenericNode>
       </data>
     </node>
     <node id="n111">
       <data key="d6">
         <y:GenericNode configuration="ShinyPlateNodeWithShadow">
-          <y:Geometry height="30.0" width="27.0" x="125.5" y="422.6378000000001"/>
+          <y:Geometry height="30.0" width="27.0" x="-226.5" y="119.06782631578955"/>
           <y:Fill color="#FFFF99" transparent="false"/>
           <y:BorderStyle color="#C0C0C0" type="line" width="1.0"/>
           <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" modelName="custom" textColor="#000000" visible="true" width="7.796875" x="9.6015625" y="5.93359375">
     <node id="n112">
       <data key="d6">
         <y:GenericNode configuration="ShinyPlateNodeWithShadow">
-          <y:Geometry height="30.0" width="27.0" x="152.5" y="422.6378000000001"/>
+          <y:Geometry height="30.0" width="27.0" x="-199.5" y="119.06782631578955"/>
           <y:Fill color="#FFFF99" transparent="false"/>
           <y:BorderStyle color="#C0C0C0" type="line" width="1.0"/>
           <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" modelName="custom" textColor="#000000" visible="true" width="7.796875" x="9.6015625" y="5.93359375">
     <node id="n113">
       <data key="d6">
         <y:GenericNode configuration="ShinyPlateNodeWithShadow">
-          <y:Geometry height="30.0" width="27.0" x="179.5" y="422.6378000000001"/>
+          <y:Geometry height="30.0" width="27.0" x="-172.5" y="119.06782631578955"/>
           <y:Fill color="#FFFF99" transparent="false"/>
           <y:BorderStyle color="#C0C0C0" type="line" width="1.0"/>
-          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" modelName="custom" textColor="#000000" visible="true" width="7.796875" x="9.6015625" y="5.93359375">
-<y:LabelModel>
-              <y:SmartNodeLabelModel distance="4.0"/>
-            </y:LabelModel>
-            <y:ModelParameter>
-              <y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
-            </y:ModelParameter>
-          </y:NodeLabel>
+          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" hasText="false" height="4.0" modelName="free" modelPosition="anywhere" textColor="#000000" visible="true" width="4.0" x="-78.4619140625" y="5.93359375"/>
         </y:GenericNode>
       </data>
     </node>
     <node id="n114">
       <data key="d6">
+        <y:GenericNode configuration="ShinyPlateNode">
+          <y:Geometry height="30.0" width="108.0" x="-253.5" y="119.06782631578955"/>
+          <y:Fill hasColor="false" transparent="false"/>
+          <y:BorderStyle color="#0000FF" type="line" width="1.0"/>
+          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" modelName="internal" modelPosition="l" textColor="#000000" visible="true" width="78.35546875" x="4.0" y="5.93359375">KeySerializer</y:NodeLabel>
+        </y:GenericNode>
+      </data>
+    </node>
+    <node id="n115">
+      <data key="d6">
         <y:GenericNode configuration="ShinyPlateNodeWithShadow">
-          <y:Geometry height="30.0" width="27.0" x="206.5" y="422.6378000000001"/>
+          <y:Geometry height="30.0" width="70.0" x="-142.5" y="119.06782631578955"/>
           <y:Fill color="#FFFF99" transparent="false"/>
           <y:BorderStyle color="#C0C0C0" type="line" width="1.0"/>
-          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" modelName="custom" textColor="#000000" visible="true" width="7.796875" x="9.6015625" y="5.93359375">
+          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" modelName="custom" textColor="#000000" visible="true" width="7.796875" x="31.1015625" y="5.93359375">
 <y:LabelModel>
               <y:SmartNodeLabelModel distance="4.0"/>
             </y:LabelModel>
         </y:GenericNode>
       </data>
     </node>
-    <node id="n115">
+    <node id="n116">
       <data key="d6">
-        <y:GenericNode configuration="ShinyPlateNodeWithShadow">
-          <y:Geometry height="30.0" width="27.0" x="233.5" y="422.6378000000001"/>
-          <y:Fill color="#FFFF99" transparent="false"/>
-          <y:BorderStyle color="#C0C0C0" type="line" width="1.0"/>
-          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" modelName="custom" textColor="#000000" visible="true" width="7.796875" x="9.6015625" y="5.93359375">
-<y:LabelModel>
+        <y:GenericNode configuration="ShinyPlateNode">
+          <y:Geometry height="30.0" width="70.0" x="-142.5" y="119.06782631578955"/>
+          <y:Fill hasColor="false" transparent="false"/>
+          <y:BorderStyle color="#0000FF" type="line" width="1.0"/>
+          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" modelName="custom" textColor="#000000" visible="true" width="35.8984375" x="17.05078125" y="5.93359375">xyz...<y:LabelModel>
               <y:SmartNodeLabelModel distance="4.0"/>
             </y:LabelModel>
             <y:ModelParameter>
         </y:GenericNode>
       </data>
     </node>
-    <node id="n116">
+    <node id="n117">
+      <data key="d6">
+        <y:GenericNode configuration="ShinyPlateNodeWithShadow">
+          <y:Geometry height="30.0" width="27.0" x="-253.5" y="157.0678263157895"/>
+          <y:Fill color="#FFFF99" transparent="false"/>
+          <y:BorderStyle color="#C0C0C0" type="line" width="1.0"/>
+          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" hasText="false" height="4.0" modelName="internal" modelPosition="c" textColor="#000000" visible="true" width="4.0" x="11.5" y="13.0"/>
+        </y:GenericNode>
+      </data>
+    </node>
+    <node id="n118">
       <data key="d6">
         <y:GenericNode configuration="ShinyPlateNodeWithShadow">
-          <y:Geometry height="30.0" width="27.0" x="260.5" y="422.6378000000001"/>
+          <y:Geometry height="30.0" width="27.0" x="-226.5" y="157.0678263157895"/>
           <y:Fill color="#FFFF99" transparent="false"/>
           <y:BorderStyle color="#C0C0C0" type="line" width="1.0"/>
           <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" modelName="custom" textColor="#000000" visible="true" width="7.796875" x="9.6015625" y="5.93359375">
         </y:GenericNode>
       </data>
     </node>
-    <node id="n117">
+    <node id="n119">
       <data key="d6">
         <y:GenericNode configuration="ShinyPlateNodeWithShadow">
-          <y:Geometry height="30.0" width="27.0" x="287.5" y="422.6378000000001"/>
+          <y:Geometry height="30.0" width="27.0" x="-199.5" y="157.0678263157895"/>
           <y:Fill color="#FFFF99" transparent="false"/>
           <y:BorderStyle color="#C0C0C0" type="line" width="1.0"/>
           <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" modelName="custom" textColor="#000000" visible="true" width="7.796875" x="9.6015625" y="5.93359375">
         </y:GenericNode>
       </data>
     </node>
-    <node id="n118">
+    <node id="n120">
       <data key="d6">
         <y:GenericNode configuration="ShinyPlateNodeWithShadow">
-          <y:Geometry height="30.0" width="27.0" x="314.5" y="422.6378000000001"/>
+          <y:Geometry height="30.0" width="27.0" x="-172.5" y="157.0678263157895"/>
           <y:Fill color="#FFFF99" transparent="false"/>
           <y:BorderStyle color="#C0C0C0" type="line" width="1.0"/>
-          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" hasText="false" height="4.0" modelName="free" modelPosition="anywhere" textColor="#000000" visible="true" width="4.0" x="-184.7802734375" y="5.93359375"/>
+          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" hasText="false" height="4.0" modelName="free" modelPosition="anywhere" textColor="#000000" visible="true" width="4.0" x="-78.4619140625" y="5.93359375"/>
         </y:GenericNode>
       </data>
     </node>
-    <node id="n119">
+    <node id="n121">
+      <data key="d6">
+        <y:GenericNode configuration="ShinyPlateNode">
+          <y:Geometry height="30.0" width="108.0" x="-253.5" y="157.0678263157895"/>
+          <y:Fill hasColor="false" transparent="false"/>
+          <y:BorderStyle color="#0000FF" type="line" width="1.0"/>
+          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" modelName="internal" modelPosition="l" textColor="#000000" visible="true" width="89.640625" x="4.0" y="5.93359375">ValueSerializer</y:NodeLabel>
+        </y:GenericNode>
+      </data>
+    </node>
+    <node id="n122">
       <data key="d6">
         <y:GenericNode configuration="ShinyPlateNodeWithShadow">
-          <y:Geometry height="30.0" width="27.0" x="125.5" y="460.6378000000001"/>
+          <y:Geometry height="30.0" width="70.0" x="-142.5" y="157.0678263157895"/>
           <y:Fill color="#FFFF99" transparent="false"/>
           <y:BorderStyle color="#C0C0C0" type="line" width="1.0"/>
-          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" modelName="custom" textColor="#000000" visible="true" width="7.796875" x="9.6015625" y="5.93359375">
+          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" modelName="custom" textColor="#000000" visible="true" width="7.796875" x="31.1015625" y="5.93359375">
 <y:LabelModel>
               <y:SmartNodeLabelModel distance="4.0"/>
             </y:LabelModel>
         </y:GenericNode>
       </data>
     </node>
-    <node id="n120">
+    <node id="n123">
       <data key="d6">
-        <y:GenericNode configuration="ShinyPlateNodeWithShadow">
-          <y:Geometry height="30.0" width="27.0" x="152.5" y="460.6378000000001"/>
-          <y:Fill color="#FFFF99" transparent="false"/>
-          <y:BorderStyle color="#C0C0C0" type="line" width="1.0"/>
-          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" modelName="custom" textColor="#000000" visible="true" width="7.796875" x="9.6015625" y="5.93359375">
-<y:LabelModel>
+        <y:GenericNode configuration="ShinyPlateNode">
+          <y:Geometry height="30.0" width="70.0" x="-142.5" y="157.0678263157895"/>
+          <y:Fill hasColor="false" transparent="false"/>
+          <y:BorderStyle color="#0000FF" type="line" width="1.0"/>
+          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" modelName="custom" textColor="#000000" visible="true" width="35.8984375" x="17.05078125" y="5.93359375">xyz...<y:LabelModel>
               <y:SmartNodeLabelModel distance="4.0"/>
             </y:LabelModel>
             <y:ModelParameter>
         </y:GenericNode>
       </data>
     </node>
-    <node id="n121">
+    <node id="n124">
+      <data key="d6">
+        <y:GenericNode configuration="ShinyPlateNodeWithShadow">
+          <y:Geometry height="30.0" width="27.0" x="-253.5" y="195.0678263157895"/>
+          <y:Fill color="#FFFF99" transparent="false"/>
+          <y:BorderStyle color="#C0C0C0" type="line" width="1.0"/>
+          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" hasText="false" height="4.0" modelName="internal" modelPosition="c" textColor="#000000" visible="true" width="4.0" x="11.5" y="13.0"/>
+        </y:GenericNode>
+      </data>
+    </node>
+    <node id="n125">
+      <data key="d6">
+        <y:GenericNode configuration="ShinyPlateNode">
+          <y:Geometry height="30.0" width="27.0" x="-253.5" y="195.0678263157895"/>
+          <y:Fill hasColor="false" transparent="false"/>
+          <y:BorderStyle color="#0000FF" type="line" width="1.0"/>
+          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" modelName="internal" modelPosition="l" textColor="#000000" visible="true" width="78.7421875" x="4.0" y="5.93359375">dupsAllowed</y:NodeLabel>
+        </y:GenericNode>
+      </data>
+    </node>
+    <node id="n126">
       <data key="d6">
         <y:GenericNode configuration="ShinyPlateNodeWithShadow">
-          <y:Geometry height="30.0" width="27.0" x="179.5" y="460.6378000000001"/>
+          <y:Geometry height="30.0" width="27.0" x="-253.5" y="-33.97057368421042"/>
           <y:Fill color="#FFFF99" transparent="false"/>
           <y:BorderStyle color="#C0C0C0" type="line" width="1.0"/>
           <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" modelName="custom" textColor="#000000" visible="true" width="7.796875" x="9.6015625" y="5.93359375">
         </y:GenericNode>
       </data>
     </node>
-    <node id="n122">
+    <node id="n127">
       <data key="d6">
         <y:GenericNode configuration="ShinyPlateNodeWithShadow">
-          <y:Geometry height="30.0" width="27.0" x="206.5" y="460.6378000000001"/>
+          <y:Geometry height="30.0" width="27.0" x="-226.5" y="-33.97057368421042"/>
           <y:Fill color="#FFFF99" transparent="false"/>
           <y:BorderStyle color="#C0C0C0" type="line" width="1.0"/>
           <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" modelName="custom" textColor="#000000" visible="true" width="7.796875" x="9.6015625" y="5.93359375">
         </y:GenericNode>
       </data>
     </node>
-    <node id="n123">
-      <data key="d6">
-        <y:GenericNode configuration="ShinyPlateNode">
-          <y:Geometry height="30.0" width="216.0" x="125.5" y="422.6378000000001"/>
-          <y:Fill hasColor="false" transparent="false"/>
-          <y:BorderStyle color="#0000FF" type="line" width="1.0"/>
-          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" modelName="internal" modelPosition="l" textColor="#000000" visible="true" width="52.357421875" x="4.0" y="5.93359375">Revision</y:NodeLabel>
-        </y:GenericNode>
-      </data>
-    </node>
-    <node id="n124">
+    <node id="n128">
       <data key="d6">
-        <y:ShapeNode>
-          <y:Geometry height="30.0" width="181.0" x="125.5" y="695.1919600000001"/>
+        <y:GenericNode configuration="ShinyPlateNodeWithShadow">
+          <y:Geometry height="30.0" width="27.0" x="-199.5" y="-33.97057368421042"/>
           <y:Fill color="#FFFF99" transparent="false"/>
-          <y:BorderStyle hasColor="false" type="line" width="1.0"/>
-          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" modelName="custom" textColor="#000000" visible="true" width="15.390625" x="82.8046875" y="5.93359375">...<y:LabelModel>
+          <y:BorderStyle color="#C0C0C0" type="line" width="1.0"/>
+          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" modelName="custom" textColor="#000000" visible="true" width="7.796875" x="9.6015625" y="5.93359375">
+<y:LabelModel>
               <y:SmartNodeLabelModel distance="4.0"/>
             </y:LabelModel>
             <y:ModelParameter>
               <y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
             </y:ModelParameter>
           </y:NodeLabel>
-          <y:Shape type="rectangle"/>
-        </y:ShapeNode>
+        </y:GenericNode>
       </data>
     </node>
-    <node id="n125">
+    <node id="n129">
       <data key="d6">
         <y:GenericNode configuration="ShinyPlateNodeWithShadow">
-          <y:Geometry height="30.0" width="181.0" x="-153.5" y="568.98155"/>
+          <y:Geometry height="30.0" width="27.0" x="-172.5" y="-33.97057368421042"/>
           <y:Fill color="#FFFF99" transparent="false"/>
           <y:BorderStyle color="#C0C0C0" type="line" width="1.0"/>
-          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" modelName="custom" textColor="#000000" visible="true" width="7.796875" x="86.6015625" y="5.93359375">
+          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" modelName="custom" textColor="#000000" visible="true" width="7.796875" x="9.6015625" y="5.93359375">
 <y:LabelModel>
               <y:SmartNodeLabelModel distance="4.0"/>
             </y:LabelModel>
         </y:GenericNode>
       </data>
     </node>
-    <node id="n126">
-      <data key="d6">
-        <y:GenericNode configuration="ShinyPlateNode">
-          <y:Geometry height="30.0" width="181.0" x="-153.5" y="568.98155"/>
-          <y:Fill hasColor="false" transparent="false"/>
-          <y:BorderStyle color="#0000FF" type="line" width="1.0"/>
-          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" modelName="internal" modelPosition="l" textColor="#000000" visible="true" width="40.181640625" x="4.0" y="5.93359375">Key[0]</y:NodeLabel>
-        </y:GenericNode>
-      </data>
-    </node>
-    <node id="n127">
+    <node id="n130">
       <data key="d6">
         <y:GenericNode configuration="ShinyPlateNodeWithShadow">
-          <y:Geometry height="30.0" width="181.0" x="-153.5" y="606.9815500000001"/>
+          <y:Geometry height="30.0" width="27.0" x="-145.5" y="-33.97057368421042"/>
           <y:Fill color="#FFFF99" transparent="false"/>
           <y:BorderStyle color="#C0C0C0" type="line" width="1.0"/>
-          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" modelName="custom" textColor="#000000" visible="true" width="7.796875" x="86.6015625" y="5.93359375">
+          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" modelName="custom" textColor="#000000" visible="true" width="7.796875" x="9.6015625" y="5.93359375">
 <y:LabelModel>
               <y:SmartNodeLabelModel distance="4.0"/>
             </y:LabelModel>
         </y:GenericNode>
       </data>
     </node>
-    <node id="n128">
-      <data key="d6">
-        <y:GenericNode configuration="ShinyPlateNode">
-          <y:Geometry height="30.0" width="181.0" x="-153.5" y="606.9815500000001"/>
-          <y:Fill hasColor="false" transparent="false"/>
-          <y:BorderStyle color="#0000FF" type="line" width="1.0"/>
-          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" modelName="internal" modelPosition="l" textColor="#000000" visible="true" width="51.466796875" x="4.0" y="5.93359375">Value[1]</y:NodeLabel>
-        </y:GenericNode>
-      </data>
-    </node>
-    <node id="n129">
+    <node id="n131">
       <data key="d6">
         <y:GenericNode configuration="ShinyPlateNodeWithShadow">
-          <y:Geometry height="30.0" width="181.0" x="-153.5" y="643.4339500000001"/>
+          <y:Geometry height="30.0" width="27.0" x="-118.5" y="-33.97057368421042"/>
           <y:Fill color="#FFFF99" transparent="false"/>
           <y:BorderStyle color="#C0C0C0" type="line" width="1.0"/>
-          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" modelName="custom" textColor="#000000" visible="true" width="7.796875" x="86.6015625" y="5.93359375">
+          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" modelName="custom" textColor="#000000" visible="true" width="7.796875" x="9.6015625" y="5.93359375">
 <y:LabelModel>
               <y:SmartNodeLabelModel distance="4.0"/>
             </y:LabelModel>
         </y:GenericNode>
       </data>
     </node>
-    <node id="n130">
-      <data key="d6">
-        <y:GenericNode configuration="ShinyPlateNode">
-          <y:Geometry height="30.0" width="181.0" x="-153.5" y="643.4339500000001"/>
-          <y:Fill hasColor="false" transparent="false"/>
-          <y:BorderStyle color="#0000FF" type="line" width="1.0"/>
-          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" modelName="internal" modelPosition="l" textColor="#000000" visible="true" width="40.181640625" x="4.0" y="5.93359375">Key[1]</y:NodeLabel>
-        </y:GenericNode>
-      </data>
-    </node>
-    <node id="n131">
+    <node id="n132">
       <data key="d6">
         <y:GenericNode configuration="ShinyPlateNodeWithShadow">
-          <y:Geometry height="30.0" width="181.0" x="-153.5" y="731.0902000000001"/>
+          <y:Geometry height="30.0" width="27.0" x="-91.5" y="-33.97057368421042"/>
           <y:Fill color="#FFFF99" transparent="false"/>
           <y:BorderStyle color="#C0C0C0" type="line" width="1.0"/>
-          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" modelName="custom" textColor="#000000" visible="true" width="7.796875" x="86.6015625" y="5.93359375">
+          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" modelName="custom" textColor="#000000" visible="true" width="7.796875" x="9.6015625" y="5.93359375">
 <y:LabelModel>
               <y:SmartNodeLabelModel distance="4.0"/>
             </y:LabelModel>
         </y:GenericNode>
       </data>
     </node>
-    <node id="n132">
-      <data key="d6">
-        <y:GenericNode configuration="ShinyPlateNode">
-          <y:Geometry height="30.0" width="181.0" x="-153.5" y="731.0902000000001"/>
-          <y:Fill hasColor="false" transparent="false"/>
-          <y:BorderStyle color="#0000FF" type="line" width="1.0"/>
-          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" modelName="internal" modelPosition="l" textColor="#000000" visible="true" width="114.982421875" x="4.0" y="5.93359375">Value[nbElems - 1]</y:NodeLabel>
-        </y:GenericNode>
-      </data>
-    </node>
     <node id="n133">
       <data key="d6">
         <y:GenericNode configuration="ShinyPlateNodeWithShadow">
-          <y:Geometry height="30.0" width="181.0" x="-153.5" y="766.9884400000001"/>
+          <y:Geometry height="30.0" width="27.0" x="-64.5" y="-33.97057368421042"/>
           <y:Fill color="#FFFF99" transparent="false"/>
           <y:BorderStyle color="#C0C0C0" type="line" width="1.0"/>
-          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" modelName="custom" textColor="#000000" visible="true" width="7.796875" x="86.6015625" y="5.93359375">
-<y:LabelModel>
-              <y:SmartNodeLabelModel distance="4.0"/>
-            </y:LabelModel>
-            <y:ModelParameter>
-              <y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
-            </y:ModelParameter>
-          </y:NodeLabel>
+          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" hasText="false" height="4.0" modelName="free" modelPosition="anywhere" textColor="#000000" visible="true" width="4.0" x="-184.7802734375" y="5.93359375"/>
         </y:GenericNode>
       </data>
     </node>
     <node id="n134">
       <data key="d6">
         <y:GenericNode configuration="ShinyPlateNode">
-          <y:Geometry height="30.0" width="181.0" x="-153.5" y="766.9884400000001"/>
+          <y:Geometry height="30.0" width="216.0" x="-253.5" y="-33.97057368421042"/>
           <y:Fill hasColor="false" transparent="false"/>
           <y:BorderStyle color="#0000FF" type="line" width="1.0"/>
-          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" modelName="internal" modelPosition="l" textColor="#000000" visible="true" width="103.697265625" x="4.0" y="5.93359375">Key[nbElems - 1]</y:NodeLabel>
+          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" modelName="internal" modelPosition="l" textColor="#000000" visible="true" width="94.896484375" x="4.0" y="5.93359375">BTreeInfoOffset</y:NodeLabel>
         </y:GenericNode>
       </data>
     </node>
     <node id="n135">
       <data key="d6">
         <y:GenericNode configuration="ShinyPlateNodeWithShadow">
-          <y:Geometry height="30.0" width="181.0" x="125.5" y="537.1635333333332"/>
+          <y:Geometry height="263.0" width="229.0" x="-259.5" y="-436.4705736842104"/>
+          <y:Fill color="#FFCC99" transparent="false"/>
+          <y:BorderStyle hasColor="false" type="line" width="1.0"/>
+          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" modelName="free" modelPosition="anywhere" textColor="#000000" visible="true" width="139.4453125" x="44.77734375" y="-28.06640625">RecordManager Header</y:NodeLabel>
+        </y:GenericNode>
+      </data>
+    </node>
+    <node id="n136">
+      <data key="d6">
+        <y:GenericNode configuration="ShinyPlateNodeWithShadow">
+          <y:Geometry height="30.0" width="27.0" x="-253.5" y="-358.4705736842104"/>
           <y:Fill color="#FFFF99" transparent="false"/>
           <y:BorderStyle color="#C0C0C0" type="line" width="1.0"/>
-          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" modelName="custom" textColor="#000000" visible="true" width="7.796875" x="86.6015625" y="5.93359375">
+          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" modelName="custom" textColor="#000000" visible="true" width="7.796875" x="9.6015625" y="5.93359375">
 <y:LabelModel>
               <y:SmartNodeLabelModel distance="4.0"/>
             </y:LabelModel>
         </y:GenericNode>
       </data>
     </node>
-    <node id="n136">
-      <data key="d6">
-        <y:GenericNode configuration="ShinyPlateNode">
-          <y:Geometry height="30.0" width="181.0" x="125.5" y="537.1635333333332"/>
-          <y:Fill hasColor="false" transparent="false"/>
-          <y:BorderStyle color="#0000FF" type="line" width="1.0"/>
-          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" modelName="internal" modelPosition="l" textColor="#000000" visible="true" width="51.466796875" x="4.0" y="5.93359375">Value[0]</y:NodeLabel>
-        </y:GenericNode>
-      </data>
-    </node>
     <node id="n137">
       <data key="d6">
         <y:GenericNode configuration="ShinyPlateNodeWithShadow">
-          <y:Geometry height="30.0" width="181.0" x="125.5" y="575.1635333333332"/>
+          <y:Geometry height="30.0" width="27.0" x="-226.5" y="-358.4705736842104"/>
           <y:Fill color="#FFFF99" transparent="false"/>
           <y:BorderStyle color="#C0C0C0" type="line" width="1.0"/>
-          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" modelName="custom" textColor="#000000" visible="true" width="7.796875" x="86.6015625" y="5.93359375">
+          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" modelName="custom" textColor="#000000" visible="true" width="7.796875" x="9.6015625" y="5.93359375">
 <y:LabelModel>
               <y:SmartNodeLabelModel distance="4.0"/>
             </y:LabelModel>
     </node>
     <node id="n138">
       <data key="d6">
-        <y:GenericNode configuration="ShinyPlateNode">
-          <y:Geometry height="30.0" width="181.0" x="125.5" y="575.1635333333332"/>
-          <y:Fill hasColor="false" transparent="false"/>
-          <y:BorderStyle color="#0000FF" type="line" width="1.0"/>
-          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" modelName="internal" modelPosition="l" textColor="#000000" visible="true" width="40.181640625" x="4.0" y="5.93359375">Key[0]</y:NodeLabel>
+        <y:GenericNode configuration="ShinyPlateNodeWithShadow">
+          <y:Geometry height="30.0" width="27.0" x="-199.5" y="-358.4705736842104"/>
+          <y:Fill color="#FFFF99" transparent="false"/>
+          <y:BorderStyle color="#C0C0C0" type="line" width="1.0"/>
+          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" modelName="custom" textColor="#000000" visible="true" width="7.796875" x="9.6015625" y="5.93359375">
+<y:LabelModel>
+              <y:SmartNodeLabelModel distance="4.0"/>
+            </y:LabelModel>
+            <y:ModelParameter>
+              <y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
+            </y:ModelParameter>
+          </y:NodeLabel>
         </y:GenericNode>
       </data>
     </node>
     <node id="n139">
       <data key="d6">
         <y:GenericNode configuration="ShinyPlateNodeWithShadow">
-          <y:Geometry height="30.0" width="181.0" x="125.5" y="613.1635333333334"/>
+          <y:Geometry height="30.0" width="27.0" x="-172.5" y="-358.4705736842104"/>
           <y:Fill color="#FFFF99" transparent="false"/>
           <y:BorderStyle color="#C0C0C0" type="line" width="1.0"/>
-          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" modelName="custom" textColor="#000000" visible="true" width="7.796875" x="86.6015625" y="5.93359375">
+          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" modelName="custom" textColor="#000000" visible="true" width="7.796875" x="9.6015625" y="5.93359375">
 <y:LabelModel>
               <y:SmartNodeLabelModel distance="4.0"/>
             </y:LabelModel>
     </node>
     <node id="n140">
       <data key="d6">
-        <y:GenericNode configuration="ShinyPlateNode">
-          <y:Geometry height="30.0" width="181.0" x="125.5" y="613.1635333333334"/>
-          <y:Fill hasColor="false" transparent="false"/>
-          <y:BorderStyle color="#0000FF" type="line" width="1.0"/>
-          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" modelName="internal" modelPosition="l" textColor="#000000" visible="true" width="51.466796875" x="4.0" y="5.93359375">Value[1]</y:NodeLabel>
+        <y:GenericNode configuration="ShinyPlateNodeWithShadow">
+          <y:Geometry height="30.0" width="27.0" x="-145.5" y="-358.4705736842104"/>
+          <y:Fill color="#FFFF99" transparent="false"/>
+          <y:BorderStyle color="#C0C0C0" type="line" width="1.0"/>
+          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" modelName="custom" textColor="#000000" visible="true" width="7.796875" x="9.6015625" y="5.93359375">
+<y:LabelModel>
+              <y:SmartNodeLabelModel distance="4.0"/>
+            </y:LabelModel>
+            <y:ModelParameter>
+              <y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
+            </y:ModelParameter>
+          </y:NodeLabel>
         </y:GenericNode>
       </data>
     </node>
     <node id="n141">
       <data key="d6">
         <y:GenericNode configuration="ShinyPlateNodeWithShadow">
-          <y:Geometry height="30.0" width="181.0" x="125.5" y="649.6159333333333"/>
+          <y:Geometry height="30.0" width="27.0" x="-118.5" y="-358.4705736842104"/>
           <y:Fill color="#FFFF99" transparent="false"/>
           <y:BorderStyle color="#C0C0C0" type="line" width="1.0"/>
-          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" modelName="custom" textColor="#000000" visible="true" width="7.796875" x="86.6015625" y="5.93359375">
+          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" modelName="custom" textColor="#000000" visible="true" width="7.796875" x="9.6015625" y="5.93359375">
 <y:LabelModel>
               <y:SmartNodeLabelModel distance="4.0"/>
             </y:LabelModel>
     </node>
     <node id="n142">
       <data key="d6">
-        <y:GenericNode configuration="ShinyPlateNode">
-          <y:Geometry height="30.0" width="181.0" x="125.5" y="649.6159333333333"/>
-          <y:Fill hasColor="false" transparent="false"/>
-          <y:BorderStyle color="#0000FF" type="line" width="1.0"/>
-          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" modelName="internal" modelPosition="l" textColor="#000000" visible="true" width="40.181640625" x="4.0" y="5.93359375">Key[1]</y:NodeLabel>
-        </y:GenericNode>
-      </data>
-    </node>
-    <node id="n143">
-      <data key="d6">
         <y:GenericNode configuration="ShinyPlateNodeWithShadow">
-          <y:Geometry height="30.0" width="181.0" x="125.5" y="731.0902000000001"/>
+          <y:Geometry height="30.0" width="27.0" x="-91.5" y="-358.4705736842104"/>
           <y:Fill color="#FFFF99" transparent="false"/>
           <y:BorderStyle color="#C0C0C0" type="line" width="1.0"/>
-          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" modelName="custom" textColor="#000000" visible="true" width="7.796875" x="86.6015625" y="5.93359375">
+          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" modelName="custom" textColor="#000000" visible="true" width="7.796875" x="9.6015625" y="5.93359375">
 <y:LabelModel>
               <y:SmartNodeLabelModel distance="4.0"/>
             </y:LabelModel>
         </y:GenericNode>
       </data>
     </node>
+    <node id="n143">
+      <data key="d6">
+        <y:GenericNode configuration="ShinyPlateNodeWithShadow">
+          <y:Geometry height="30.0" width="27.0" x="-64.5" y="-358.4705736842104"/>
+          <y:Fill color="#FFFF99" transparent="false"/>
+          <y:BorderStyle color="#C0C0C0" type="line" width="1.0"/>
+          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" hasText="false" height="4.0" modelName="free" modelPosition="anywhere" textColor="#000000" visible="true" width="4.0" x="-184.7802734375" y="5.93359375"/>
+        </y:GenericNode>
+      </data>
+    </node>
     <node id="n144">
       <data key="d6">
-        <y:GenericNode configuration="ShinyPlateNode">
-          <y:Geometry height="30.0" width="181.0" x="125.5" y="731.0902000000001"/>
-          <y:Fill hasColor="false" transparent="false"/>
-          <y:BorderStyle color="#0000FF" type="line" width="1.0"/>
-          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" modelName="internal" modelPosition="l" textColor="#000000" visible="true" width="114.982421875" x="4.0" y="5.93359375">Value[nbElems - 1]</y:NodeLabel>
+        <y:GenericNode configuration="ShinyPlateNodeWithShadow">
+          <y:Geometry height="30.0" width="27.0" x="-253.5" y="-430.4705736842104"/>
+          <y:Fill color="#FFFF99" transparent="false"/>
+          <y:BorderStyle color="#C0C0C0" type="line" width="1.0"/>
+          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" hasText="false" height="4.0" modelName="internal" modelPosition="c" textColor="#000000" visible="true" width="4.0" x="11.5" y="13.0"/>
         </y:GenericNode>
       </data>
     </node>
     <node id="n145">
       <data key="d6">
         <y:GenericNode configuration="ShinyPlateNodeWithShadow">
-          <y:Geometry height="30.0" width="181.0" x="125.5" y="766.9884400000001"/>
+          <y:Geometry height="30.0" width="27.0" x="-226.5" y="-430.4705736842104"/>
           <y:Fill color="#FFFF99" transparent="false"/>
           <y:BorderStyle color="#C0C0C0" type="line" width="1.0"/>
-          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" modelName="custom" textColor="#000000" visible="true" width="7.796875" x="86.6015625" y="5.93359375">
+          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" modelName="custom" textColor="#000000" visible="true" width="7.796875" x="9.6015625" y="5.93359375">
 <y:LabelModel>
               <y:SmartNodeLabelModel distance="4.0"/>
             </y:LabelModel>
     </node>
     <node id="n146">
       <data key="d6">
-        <y:GenericNode configuration="ShinyPlateNode">
-          <y:Geometry height="30.0" width="181.0" x="125.5" y="766.9884400000001"/>
-          <y:Fill hasColor="false" transparent="false"/>
-          <y:BorderStyle color="#0000FF" type="line" width="1.0"/>
-          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" modelName="internal" modelPosition="l" textColor="#000000" visible="true" width="103.697265625" x="4.0" y="5.93359375">Key[nbElems - 1]</y:NodeLabel>
-        </y:GenericNode>
-      </data>
-    </node>
-    <node id="n147">
-      <data key="d6">
         <y:GenericNode configuration="ShinyPlateNodeWithShadow">
-          <y:Geometry height="30.0" width="181.0" x="125.5" y="802.8866800000001"/>
+          <y:Geometry height="30.0" width="27.0" x="-199.5" y="-430.4705736842104"/>
           <y:Fill color="#FFFF99" transparent="false"/>
           <y:BorderStyle color="#C0C0C0" type="line" width="1.0"/>
-          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" modelName="custom" textColor="#000000" visible="true" width="7.796875" x="86.6015625" y="5.93359375">
+          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" modelName="custom" textColor="#000000" visible="true" width="7.796875" x="9.6015625" y="5.93359375">
 <y:LabelModel>
               <y:SmartNodeLabelModel distance="4.0"/>
             </y:LabelModel>
         </y:GenericNode>
       </data>
     </node>
-    <node id="n148">
+    <node id="n147">
       <data key="d6">
-        <y:GenericNode configuration="ShinyPlateNode">
-          <y:Geometry height="30.0" width="181.0" x="125.5" y="802.8866800000001"/>
-          <y:Fill hasColor="false" transparent="false"/>
-          <y:BorderStyle color="#0000FF" type="line" width="1.0"/>
-          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" modelName="internal" modelPosition="l" textColor="#000000" visible="true" width="92.857421875" x="4.0" y="5.93359375">Value[nbElems]</y:NodeLabel>
+        <y:GenericNode configuration="ShinyPlateNodeWithShadow">
+          <y:Geometry height="30.0" width="27.0" x="-172.5" y="-430.4705736842104"/>
+          <y:Fill color="#FFFF99" transparent="false"/>
+          <y:BorderStyle color="#C0C0C0" type="line" width="1.0"/>
+          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" hasText="false" height="4.0" modelName="free" modelPosition="anywhere" textColor="#000000" visible="true" width="4.0" x="-78.4619140625" y="5.93359375"/>
         </y:GenericNode>
       </data>
     </node>
-    <node id="n149">
+    <node id="n148">
       <data key="d6">
-        <y:GenericNode configuration="ShinyPlateNode">
-          <y:Geometry height="30.0" width="108.0" x="-153.5" y="460.63779999999997"/>
-          <y:Fill hasColor="false" transparent="false"/>
-          <y:BorderStyle color="#0000FF" type="line" width="1.0"/>
-          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" modelName="internal" modelPosition="l" textColor="#000000" visible="true" width="54.396484375" x="4.0" y="5.93359375">NbElems</y:NodeLabel>
+        <y:GenericNode configuration="ShinyPlateNodeWithShadow">
+          <y:Geometry height="30.0" width="27.0" x="-253.5" y="-394.4705736842104"/>
+          <y:Fill color="#FFFF99" transparent="false"/>
+          <y:BorderStyle color="#C0C0C0" type="line" width="1.0"/>
+          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" hasText="false" height="4.0" modelName="internal" modelPosition="c" textColor="#000000" visible="true" width="4.0" x="11.5" y="13.0"/>
         </y:GenericNode>
       </data>
     </node>
-    <node id="n150">
+    <node id="n149">
       <data key="d6">
-        <y:GenericNode configuration="ShinyPlateNode">
-          <y:Geometry height="30.0" width="108.0" x="125.5" y="460.6378000000001"/>
-          <y:Fill hasColor="false" transparent="false"/>
-          <y:BorderStyle color="#0000FF" type="line" width="1.0"/>
-          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" modelName="internal" modelPosition="l" textColor="#000000" visible="true" width="54.396484375" x="4.0" y="5.93359375">NbElems</y:NodeLabel>
+        <y:GenericNode configuration="ShinyPlateNodeWithShadow">
+          <y:Geometry height="30.0" width="27.0" x="-226.5" y="-394.4705736842104"/>
+          <y:Fill color="#FFFF99" transparent="false"/>
+          <y:BorderStyle color="#C0C0C0" type="line" width="1.0"/>
+          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" modelName="custom" textColor="#000000" visible="true" width="7.796875" x="9.6015625" y="5.93359375">
+<y:LabelModel>
+              <y:SmartNodeLabelModel distance="4.0"/>
+            </y:LabelModel>
+            <y:ModelParameter>
+              <y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
+            </y:ModelParameter>
+          </y:NodeLabel>
         </y:GenericNode>
       </data>
     </node>
-    <node id="n151">
+    <node id="n150">
       <data key="d6">
         <y:GenericNode configuration="ShinyPlateNodeWithShadow">
-          <y:Geometry height="30.0" width="27.0" x="-153.5" y="495.44390000000004"/>
+          <y:Geometry height="30.0" width="27.0" x="-199.5" y="-394.4705736842104"/>
           <y:Fill color="#FFFF99" transparent="false"/>
           <y:BorderStyle color="#C0C0C0" type="line" width="1.0"/>
           <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" modelName="custom" textColor="#000000" visible="true" width="7.796875" x="9.6015625" y="5.93359375">
         </y:GenericNode>
       </data>
     </node>
+    <node id="n151">
+      <data key="d6">
+        <y:GenericNode configuration="ShinyPlateNodeWithShadow">
+          <y:Geometry height="30.0" width="27.0" x="-172.5" y="-394.4705736842104"/>
+          <y:Fill color="#FFFF99" transparent="false"/>
+          <y:BorderStyle color="#C0C0C0" type="line" width="1.0"/>
+          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" hasText="false" height="4.0" modelName="free" modelPosition="anywhere" textColor="#000000" visible="true" width="4.0" x="-77.1435546875" y="5.93359375"/>
+        </y:GenericNode>
+      </data>
+    </node>
     <node id="n152">
       <data key="d6">
         <y:GenericNode configuration="ShinyPlateNodeWithShadow">
-          <y:Geometry height="30.0" width="27.0" x="-126.5" y="495.44390000000004"/>
+          <y:Geometry height="30.0" width="27.0" x="-253.5" y="-322.4705736842104"/>
           <y:Fill color="#FFFF99" transparent="false"/>
           <y:BorderStyle color="#C0C0C0" type="line" width="1.0"/>
           <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" modelName="custom" textColor="#000000" visible="true" width="7.796875" x="9.6015625" y="5.93359375">
     <node id="n153">
       <data key="d6">
         <y:GenericNode configuration="ShinyPlateNodeWithShadow">
-          <y:Geometry height="30.0" width="27.0" x="-99.5" y="495.44390000000004"/>
+          <y:Geometry height="30.0" width="27.0" x="-226.5" y="-322.4705736842104"/>
           <y:Fill color="#FFFF99" transparent="false"/>
           <y:BorderStyle color="#C0C0C0" type="line" width="1.0"/>
           <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" modelName="custom" textColor="#000000" visible="true" width="7.796875" x="9.6015625" y="5.93359375">
     <node id="n154">
       <data key="d6">
         <y:GenericNode configuration="ShinyPlateNodeWithShadow">
-          <y:Geometry height="30.0" width="27.0" x="-72.5" y="495.44390000000004"/>
+          <y:Geometry height="30.0" width="27.0" x="-199.5" y="-322.4705736842104"/>
           <y:Fill color="#FFFF99" transparent="false"/>
           <y:BorderStyle color="#C0C0C0" type="line" width="1.0"/>
           <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" modelName="custom" textColor="#000000" visible="true" width="7.796875" x="9.6015625" y="5.93359375">
     </node>
     <node id="n155">
       <data key="d6">
-        <y:GenericNode configuration="ShinyPlateNode">
-          <y:Geometry height="30.0" width="108.0" x="-153.5" y="495.4439"/>
-          <y:Fill hasColor="false" transparent="false"/>
-          <y:BorderStyle color="#0000FF" type="line" width="1.0"/>
-          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" modelName="internal" modelPosition="l" textColor="#000000" visible="true" width="54.2265625" x="4.0" y="5.93359375">DataSize</y:NodeLabel>
+        <y:GenericNode configuration="ShinyPlateNodeWithShadow">
+          <y:Geometry height="30.0" width="27.0" x="-172.5" y="-322.4705736842104"/>
+          <y:Fill color="#FFFF99" transparent="false"/>
+          <y:BorderStyle color="#C0C0C0" type="line" width="1.0"/>
+          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" modelName="custom" textColor="#000000" visible="true" width="7.796875" x="9.6015625" y="5.93359375">
+<y:LabelModel>
+              <y:SmartNodeLabelModel distance="4.0"/>
+            </y:LabelModel>
+            <y:ModelParameter>
+              <y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
+            </y:ModelParameter>
+          </y:NodeLabel>
         </y:GenericNode>
       </data>
     </node>
     <node id="n156">
       <data key="d6">
         <y:GenericNode configuration="ShinyPlateNodeWithShadow">
-          <y:Geometry height="30.0" width="27.0" x="125.5" y="498.90066666666667"/>
+          <y:Geometry height="30.0" width="27.0" x="-145.5" y="-322.4705736842104"/>
           <y:Fill color="#FFFF99" transparent="false"/>
           <y:BorderStyle color="#C0C0C0" type="line" width="1.0"/>
           <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" modelName="custom" textColor="#000000" visible="true" width="7.796875" x="9.6015625" y="5.93359375">
     <node id="n157">
       <data key="d6">
         <y:GenericNode configuration="ShinyPlateNodeWithShadow">
-          <y:Geometry height="30.0" width="27.0" x="152.5" y="498.90066666666667"/>
+          <y:Geometry height="30.0" width="27.0" x="-118.5" y="-322.4705736842104"/>
           <y:Fill color="#FFFF99" transparent="false"/>
           <y:BorderStyle color="#C0C0C0" type="line" width="1.0"/>
           <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" modelName="custom" textColor="#000000" visible="true" width="7.796875" x="9.6015625" y="5.93359375">
     <node id="n158">
       <data key="d6">
         <y:GenericNode configuration="ShinyPlateNodeWithShadow">
-          <y:Geometry height="30.0" width="27.0" x="179.5" y="498.90066666666667"/>
+          <y:Geometry height="30.0" width="27.0" x="-91.5" y="-322.4705736842104"/>
           <y:Fill color="#FFFF99" transparent="false"/>
           <y:BorderStyle color="#C0C0C0" type="line" width="1.0"/>
           <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" modelName="custom" textColor="#000000" visible="true" width="7.796875" x="9.6015625" y="5.93359375">
     <node id="n159">
       <data key="d6">
         <y:GenericNode configuration="ShinyPlateNodeWithShadow">
-          <y:Geometry height="30.0" width="27.0" x="206.5" y="498.90066666666667"/>
+          <y:Geometry height="30.0" width="27.0" x="-64.5" y="-322.4705736842104"/>
+          <y:Fill color="#FFFF99" transparent="false"/>
+          <y:BorderStyle color="#C0C0C0" type="line" width="1.0"/>
+          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" hasText="false" height="4.0" modelName="free" modelPosition="anywhere" textColor="#000000" visible="true" width="4.0" x="-184.7802734375" y="5.93359375"/>
+        </y:GenericNode>
+      </data>
+    </node>
+    <node id="n160">
+      <data key="d6">
+        <y:GenericNode configuration="ShinyPlateNode">
+          <y:Geometry height="30.0" width="108.0" x="-253.5" y="-394.4705736842104"/>
+          <y:Fill hasColor="false" transparent="false"/>
+          <y:BorderStyle color="#0000FF" type="line" width="1.0"/>
+          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" modelName="internal" modelPosition="l" textColor="#000000" visible="true" width="46.287109375" x="4.0" y="5.93359375">NbTree</y:NodeLabel>
+        </y:GenericNode>
+      </data>
+    </node>
+    <node id="n161">
+      <data key="d6">
+        <y:GenericNode configuration="ShinyPlateNode">
+          <y:Geometry height="30.0" width="108.0" x="-253.5" y="-430.4705736842104"/>
+          <y:Fill hasColor="false" transparent="false"/>
+          <y:BorderStyle color="#0000FF" type="line" width="1.0"/>
+          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" modelName="internal" modelPosition="l" textColor="#000000" visible="true" width="54.923828125" x="4.0" y="5.93359375">PageSize</y:NodeLabel>
+        </y:GenericNode>
+      </data>
+    </node>
+    <node id="n162">
+      <data key="d6">
+        <y:GenericNode configuration="ShinyPlateNode">
+          <y:Geometry height="30.0" width="216.0" x="-253.5" y="-358.4705736842104"/>
+          <y:Fill hasColor="false" transparent="false"/>
+          <y:BorderStyle color="#0000FF" type="line" width="1.0"/>
+          <y:NodeLabel alignment="left" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" modelName="internal" modelPosition="l" textColor="#000000" visible="true" width="81.560546875" x="4.0" y="5.93359375">FirstFreePage</y:NodeLabel>
+        </y:GenericNode>
+      </data>
+    </node>
+    <node id="n163">
+      <data key="d6">
+        <y:GenericNode configuration="ShinyPlateNode">
+          <y:Geometry height="30.0" width="216.0" x="-253.5" y="-322.4705736842104"/>
+          <y:Fill hasColor="false" transparent="false"/>
+          <y:BorderStyle color="#0000FF" type="line" width="1.0"/>
+          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" modelName="internal" modelPosition="l" textColor="#000000" visible="true" width="187.99609375" x="4.0" y="5.93359375">Current B-tree of B-trees offset</y:NodeLabel>
+        </y:GenericNode>
+      </data>
+    </node>
+    <node id="n164">
+      <data key="d6">
+        <y:GenericNode configuration="ShinyPlateNodeWithShadow">
+          <y:Geometry height="30.0" width="27.0" x="-253.5" y="-285.9705736842104"/>
           <y:Fill color="#FFFF99" transparent="false"/>
           <y:BorderStyle color="#C0C0C0" type="line" width="1.0"/>
           <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" modelName="custom" textColor="#000000" visible="true" width="7.796875" x="9.6015625" y="5.93359375">
         </y:GenericNode>
       </data>
     </node>
-    <node id="n160">
+    <node id="n165">
       <data key="d6">
-        <y:GenericNode configuration="ShinyPlateNode">
-          <y:Geometry height="30.0" width="108.0" x="125.5" y="498.90066666666667"/>
-          <y:Fill hasColor="false" transparent="false"/>
-          <y:BorderStyle color="#0000FF" type="line" width="1.0"/>
-          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" modelName="internal" modelPosition="l" textColor="#000000" visible="true" width="54.2265625" x="4.0" y="5.93359375">DataSize</y:NodeLabel>
-        </y:GenericNode>
-      </data>
-    </node>
+        <y:GenericNode configuration="ShinyPlateNodeWithShadow">
+          <y:Geometry height="30.0" width="27.0" x="-226.5" y="-285.9705736842104"/>
+          <y:Fill color="#FFFF99" transparent="false"/>
+          <y:BorderStyle color="#C0C0C0" type="line" width="1.0"/>
+          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" modelName="custom" textColor="#000000" visible="true" width="7.796875" x="9.6015625" y="5.93359375">
+<y:LabelModel>
+              <y:SmartNodeLabelModel distance="4.0"/>
+            </y:LabelModel>
+            <y:ModelParameter>
+              <y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
+            </y:ModelParameter>
+          </y:NodeLabel>
+        </y:GenericNode>
+      </data>
+    </node>
+    <node id="n166">
+      <data key="d6">
+        <y:GenericNode configuration="ShinyPlateNodeWithShadow">
+          <y:Geometry height="30.0" width="27.0" x="-199.5" y="-285.9705736842104"/>
+          <y:Fill color="#FFFF99" transparent="false"/>
+          <y:BorderStyle color="#C0C0C0" type="line" width="1.0"/>
+          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" modelName="custom" textColor="#000000" visible="true" width="7.796875" x="9.6015625" y="5.93359375">
+<y:LabelModel>
+              <y:SmartNodeLabelModel distance="4.0"/>
+            </y:LabelModel>
+            <y:ModelParameter>
+              <y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
+            </y:ModelParameter>
+          </y:NodeLabel>
+        </y:GenericNode>
+      </data>
+    </node>
+    <node id="n167">
+      <data key="d6">
+        <y:GenericNode configuration="ShinyPlateNodeWithShadow">
+          <y:Geometry height="30.0" width="27.0" x="-172.5" y="-285.9705736842104"/>
+          <y:Fill color="#FFFF99" transparent="false"/>
+          <y:BorderStyle color="#C0C0C0" type="line" width="1.0"/>
+          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" modelName="custom" textColor="#000000" visible="true" width="7.796875" x="9.6015625" y="5.93359375">
+<y:LabelModel>
+              <y:SmartNodeLabelModel distance="4.0"/>
+            </y:LabelModel>
+            <y:ModelParameter>
+              <y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
+            </y:ModelParameter>
+          </y:NodeLabel>
+        </y:GenericNode>
+      </data>
+    </node>
+    <node id="n168">
+      <data key="d6">
+        <y:GenericNode configuration="ShinyPlateNodeWithShadow">
+          <y:Geometry height="30.0" width="27.0" x="-145.5" y="-285.9705736842104"/>
+          <y:Fill color="#FFFF99" transparent="false"/>
+          <y:BorderStyle color="#C0C0C0" type="line" width="1.0"/>
+          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" modelName="custom" textColor="#000000" visible="true" width="7.796875" x="9.6015625" y="5.93359375">
+<y:LabelModel>
+              <y:SmartNodeLabelModel distance="4.0"/>
+            </y:LabelModel>
+            <y:ModelParameter>
+              <y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
+            </y:ModelParameter>
+          </y:NodeLabel>
+        </y:GenericNode>
+      </data>
+    </node>
+    <node id="n169">
+      <data key="d6">
+        <y:GenericNode configuration="ShinyPlateNodeWithShadow">
+          <y:Geometry height="30.0" width="27.0" x="-118.5" y="-285.9705736842104"/>
+          <y:Fill color="#FFFF99" transparent="false"/>
+          <y:BorderStyle color="#C0C0C0" type="line" width="1.0"/>
+          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" modelName="custom" textColor="#000000" visible="true" width="7.796875" x="9.6015625" y="5.93359375">
+<y:LabelModel>
+              <y:SmartNodeLabelModel distance="4.0"/>
+            </y:LabelModel>
+            <y:ModelParameter>
+              <y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
+            </y:ModelParameter>
+          </y:NodeLabel>
+        </y:GenericNode>
+      </data>
+    </node>
+    <node id="n170">
+      <data key="d6">
+        <y:GenericNode configuration="ShinyPlateNodeWithShadow">
+          <y:Geometry height="30.0" width="27.0" x="-91.5" y="-285.9705736842104"/>
+          <y:Fill color="#FFFF99" transparent="false"/>
+          <y:BorderStyle color="#C0C0C0" type="line" width="1.0"/>
+          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" modelName="custom" textColor="#000000" visible="true" width="7.796875" x="9.6015625" y="5.93359375">
+<y:LabelModel>
+              <y:SmartNodeLabelModel distance="4.0"/>
+            </y:LabelModel>
+            <y:ModelParameter>
+              <y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
+            </y:ModelParameter>
+          </y:NodeLabel>
+        </y:GenericNode>
+      </data>
+    </node>
+    <node id="n171">
+      <data key="d6">
+        <y:GenericNode configuration="ShinyPlateNodeWithShadow">
+          <y:Geometry height="30.0" width="27.0" x="-64.5" y="-285.9705736842104"/>
+          <y:Fill color="#FFFF99" transparent="false"/>
+          <y:BorderStyle color="#C0C0C0" type="line" width="1.0"/>
+          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" hasText="false" height="4.0" modelName="free" modelPosition="anywhere" textColor="#000000" visible="true" width="4.0" x="-184.7802734375" y="5.93359375"/>
+        </y:GenericNode>
+      </data>
+    </node>
+    <node id="n172">
+      <data key="d6">
+        <y:GenericNode configuration="ShinyPlateNodeWithShadow">
+          <y:Geometry height="30.0" width="27.0" x="-253.5" y="-249.47057368421042"/>
+          <y:Fill color="#FFFF99" transparent="false"/>
+          <y:BorderStyle color="#C0C0C0" type="line" width="1.0"/>
+          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" modelName="custom" textColor="#000000" visible="true" width="7.796875" x="9.6015625" y="5.93359375">
+<y:LabelModel>
+              <y:SmartNodeLabelModel distance="4.0"/>
+            </y:LabelModel>
+            <y:ModelParameter>
+              <y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
+            </y:ModelParameter>
+          </y:NodeLabel>
+        </y:GenericNode>
+      </data>
+    </node>
+    <node id="n173">
+      <data key="d6">
+        <y:GenericNode configuration="ShinyPlateNodeWithShadow">
+          <y:Geometry height="30.0" width="27.0" x="-226.5" y="-249.47057368421042"/>
+          <y:Fill color="#FFFF99" transparent="false"/>
+          <y:BorderStyle color="#C0C0C0" type="line" width="1.0"/>
+          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" modelName="custom" textColor="#000000" visible="true" width="7.796875" x="9.6015625" y="5.93359375">
+<y:LabelModel>
+              <y:SmartNodeLabelModel distance="4.0"/>
+            </y:LabelModel>
+            <y:ModelParameter>
+              <y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
+            </y:ModelParameter>
+          </y:NodeLabel>
+        </y:GenericNode>
+      </data>
+    </node>
+    <node id="n174">
+      <data key="d6">
+        <y:GenericNode configuration="ShinyPlateNodeWithShadow">
+          <y:Geometry height="30.0" width="27.0" x="-199.5" y="-249.47057368421042"/>
+          <y:Fill color="#FFFF99" transparent="false"/>
+          <y:BorderStyle color="#C0C0C0" type="line" width="1.0"/>
+          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" modelName="custom" textColor="#000000" visible="true" width="7.796875" x="9.6015625" y="5.93359375">
+<y:LabelModel>
+              <y:SmartNodeLabelModel distance="4.0"/>
+            </y:LabelModel>
+            <y:ModelParameter>
+              <y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
+            </y:ModelParameter>
+          </y:NodeLabel>
+        </y:GenericNode>
+      </data>
+    </node>
+    <node id="n175">
+      <data key="d6">
+        <y:GenericNode configuration="ShinyPlateNodeWithShadow">
+          <y:Geometry height="30.0" width="27.0" x="-172.5" y="-249.47057368421042"/>
+          <y:Fill color="#FFFF99" transparent="false"/>
+          <y:BorderStyle color="#C0C0C0" type="line" width="1.0"/>
+          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" modelName="custom" textColor="#000000" visible="true" width="7.796875" x="9.6015625" y="5.93359375">
+<y:LabelModel>
+              <y:SmartNodeLabelModel distance="4.0"/>
+            </y:LabelModel>
+            <y:ModelParameter>
+              <y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
+            </y:ModelParameter>
+          </y:NodeLabel>
+        </y:GenericNode>
+      </data>
+    </node>
+    <node id="n176">
+      <data key="d6">
+        <y:GenericNode configuration="ShinyPlateNodeWithShadow">
+          <y:Geometry height="30.0" width="27.0" x="-145.5" y="-249.47057368421042"/>
+          <y:Fill color="#FFFF99" transparent="false"/>
+          <y:BorderStyle color="#C0C0C0" type="line" width="1.0"/>
+          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" modelName="custom" textColor="#000000" visible="true" width="7.796875" x="9.6015625" y="5.93359375">
+<y:LabelModel>
+              <y:SmartNodeLabelModel distance="4.0"/>
+            </y:LabelModel>
+            <y:ModelParameter>
+              <y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
+            </y:ModelParameter>
+          </y:NodeLabel>
+        </y:GenericNode>
+      </data>
+    </node>
+    <node id="n177">
+      <data key="d6">
+        <y:GenericNode configuration="ShinyPlateNodeWithShadow">
+          <y:Geometry height="30.0" width="27.0" x="-118.5" y="-249.47057368421042"/>
+          <y:Fill color="#FFFF99" transparent="false"/>
+          <y:BorderStyle color="#C0C0C0" type="line" width="1.0"/>
+          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" modelName="custom" textColor="#000000" visible="true" width="7.796875" x="9.6015625" y="5.93359375">
+<y:LabelModel>
+              <y:SmartNodeLabelModel distance="4.0"/>
+            </y:LabelModel>
+            <y:ModelParameter>
+              <y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
+            </y:ModelParameter>
+          </y:NodeLabel>
+        </y:GenericNode>
+      </data>
+    </node>
+    <node id="n178">
+      <data key="d6">
+        <y:GenericNode configuration="ShinyPlateNodeWithShadow">
+          <y:Geometry height="30.0" width="27.0" x="-91.5" y="-249.47057368421042"/>
+          <y:Fill color="#FFFF99" transparent="false"/>
+          <y:BorderStyle color="#C0C0C0" type="line" width="1.0"/>
+          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" modelName="custom" textColor="#000000" visible="true" width="7.796875" x="9.6015625" y="5.93359375">
+<y:LabelModel>
+              <y:SmartNodeLabelModel distance="4.0"/>
+            </y:LabelModel>
+            <y:ModelParameter>
+              <y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
+            </y:ModelParameter>
+          </y:NodeLabel>
+        </y:GenericNode>
+      </data>
+    </node>
+    <node id="n179">
+      <data key="d6">
+        <y:GenericNode configuration="ShinyPlateNodeWithShadow">
+          <y:Geometry height="30.0" width="27.0" x="-64.5" y="-249.47057368421042"/>
+          <y:Fill color="#FFFF99" transparent="false"/>
+          <y:BorderStyle color="#C0C0C0" type="line" width="1.0"/>
+          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" hasText="false" height="4.0" modelName="free" modelPosition="anywhere" textColor="#000000" visible="true" width="4.0" x="-184.7802734375" y="5.93359375"/>
+        </y:GenericNode>
+      </data>
+    </node>
+    <node id="n180">
+      <data key="d6">
+        <y:GenericNode configuration="ShinyPlateNodeWithShadow">
+          <y:Geometry height="30.0" width="27.0" x="-253.5" y="-212.97057368421042"/>
+          <y:Fill color="#FFFF99" transparent="false"/>
+          <y:BorderStyle color="#C0C0C0" type="line" width="1.0"/>
+          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" modelName="custom" textColor="#000000" visible="true" width="7.796875" x="9.6015625" y="5.93359375">
+<y:LabelModel>
+              <y:SmartNodeLabelModel distance="4.0"/>
+            </y:LabelModel>
+            <y:ModelParameter>
+              <y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
+            </y:ModelParameter>
+          </y:NodeLabel>
+        </y:GenericNode>
+      </data>
+    </node>
+    <node id="n181">
+      <data key="d6">
+        <y:GenericNode configuration="ShinyPlateNodeWithShadow">
+          <y:Geometry height="30.0" width="27.0" x="-226.5" y="-212.97057368421042"/>
+          <y:Fill color="#FFFF99" transparent="false"/>
+          <y:BorderStyle color="#C0C0C0" type="line" width="1.0"/>
+          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" modelName="custom" textColor="#000000" visible="true" width="7.796875" x="9.6015625" y="5.93359375">
+<y:LabelModel>
+              <y:SmartNodeLabelModel distance="4.0"/>
+            </y:LabelModel>
+            <y:ModelParameter>
+              <y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
+            </y:ModelParameter>
+          </y:NodeLabel>
+        </y:GenericNode>
+      </data>
+    </node>
+    <node id="n182">
+      <data key="d6">
+        <y:GenericNode configuration="ShinyPlateNodeWithShadow">
+          <y:Geometry height="30.0" width="27.0" x="-199.5" y="-212.97057368421042"/>
+          <y:Fill color="#FFFF99" transparent="false"/>
+          <y:BorderStyle color="#C0C0C0" type="line" width="1.0"/>
+          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" modelName="custom" textColor="#000000" visible="true" width="7.796875" x="9.6015625" y="5.93359375">
+<y:LabelModel>
+              <y:SmartNodeLabelModel distance="4.0"/>
+            </y:LabelModel>
+            <y:ModelParameter>
+              <y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
+            </y:ModelParameter>
+          </y:NodeLabel>
+        </y:GenericNode>
+      </data>
+    </node>
+    <node id="n183">
+      <data key="d6">
+        <y:GenericNode configuration="ShinyPlateNodeWithShadow">
+          <y:Geometry height="30.0" width="27.0" x="-172.5" y="-212.97057368421042"/>
+          <y:Fill color="#FFFF99" transparent="false"/>
+          <y:BorderStyle color="#C0C0C0" type="line" width="1.0"/>
+          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" modelName="custom" textColor="#000000" visible="true" width="7.796875" x="9.6015625" y="5.93359375">
+<y:LabelModel>
+              <y:SmartNodeLabelModel distance="4.0"/>
+            </y:LabelModel>
+            <y:ModelParameter>
+              <y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
+            </y:ModelParameter>
+          </y:NodeLabel>
+        </y:GenericNode>
+      </data>
+    </node>
+    <node id="n184">
+      <data key="d6">
+        <y:GenericNode configuration="ShinyPlateNodeWithShadow">
+          <y:Geometry height="30.0" width="27.0" x="-145.5" y="-212.97057368421042"/>
+          <y:Fill color="#FFFF99" transparent="false"/>
+          <y:BorderStyle color="#C0C0C0" type="line" width="1.0"/>
+          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" modelName="custom" textColor="#000000" visible="true" width="7.796875" x="9.6015625" y="5.93359375">
+<y:LabelModel>
+              <y:SmartNodeLabelModel distance="4.0"/>
+            </y:LabelModel>
+            <y:ModelParameter>
+              <y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
+            </y:ModelParameter>
+          </y:NodeLabel>
+        </y:GenericNode>
+      </data>
+    </node>
+    <node id="n185">
+      <data key="d6">
+        <y:GenericNode configuration="ShinyPlateNodeWithShadow">
+          <y:Geometry height="30.0" width="27.0" x="-118.5" y="-212.97057368421042"/>
+          <y:Fill color="#FFFF99" transparent="false"/>
+          <y:BorderStyle color="#C0C0C0" type="line" width="1.0"/>
+          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" modelName="custom" textColor="#000000" visible="true" width="7.796875" x="9.6015625" y="5.93359375">
+<y:LabelModel>
+              <y:SmartNodeLabelModel distance="4.0"/>
+            </y:LabelModel>
+            <y:ModelParameter>
+              <y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
+            </y:ModelParameter>
+          </y:NodeLabel>
+        </y:GenericNode>
+      </data>
+    </node>
+    <node id="n186">
+      <data key="d6">
+        <y:GenericNode configuration="ShinyPlateNodeWithShadow">
+          <y:Geometry height="30.0" width="27.0" x="-91.5" y="-212.97057368421042"/>
+          <y:Fill color="#FFFF99" transparent="false"/>
+          <y:BorderStyle color="#C0C0C0" type="line" width="1.0"/>
+          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" modelName="custom" textColor="#000000" visible="true" width="7.796875" x="9.6015625" y="5.93359375">
+<y:LabelModel>
+              <y:SmartNodeLabelModel distance="4.0"/>
+            </y:LabelModel>
+            <y:ModelParameter>
+              <y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
+            </y:ModelParameter>
+          </y:NodeLabel>
+        </y:GenericNode>
+      </data>
+    </node>
+    <node id="n187">
+      <data key="d6">
+        <y:GenericNode configuration="ShinyPlateNodeWithShadow">
+          <y:Geometry height="30.0" width="27.0" x="-64.5" y="-212.97057368421042"/>
+          <y:Fill color="#FFFF99" transparent="false"/>
+          <y:BorderStyle color="#C0C0C0" type="line" width="1.0"/>
+          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" hasText="false" height="4.0" modelName="free" modelPosition="anywhere" textColor="#000000" visible="true" width="4.0" x="-184.7802734375" y="5.93359375"/>
+        </y:GenericNode>
+      </data>
+    </node>
+    <node id="n188">
+      <data key="d6">
+        <y:GenericNode configuration="ShinyPlateNode">
+          <y:Geometry height="30.0" width="216.0" x="-253.0" y="-285.9705736842104"/>
+          <y:Fill hasColor="false" transparent="false"/>
+          <y:BorderStyle color="#0000FF" type="line" width="1.0"/>
+          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" modelName="internal" modelPosition="l" textColor="#000000" visible="true" width="192.6484375" x="4.0" y="5.93359375">Previous B-tree of B-trees offset</y:NodeLabel>
+        </y:GenericNode>
+      </data>
+    </node>
+    <node id="n189">
+      <data key="d6">
+        <y:GenericNode configuration="ShinyPlateNode">
+          <y:Geometry height="30.0" width="216.0" x="-253.0" y="-249.47057368421042"/>
+          <y:Fill hasColor="false" transparent="false"/>
+          <y:BorderStyle color="#0000FF" type="line" width="1.0"/>
+          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" modelName="internal" modelPosition="l" textColor="#000000" visible="true" width="207.958984375" x="4.0" y="5.93359375">Current Copied Pages B-tree offset</y:NodeLabel>
+        </y:GenericNode>
+      </data>
+    </node>
+    <node id="n190">
+      <data key="d6">
+        <y:GenericNode configuration="ShinyPlateNode">
+          <y:Geometry height="30.0" width="216.0" x="-253.5" y="-212.97057368421042"/>
+          <y:Fill hasColor="false" transparent="false"/>
+          <y:BorderStyle color="#0000FF" type="line" width="1.0"/>
+          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" modelName="internal" modelPosition="l" textColor="#000000" visible="true" width="207.958984375" x="4.0" y="5.93359375">Current Copied Pages B-tree offset</y:NodeLabel>
+        </y:GenericNode>
+      </data>
+    </node>
+    <edge id="e0" source="n134" target="n97">
+      <data key="d10">
+        <y:PolyLineEdge>
+          <y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0">
+            <y:Point x="20.5" y="-18.97057368421042"/>
+            <y:Point x="20.5" y="133.5678263157896"/>
+          </y:Path>
+          <y:LineStyle color="#000000" type="line" width="1.0"/>
+          <y:Arrows source="none" target="standard"/>
+          <y:BendStyle smoothed="false"/>
+        </y:PolyLineEdge>
+      </data>
+    </edge>
   </graph>
   <data key="d0">
     <y:Resources/>
index b6b0e69..5f95eda 100644 (file)
@@ -1095,11 +1095,6 @@ import org.apache.directory.mavibot.btree.serializer.ElementSerializer;
 
                         long t1 = System.currentTimeMillis();
 
-                        if ( nbTxns > 0 )
-                        {
-                            System.out.println( "Processing old txn : " + nbTxns + ", " + ( t1 - t0 ) + "ms" );
-                        }
-
                         // Wait until we reach the timeout
                         Thread.sleep( readTimeOut );
                     }
index 774cefa..3163ff1 100644 (file)
@@ -138,11 +138,6 @@ import org.apache.directory.mavibot.btree.exception.KeyNotFoundException;
         {
             Page<K, V> page = children[pos].getValue();
 
-            if ( page == null )
-            {
-                System.out.println( "Page is null for pos = " + pos + ", children = " + children[pos] );
-            }
-
             return page.hasKey( key );
         }
     }
@@ -319,6 +314,17 @@ import org.apache.directory.mavibot.btree.exception.KeyNotFoundException;
 
 
     /**
+     * Sets the value at a give position
+     * @param pos The position in the values array
+     * @param value the value to inject
+     */
+    /* no qualifier */void setValue( int pos, ValueHolder<V> value )
+    {
+        // Implementation in the leaves
+    }
+
+
+    /**
      * {@inheritDoc}
      */
     public TupleCursor<K, V> browse( ReadTransaction<K, V> transaction, ParentPos<K, V>[] stack, int depth )
index 3038fbc..a22b7ba 100644 (file)
@@ -23,6 +23,7 @@ package org.apache.directory.mavibot.btree;
 import java.io.IOException;
 import java.lang.reflect.Array;
 import java.util.Comparator;
+import java.util.Iterator;
 
 import org.apache.directory.mavibot.btree.exception.KeyNotFoundException;
 import org.apache.directory.mavibot.btree.serializer.ElementSerializer;
@@ -247,7 +248,8 @@ import org.apache.directory.mavibot.btree.serializer.ElementSerializer;
         }
         catch ( KeyNotFoundException knfe )
         {
-            knfe.printStackTrace();return false;
+            knfe.printStackTrace();
+            return false;
         }
     }
 
@@ -275,9 +277,15 @@ import org.apache.directory.mavibot.btree.serializer.ElementSerializer;
 
 
     /**
+     * Manage a new Sub-BTree .
+     */
+    protected abstract void manageSubTree();
+
+
+    /**
      * Add the value in an array
      */
-    private void addInArray( V value )
+    private void addInArray( final V value )
     {
         // We have to check that we have reached the threshold or not
         if ( size() >= valueThresholdUp )
@@ -285,27 +293,61 @@ import org.apache.directory.mavibot.btree.serializer.ElementSerializer;
             // Ok, transform the array into a btree
             createSubTree();
 
-            try
+            Iterator<Tuple<V, V>> valueIterator = new Iterator<Tuple<V, V>>()
             {
-                for ( V val : valueArray )
+                int pos = 0;
+
+
+                @Override
+                public Tuple<V, V> next()
+                {
+                    // We can now return the found value
+                    if ( pos == valueArray.length )
+                    {
+                        // Special case : deal with the added value
+                        pos++;
+
+                        return new Tuple<V, V>( value, value );
+                    }
+                    else
+                    {
+                        V oldValue = valueArray[pos];
+                        pos++;
+
+                        return new Tuple<V, V>( oldValue, oldValue );
+                    }
+                }
+
+
+                @Override
+                public boolean hasNext()
+                {
+                    // Check that we have at least one element to read
+                    return pos < valueArray.length + 1;
+                }
+
+
+                @Override
+                public void remove()
                 {
-                    // Here, we should insert all the values in one shot then 
-                    // write the btree on disk only once.
-                    valueBtree.insert( val, null );
                 }
 
-                // We can delete the array now
-                nbArrayElems = 0;
-                valueArray = null;
+            };
 
-                // And inject the new value
-                valueBtree.insert( value, null );
+            try
+            {
+                BulkLoader.load( valueBtree, valueIterator, valueArray.length );
             }
             catch ( IOException e )
             {
                 // TODO Auto-generated catch block
                 e.printStackTrace();
             }
+
+            manageSubTree();
+
+            // And make the valueArray to be null now
+            valueArray = null;
         }
         else
         {
@@ -375,24 +417,24 @@ import org.apache.directory.mavibot.btree.serializer.ElementSerializer;
             addInBtree( value );
         }
     }
-    
-    
+
+
     /**
      * {@inheritDoc}
      */
     @Override
     public V replaceValueArray( V newValue )
     {
-        if( isSubBtree() )
+        if ( isSubBtree() )
         {
             throw new IllegalStateException( "method is not applicable for the duplicate B-Trees" );
         }
-        
+
         V tmp = valueArray[0];
-        
+
         nbArrayElems = 1;
         valueArray[0] = newValue;
-        
+
         return tmp;
     }
 
index 0ddeed4..9a2206c 100644 (file)
@@ -59,7 +59,7 @@ import java.util.concurrent.atomic.AtomicInteger;
     private long rootPageOffset;
 
     /** The position of the B-tree header in the file */
-    private long btreeHeaderOffset;
+    private long btreeHeaderOffset = RecordManager.NO_PAGE;
 
     // Those are data which aren't serialized : they are in memory only */
     /** A Map containing the rootPage for this tree */
index b037a08..5782a56 100644 (file)
@@ -65,6 +65,27 @@ public class BulkLoader<K, V>
         NODE
     }
 
+    /**
+     * A private class used to store the temporary sorted file. It's used by
+     * the bulkLoader
+     */
+    private static class SortedFile
+    {
+        /** the file that contains the values */
+        private File file;
+
+        /** The number of stored values */
+        private int nbValues;
+
+
+        /** A constructor for this class */
+        /*No Qualifier*/SortedFile( File file, int nbValues )
+        {
+            this.file = file;
+            this.nbValues = nbValues;
+        }
+    }
+
 
     /**
      * Process the data, and creates files to store them sorted if necessary, or store them
@@ -163,7 +184,7 @@ public class BulkLoader<K, V>
      * sorted and merged elements.
      * @throws IOException 
      */
-    private static <K, V> Tuple<Iterator<Tuple<K, Set<V>>>, Integer> processFiles( BTree<K, V> btree,
+    private static <K, V> Tuple<Iterator<Tuple<K, Set<V>>>, SortedFile> processFiles( BTree<K, V> btree,
         Iterator<Tuple<K, Set<V>>> dataIterator ) throws IOException
     {
         File file = File.createTempFile( "sortedUnique", "data" );
@@ -206,9 +227,10 @@ public class BulkLoader<K, V>
 
         FileInputStream fis = new FileInputStream( file );
         Iterator<Tuple<K, Set<V>>> uniqueIterator = createUniqueFileIterator( btree, fis );
+        SortedFile sortedFile = new SortedFile( file, nbReads );
 
-        Tuple<Iterator<Tuple<K, Set<V>>>, Integer> result = new Tuple<Iterator<Tuple<K, Set<V>>>, Integer>(
-            uniqueIterator, nbReads );
+        Tuple<Iterator<Tuple<K, Set<V>>>, SortedFile> result = new Tuple<Iterator<Tuple<K, Set<V>>>, SortedFile>(
+            uniqueIterator, sortedFile );
 
         return result;
     }
@@ -222,7 +244,7 @@ public class BulkLoader<K, V>
      * @param chunkSize The number of elements we may store in memory at each iteration
      * @throws IOException If there is a problem while processing the data
      */
-    public static <K, V> BTree<K, V> load( PersistedBTree<K, V> btree, Iterator<Tuple<K, V>> iterator, int chunkSize )
+    public static <K, V> BTree<K, V> load( BTree<K, V> btree, Iterator<Tuple<K, V>> iterator, int chunkSize )
         throws IOException
     {
         if ( btree == null )
@@ -281,8 +303,9 @@ public class BulkLoader<K, V>
             dataIterator = createIterator( btree, streams );
 
             // Process the files, and construct one single file with an iterator
-            Tuple<Iterator<Tuple<K, Set<V>>>, Integer> result = processFiles( btree, dataIterator );
-            resultBTree = bulkLoad( btree, result.key, result.value );
+            Tuple<Iterator<Tuple<K, Set<V>>>, SortedFile> result = processFiles( btree, dataIterator );
+            resultBTree = bulkLoad( btree, result.key, result.value.nbValues );
+            result.value.file.delete();
         }
 
         // Ok, we have an iterator over sorted elements, we can now load them in the 
@@ -444,14 +467,18 @@ public class BulkLoader<K, V>
     /**
      * Inject a tuple into a leaf
      */
-    private static <K, V> void injectInLeaf( BTree<K, V> btree, Tuple<K, Set<V>> tuple, LevelInfo leafLevel )
+    private static <K, V> void injectInLeaf( BTree<K, V> btree, Tuple<K, Set<V>> tuple, LevelInfo<K, V> leafLevel )
     {
         PersistedLeaf<K, V> leaf = ( PersistedLeaf<K, V> ) leafLevel.getCurrentPage();
 
         KeyHolder<K> keyHolder = new PersistedKeyHolder<K>( btree.getKeySerializer(), tuple.getKey() );
-        ValueHolder<V> valueHolder = new PersistedValueHolder<V>( btree, ( V[] ) tuple.getValue().toArray() );
         leaf.setKey( leafLevel.getCurrentPos(), keyHolder );
-        leaf.setValue( leafLevel.getCurrentPos(), valueHolder );
+
+        if ( btree.getType() != BTreeTypeEnum.PERSISTED_SUB )
+        {
+            ValueHolder<V> valueHolder = new PersistedValueHolder<V>( btree, ( V[] ) tuple.getValue().toArray() );
+            leaf.setValue( leafLevel.getCurrentPos(), valueHolder );
+        }
 
         leafLevel.incCurrentPos();
     }
@@ -515,8 +542,8 @@ public class BulkLoader<K, V>
         LevelInfo<K, V> level ) throws IOException
     {
         PersistedNode<K, V> node = ( PersistedNode<K, V> ) level.getCurrentPage();
-        if ( ( level.getCurrentPos() == 0 ) && ( node.getPage( 0 ) == null ) )
 
+        if ( ( level.getCurrentPos() == 0 ) && ( node.getPage( 0 ) == null ) )
         {
             node.setPageHolder( 0, pageHolder );
             level.incNbAddedElems();
@@ -759,8 +786,23 @@ public class BulkLoader<K, V>
     private static <K, V> BTree<K, V> bulkLoadSinglePage( BTree<K, V> btree, Iterator<Tuple<K, Set<V>>> dataIterator,
         int nbElems ) throws IOException
     {
-        // Create a new page
-        PersistedLeaf<K, V> rootPage = ( PersistedLeaf<K, V> ) BTreeFactory.createLeaf( btree, 0L, nbElems );
+        // Use the root page
+        Page<K, V> rootPage = btree.getRootPage();
+
+        // Initialize the root page
+        ( ( AbstractPage<K, V> ) rootPage ).setNbElems( nbElems );
+        KeyHolder<K>[] keys = new KeyHolder[nbElems];
+        ValueHolder<V>[] values = new ValueHolder[nbElems];
+
+        switch ( btree.getType() )
+        {
+            case IN_MEMORY:
+                ( ( InMemoryLeaf<K, V> ) rootPage ).values = values;
+                break;
+
+            default:
+                ( ( PersistedLeaf<K, V> ) rootPage ).values = values;
+        }
 
         // We first have to inject data into the page
         int pos = 0;
@@ -771,18 +813,31 @@ public class BulkLoader<K, V>
 
             // Store the current element in the rootPage
             KeyHolder<K> keyHolder = new PersistedKeyHolder<K>( btree.getKeySerializer(), tuple.getKey() );
-            ValueHolder<V> valueHolder = new PersistedValueHolder<V>( btree, ( V[] ) tuple.getValue().toArray() );
-            rootPage.setKey( pos, keyHolder );
-            rootPage.setValue( pos, valueHolder );
+            keys[pos] = keyHolder;
+
+            switch ( btree.getType() )
+            {
+                case IN_MEMORY:
+                    ValueHolder<V> valueHolder = new InMemoryValueHolder<V>( btree, ( V[] ) tuple.getValue()
+                        .toArray() );
+                    ( ( InMemoryLeaf<K, V> ) rootPage ).values[pos] = valueHolder;
+                    break;
+
+                default:
+                    valueHolder = new PersistedValueHolder<V>( btree, ( V[] ) tuple.getValue()
+                        .toArray() );
+                    ( ( PersistedLeaf<K, V> ) rootPage ).values[pos] = valueHolder;
+            }
+
             pos++;
         }
 
-        // Now write the page on disk
-        ( ( PersistedBTree<K, V> ) btree ).getRecordManager().writePage( btree, rootPage, 0L );
+        // Update the rootPage
+        ( ( AbstractPage<K, V> ) rootPage ).setKeys( keys );
 
-        // Update the btree with the rootPage and the nb of added elements
-        ( ( PersistedBTree<K, V> ) btree ).getBtreeHeader().setRootPage( rootPage );
-        ( ( PersistedBTree<K, V> ) btree ).getBtreeHeader().setNbElems( nbElems );
+        // Update the btree with the nb of added elements, and write it$
+        BTreeHeader<K, V> btreeHeader = ( ( AbstractBTree<K, V> ) btree ).getBtreeHeader();
+        btreeHeader.setNbElems( nbElems );
 
         return btree;
     }
@@ -862,7 +917,8 @@ public class BulkLoader<K, V>
                     }
 
                     // Now inject the page into the node
-                    injectInNode( btree, leafLevel.getCurrentPage(), levels, 1 );
+                    Page<K, V> currentPage = leafLevel.getCurrentPage();
+                    injectInNode( btree, currentPage, levels, 1 );
 
                     // Create a new page for the remaining elements
                     nbToAdd = pageSize / 2;
@@ -880,7 +936,8 @@ public class BulkLoader<K, V>
                     }
 
                     // And update the parent node
-                    injectInNode( btree, leafLevel.getCurrentPage(), levels, 1 );
+                    Page<K, V> levelCurrentPage = leafLevel.getCurrentPage();
+                    injectInNode( btree, levelCurrentPage, levels, 1 );
 
                     // We are done
                     break;
@@ -910,6 +967,10 @@ public class BulkLoader<K, V>
             }
         }
 
+        // Update the btree with the nb of added elements, and write it$
+        BTreeHeader<K, V> btreeHeader = ( ( AbstractBTree<K, V> ) btree ).getBtreeHeader();
+        btreeHeader.setNbElems( nbElems );
+
         return btree;
     }
 
index 369c23b..bfae29c 100644 (file)
@@ -134,6 +134,15 @@ import org.apache.directory.mavibot.btree.exception.KeyNotFoundException;
 
 
     /**
+     * Manage a new Sub-BTree
+     */
+    protected void manageSubTree()
+    {
+        // Nothing to do
+    }
+
+
+    /**
      * Set the subBtree in the ValueHolder
      */
     /* No qualifier*/void setSubBtree( BTree<V, V> subBtree )
index 5cd8ea6..7e26432 100644 (file)
@@ -67,7 +67,7 @@ public class PersistedBTree<K, V> extends AbstractBTree<K, V> implements Closeab
     /*No qualifier*/static int valueThresholdLow = DEFAULT_VALUE_THRESHOLD_LOW;
 
     /** The BtreeInfo offset */
-    private long btreeInfoOffset;
+    private long btreeInfoOffset = RecordManager.NO_PAGE;
 
     /** The internal recordManager */
     private RecordManager recordManager;
index 27d790c..1c6b941 100644 (file)
@@ -121,6 +121,11 @@ import org.apache.directory.mavibot.btree.serializer.ElementSerializer;
             sb.append( key );
             sb.append( ", " );
         }
+        else if ( raw != null )
+        {
+            K key = getKey();
+            sb.append( ":" ).append( key ).append( ":," );
+        }
         else
         {
             sb.append( "null," );
index 088b70f..7e0a53f 100644 (file)
@@ -1113,11 +1113,6 @@ import org.apache.directory.mavibot.btree.exception.KeyNotFoundException;
      */
     public K getLeftMostKey()
     {
-        if ( keys.length == 0 )
-        {
-            System.out.println( "" );
-        }
-
         return keys[0].getKey();
     }
 
@@ -1250,7 +1245,18 @@ import org.apache.directory.mavibot.btree.exception.KeyNotFoundException;
                     sb.append( ", " );
                 }
 
-                sb.append( "<" ).append( keys[i] ).append( "," ).append( values[i] ).append( ">" );
+                sb.append( "<" ).append( keys[i] ).append( "," );
+
+                if ( values != null )
+                {
+                    sb.append( values[i] );
+                }
+                else
+                {
+                    sb.append( "null" );
+                }
+
+                sb.append( ">" );
             }
         }
 
@@ -1422,7 +1428,18 @@ import org.apache.directory.mavibot.btree.exception.KeyNotFoundException;
                     sb.append( ", " );
                 }
 
-                sb.append( "<" ).append( keys[i] ).append( "," ).append( values[i] ).append( ">" );
+                sb.append( "<" ).append( keys[i] ).append( "," );
+
+                if ( values != null )
+                {
+                    sb.append( values[i] );
+                }
+                else
+                {
+                    sb.append( "null" );
+                }
+
+                sb.append( ">" );
             }
         }
 
index f72dc55..43c2107 100644 (file)
 package org.apache.directory.mavibot.btree;
 
 
-import static org.apache.directory.mavibot.btree.BTreeFactory.createLeaf;
-import static org.apache.directory.mavibot.btree.BTreeFactory.createNode;
-import static org.apache.directory.mavibot.btree.BTreeFactory.setKey;
-
 import java.io.IOException;
 import java.lang.reflect.Array;
-import java.util.ArrayList;
-import java.util.Arrays;
 import java.util.Comparator;
-import java.util.List;
+import java.util.Iterator;
 import java.util.UUID;
 
 import org.apache.directory.mavibot.btree.exception.BTreeAlreadyCreatedException;
@@ -139,6 +133,8 @@ import org.slf4j.LoggerFactory;
                 {
                     throw new RuntimeException( e );
                 }
+
+                manageSubTree();
             }
         }
         else
@@ -249,29 +245,33 @@ import org.slf4j.LoggerFactory;
      */
     protected void createSubTree()
     {
-        try
-        {
-            PersistedBTreeConfiguration<V, V> configuration = new PersistedBTreeConfiguration<V, V>();
-            configuration.setAllowDuplicates( false );
-            configuration.setKeySerializer( valueSerializer );
-            configuration.setName( UUID.randomUUID().toString() );
-            configuration.setValueSerializer( valueSerializer );
-            configuration.setParentBTree( parentBtree );
-            configuration.setBtreeType( BTreeTypeEnum.PERSISTED_SUB );
+        PersistedBTreeConfiguration<V, V> configuration = new PersistedBTreeConfiguration<V, V>();
+        configuration.setAllowDuplicates( false );
+        configuration.setKeySerializer( valueSerializer );
+        configuration.setName( UUID.randomUUID().toString() );
+        configuration.setValueSerializer( valueSerializer );
+        configuration.setParentBTree( parentBtree );
+        configuration.setBtreeType( BTreeTypeEnum.PERSISTED_SUB );
+
+        valueBtree = BTreeFactory.createPersistedBTree( configuration );
+        ( ( PersistedBTree<V, V> ) valueBtree ).setRecordManager( parentBtree.getRecordManager() );
+    }
 
-            valueBtree = BTreeFactory.createPersistedBTree( configuration );
 
-            try
-            {
-                // The sub-btree will not be added into the BOB.
-                parentBtree.getRecordManager().manage( valueBtree, RecordManager.INTERNAL_BTREE );
-                raw = null;
-            }
-            catch ( BTreeAlreadyManagedException e )
-            {
-                // should never happen
-                throw new BTreeAlreadyCreatedException( e );
-            }
+    /**
+     * Push the sub-BTree into the RecordManager
+     */
+    protected void manageSubTree()
+    {
+        try
+        {
+            parentBtree.getRecordManager().manageSubBtree( valueBtree );
+            raw = null;
+        }
+        catch ( BTreeAlreadyManagedException e )
+        {
+            // should never happen
+            throw new BTreeAlreadyCreatedException( e );
         }
         catch ( IOException e )
         {
@@ -712,159 +712,42 @@ import org.slf4j.LoggerFactory;
      * @return The created BTree
      * @throws Exception
      */
-    private BTree<V, V> build( PersistedBTree<V, V> btree, V[] dupKeyValues ) throws Exception
+    private BTree<V, V> build( PersistedBTree<V, V> btree, final V[] dupKeyValues ) throws Exception
     {
-        long newRevision = btree.getRevision() + 1;
-        int numKeysInNode = btree.getPageSize();
-        RecordManager rm = btree.getRecordManager();
-        List<Page<V, V>> lstLeaves = new ArrayList<Page<V, V>>();
-        int totalTupleCount = 0;
-        int nbKeyPage = Math.min( dupKeyValues.length, numKeysInNode );
-
-        Page<V, V> newLeaf = BTreeFactory.createLeaf( btree, newRevision, nbKeyPage );
-        lstLeaves.add( newLeaf );
-
-        int leafIndex = 0;
-
-        // Iterate on all the values
-        for ( V v : dupKeyValues )
+        Iterator<Tuple<V, V>> valueIterator = new Iterator<Tuple<V, V>>()
         {
-            // Inject the key in the leaf
-            setKey( btree, newLeaf, leafIndex, v );
+            int pos = 0;
 
-            leafIndex++;
-            totalTupleCount++;
 
-            if ( ( totalTupleCount % numKeysInNode ) == 0 )
+            @Override
+            public Tuple<V, V> next()
             {
-                // The page has been completed, create a new one or 
-                // if it was the last value, we are done
-                if ( totalTupleCount == dupKeyValues.length )
-                {
-                    // We are done with the values, exit
-                    break;
-                }
-                else
-                {
-                    // Create a new leaf
-                    leafIndex = 0;
-                    nbKeyPage = Math.min( dupKeyValues.length - totalTupleCount, numKeysInNode );
+                // We can now return the found value
+                V value = dupKeyValues[pos];
+                pos++;
 
-                    newLeaf = createLeaf( btree, newRevision, nbKeyPage );
-                    lstLeaves.add( newLeaf );
-                }
+                return new Tuple<V, V>( value, value );
             }
 
-            //TODO build the whole tree in chunks rather than processing *all* leaves at first
-        }
-
-        if ( lstLeaves.isEmpty() )
-        {
-            return btree;
-        }
-
-        // make sure either one of the root pages is reclaimed, cause when we call rm.manage()
-        // there is already a root page created
-        Page<V, V> rootPage = attachNodes( lstLeaves, btree, numKeysInNode, rm );
-        rm.writePage( btree, rootPage, rootPage.getRevision() );
-
-        Page<V, V> oldRoot = btree.getRootPage();
-
-        long newRootPageOffset = ( ( AbstractPage<?, V> ) rootPage ).getOffset();
-        LOG.debug( "replacing old offset {} of the BTree {} with {}",
-            btree.getRootPageOffset(), btree.getName(), newRootPageOffset );
-
-        BTreeHeader<V, V> header = btree.getBtreeHeader();
 
-        header.setRootPage( rootPage );
-        header.setRevision( newRevision );
-        header.setNbElems( totalTupleCount );
-
-        long newBtreeHeaderOffset = rm.writeBtreeHeader( btree, header );
-
-        header.setBTreeHeaderOffset( newBtreeHeaderOffset );
-        rm.writeBtreeHeader( btree, header );
-
-        rm.freePages( ( BTree ) btree, btree.getRevision(), ( List ) Arrays.asList( oldRoot ) );
-
-        return btree;
-    }
-
-
-    /**
-     * Attaches the Nodes together
-     * 
-     * @param children the leaves
-     * @param btree the sub-BTree
-     * @param numKeysInNode number of keys per each node
-     * @param rm the RecordManager
-     * @return the new root page of the sub-BTree after attaching all the nodes
-     * @throws IOException
-     */
-    private Page<V, V> attachNodes( List<Page<V, V>> children, BTree btree, int numKeysInNode, RecordManager rm )
-        throws IOException
-    {
-        if ( children.size() == 1 )
-        {
-            return children.get( 0 );
-        }
-
-        List<Page<V, V>> lstNodes = new ArrayList<Page<V, V>>();
-
-        int numChildren = numKeysInNode + 1;
-
-        PersistedNode node = ( PersistedNode ) createNode( btree, btree.getRevision(), numKeysInNode );
-        lstNodes.add( node );
-        int i = 0;
-        int totalNodes = 0;
-
-        for ( Page<?, V> p : children )
-        {
-            if ( i != 0 )
+            @Override
+            public boolean hasNext()
             {
-                setKey( btree, node, i - 1, p.getLeftMostKey() );
+                // Check that we have at least one element to read
+                return pos < dupKeyValues.length;
             }
 
-            node.children[i] = new PersistedPageHolder( btree, p );
 
-            i++;
-            totalNodes++;
-
-            if ( ( totalNodes % numChildren ) == 0 )
+            @Override
+            public void remove()
             {
-                i = 0;
-
-                PageHolder pageHolder = ( PageHolder ) rm.writePage( btree, node, 1 );
-
-                node = ( PersistedNode ) createNode( btree, btree.getRevision(), numKeysInNode );
-                lstNodes.add( node );
             }
-        }
-
-        // remove null keys and values from the last node and resize
-        AbstractPage<?, V> lastNode = ( AbstractPage<?, V> ) lstNodes.get( lstNodes.size() - 1 );
-
-        for ( int j = 0; j < lastNode.nbElems; j++ )
-        {
-            if ( lastNode.keys[j] == null )
-            {
-                int n = j;
-                lastNode.nbElems = n;
-                KeyHolder<?>[] keys = lastNode.keys;
 
-                lastNode.keys = ( KeyHolder[] ) Array.newInstance( KeyHolder.class, n );
-                System.arraycopy( keys, 0, lastNode.keys, 0, n );
-
-                break;
-            }
-        }
+        };
 
-        if ( lastNode.keys.length == 0 )
-        {
-            lstNodes.remove( lastNode );
-        }
+        BulkLoader.load( btree, valueIterator, dupKeyValues.length );
 
-        return attachNodes( lstNodes, btree, numKeysInNode, rm );
+        return btree;
     }
 
 
index 66fdaeb..98ecced 100644 (file)
@@ -23,6 +23,7 @@ package org.apache.directory.mavibot.btree;
 import java.io.File;
 import java.io.IOException;
 import java.io.RandomAccessFile;
+import java.nio.BufferUnderflowException;
 import java.nio.ByteBuffer;
 import java.nio.channels.FileChannel;
 import java.util.ArrayList;
@@ -376,7 +377,7 @@ public class RecordManager extends AbstractTransactionManager
         // Create a new Header
         nbBtree = 0;
         firstFreePage = NO_PAGE;
-        currentBtreeOfBtreesOffset = 0L;
+        currentBtreeOfBtreesOffset = NO_PAGE;
 
         updateRecordManagerHeader();
 
@@ -389,7 +390,7 @@ public class RecordManager extends AbstractTransactionManager
         // Inject these B-trees into the RecordManager. They are internal B-trees.
         try
         {
-            manage( btreeOfBtrees, INTERNAL_BTREE );
+            manageSubBtree( btreeOfBtrees );
 
             currentBtreeOfBtreesOffset = ( ( PersistedBTree<NameRevision, Long> ) btreeOfBtrees ).getBtreeHeader()
                 .getBTreeHeaderOffset();
@@ -1407,18 +1408,81 @@ public class RecordManager extends AbstractTransactionManager
      * Manage a B-tree. The btree will be added and managed by this RecordManager. We will create a
      * new RootPage for this added B-tree, which will contain no data.<br/>
      * This method is threadsafe.
+     * Managing a btree is a matter of storing an reference to the managed B-tree in the B-tree Of B-trees.
+     * We store a tuple of NameRevision (where revision is 0L) and a offset to the B-tree header.
+     * At the same time, we keep a track of the managed B-trees in a Map.
      *
      * @param btree The new B-tree to manage.
-     * @throws BTreeAlreadyManagedException if the B-tree is already managed
+     * @param treeType flag indicating if this is an internal tree
+     *
+     * @throws BTreeAlreadyManagedException If the B-tree is already managed
      * @throws IOException if there was a problem while accessing the file
      */
     public synchronized <K, V> void manage( BTree<K, V> btree ) throws BTreeAlreadyManagedException, IOException
     {
         beginTransaction();
 
-        manage( ( BTree<Object, Object> ) btree, NORMAL_BTREE );
+        try
+        {
+            LOG.debug( "Managing the btree {}", btree.getName() );
+            BTreeFactory.setRecordManager( btree, this );
 
-        commit();
+            String name = btree.getName();
+
+            if ( managedBtrees.containsKey( name ) )
+            {
+                // There is already a B-tree with this name in the recordManager...
+                LOG.error( "There is already a B-tree named '{}' managed by this recordManager", name );
+                rollback();
+                throw new BTreeAlreadyManagedException( name );
+            }
+
+            // Now, write the B-tree informations
+            long btreeInfoOffset = writeBtreeInfo( btree );
+            BTreeHeader<K, V> btreeHeader = ( ( AbstractBTree<K, V> ) btree ).getBtreeHeader();
+            ( ( PersistedBTree<K, V> ) btree ).setBtreeInfoOffset( btreeInfoOffset );
+
+            // Serialize the B-tree root page
+            Page<K, V> rootPage = btreeHeader.getRootPage();
+
+            PageIO[] rootPageIos = serializePage( btree, btreeHeader.getRevision(), rootPage );
+
+            // Get the reference on the first page
+            long rootPageOffset = rootPageIos[0].getOffset();
+
+            // Store the rootPageOffset into the Btree header and into the rootPage
+            btreeHeader.setRootPageOffset( rootPageOffset );
+            ( ( PersistedLeaf<K, V> ) rootPage ).setOffset( rootPageOffset );
+
+            LOG.debug( "Flushing the newly managed '{}' btree rootpage", btree.getName() );
+            flushPages( rootPageIos );
+
+            // And the B-tree header
+            long btreeHeaderOffset = writeBtreeHeader( btree, btreeHeader );
+
+            // Now, if this is a new B-tree, add it to the B-tree of B-trees
+            // Add the btree into the map of managed B-trees
+            managedBtrees.put( name, ( BTree<Object, Object> ) btree );
+
+            // And in the Map of currentBtreeHeaders and newBtreeHeaders
+            currentBTreeHeaders.put( name, btreeHeader );
+            newBTreeHeaders.put( name, btreeHeader );
+
+            // We can safely increment the number of managed B-trees
+            nbBtree++;
+
+            // Create the new NameRevision
+            NameRevision nameRevision = new NameRevision( name, 0L );
+
+            // Inject it into the B-tree of B-tree
+            btreeOfBtrees.insert( nameRevision, btreeHeaderOffset );
+            commit();
+        }
+        catch ( IOException ioe )
+        {
+            rollback();
+            throw ioe;
+        }
     }
 
 
@@ -1433,22 +1497,22 @@ public class RecordManager extends AbstractTransactionManager
      * @throws BTreeAlreadyManagedException If the B-tree is already managed
      * @throws IOException
      */
-    public synchronized <K, V> void manage( BTree<K, V> btree, boolean treeType )
+    public synchronized <K, V> void manageSubBtree( BTree<K, V> btree )
         throws BTreeAlreadyManagedException, IOException
     {
-        LOG.debug( "Managing the btree {} which is an internam tree : {}", btree.getName(), treeType );
+        LOG.debug( "Managing the sub-btree {}", btree.getName() );
         BTreeFactory.setRecordManager( btree, this );
 
         String name = btree.getName();
 
         if ( managedBtrees.containsKey( name ) )
         {
-            // There is already a B-tree with this name in the recordManager...
-            LOG.error( "There is already a B-tree named '{}' managed by this recordManager", name );
+            // There is already a subB-tree with this name in the recordManager...
+            LOG.error( "There is already a sub-B-tree named '{}' managed by this recordManager", name );
             throw new BTreeAlreadyManagedException( name );
         }
 
-        // Now, write the B-tree informations
+        // Now, write the subB-tree informations
         long btreeInfoOffset = writeBtreeInfo( btree );
         BTreeHeader<K, V> btreeHeader = ( ( AbstractBTree<K, V> ) btree ).getBtreeHeader();
         ( ( PersistedBTree<K, V> ) btree ).setBtreeInfoOffset( btreeInfoOffset );
@@ -1463,7 +1527,8 @@ public class RecordManager extends AbstractTransactionManager
 
         // Store the rootPageOffset into the Btree header and into the rootPage
         btreeHeader.setRootPageOffset( rootPageOffset );
-        ( ( PersistedLeaf<K, V> ) rootPage ).setOffset( rootPageOffset );
+
+        ( ( AbstractPage<K, V> ) rootPage ).setOffset( rootPageOffset );
 
         LOG.debug( "Flushing the newly managed '{}' btree rootpage", btree.getName() );
         flushPages( rootPageIos );
@@ -1472,24 +1537,29 @@ public class RecordManager extends AbstractTransactionManager
         long btreeHeaderOffset = writeBtreeHeader( btree, btreeHeader );
 
         // Now, if this is a new B-tree, add it to the B-tree of B-trees
-        if ( treeType != INTERNAL_BTREE )
+        // Add the btree into the map of managed B-trees
+        if ( ( btree.getType() != BTreeTypeEnum.BTREE_OF_BTREES ) && ( btree.getType() != BTreeTypeEnum.PERSISTED_SUB ) )
         {
-            // Add the btree into the map of managed B-trees
             managedBtrees.put( name, ( BTree<Object, Object> ) btree );
+        }
 
-            // And in the Map of currentBtreeHeaders and newBtreeHeaders
-            currentBTreeHeaders.put( name, btreeHeader );
-            newBTreeHeaders.put( name, btreeHeader );
+        // And in the Map of currentBtreeHeaders and newBtreeHeaders
+        currentBTreeHeaders.put( name, btreeHeader );
+        newBTreeHeaders.put( name, btreeHeader );
+
+        // Create the new NameRevision
+        NameRevision nameRevision = new NameRevision( name, 0L );
 
+        // Inject it into the B-tree of B-tree
+        if ( ( btree.getType() != BTreeTypeEnum.BTREE_OF_BTREES ) && ( btree.getType() != BTreeTypeEnum.PERSISTED_SUB ) )
+        {
             // We can safely increment the number of managed B-trees
             nbBtree++;
 
-            // Create the new NameRevision
-            NameRevision nameRevision = new NameRevision( name, 0L );
-
-            // Inject it into the B-tree of B-tree
             btreeOfBtrees.insert( nameRevision, btreeHeaderOffset );
         }
+
+        updateRecordManagerHeader();
     }
 
 
@@ -1692,6 +1762,15 @@ public class RecordManager extends AbstractTransactionManager
         int dataSize = 0;
         int nbValues = valueHolder.size();
 
+        if ( nbValues == 0 )
+        {
+            // No value.
+            byte[] buffer = IntSerializer.serialize( nbValues );
+            serializedData.add( buffer );
+
+            return buffer.length;
+        }
+
         if ( !valueHolder.isSubBtree() )
         {
             // Write the nb elements first
@@ -1716,47 +1795,15 @@ public class RecordManager extends AbstractTransactionManager
         }
         else
         {
-            if ( nbValues == 0 )
-            {
-                // No value.
-                byte[] buffer = IntSerializer.serialize( nbValues );
-                serializedData.add( buffer );
-
-                return buffer.length;
-            }
-
-            if ( valueHolder.isSubBtree() )
-            {
-                // Store the nbVlues as a negative number. We add 1 so that 0 is not confused with an Array value
-                byte[] buffer = IntSerializer.serialize( -( nbValues + 1 ) );
-                serializedData.add( buffer );
-                dataSize += buffer.length;
-
-                // the B-tree offset
-                buffer = LongSerializer.serialize( ( ( PersistedValueHolder<V> ) valueHolder ).getOffset() );
-                serializedData.add( buffer );
-                dataSize += buffer.length;
-            }
-            else
-            {
-                // This is an array, store the nb of values as a positive number
-                byte[] buffer = IntSerializer.serialize( nbValues );
-                serializedData.add( buffer );
-                dataSize += buffer.length;
-
-                // Now store each value
-                byte[] data = ( ( PersistedValueHolder<V> ) valueHolder ).getRaw();
-                buffer = IntSerializer.serialize( data.length );
-                serializedData.add( buffer );
-                dataSize += buffer.length;
-
-                if ( data.length > 0 )
-                {
-                    serializedData.add( data );
-                }
+            // Store the nbVlues as a negative number. We add 1 so that 0 is not confused with an Array value
+            byte[] buffer = IntSerializer.serialize( -( nbValues + 1 ) );
+            serializedData.add( buffer );
+            dataSize += buffer.length;
 
-                dataSize += data.length;
-            }
+            // the B-tree offset
+            buffer = LongSerializer.serialize( ( ( PersistedValueHolder<V> ) valueHolder ).getOffset() );
+            serializedData.add( buffer );
+            dataSize += buffer.length;
         }
 
         return dataSize;
@@ -2926,8 +2973,6 @@ public class RecordManager extends AbstractTransactionManager
      */
     private PageIO fetchNewPage() throws IOException
     {
-        //dumpFreePages( firstFreePage );
-
         if ( firstFreePage == NO_PAGE )
         {
             nbCreatedPages.incrementAndGet();
index f342b53..841f5a1 100644 (file)
@@ -150,7 +150,7 @@ public class BulkLoaderTest
     public void testPersistedBulkLoad1000Elements() throws IOException, KeyNotFoundException,
         BTreeAlreadyManagedException
     {
-        for ( int i = 0; i < 1001; i++ )
+        for ( int i = 1000000; i < 1000001; i++ )
         {
             Random random = new Random( System.currentTimeMillis() );
             File file = File.createTempFile( "managedbtreebuilder", ".data" );
@@ -161,6 +161,7 @@ public class BulkLoaderTest
                 RecordManager rm = new RecordManager( file.getAbsolutePath() );
                 PersistedBTree<Long, String> btree = ( PersistedBTree<Long, String> ) rm.addBTree( "test",
                     LongSerializer.INSTANCE, StringSerializer.INSTANCE, false );
+                btree.setPageSize( 64 );
 
                 int nbElems = i;
                 int addedElems = 0;
@@ -193,12 +194,8 @@ public class BulkLoaderTest
                     expectedTuple.value.add( value );
                     expected.put( key, expectedTuple );
                     addedElems++;
-
-                    if ( addedElems % 100 == 0 )
-                    {
-                        //System.out.println( "Nb added elements = " + addedElems );
-                    }
                 }
+
                 long t01 = System.currentTimeMillis();
 
                 // System.out.println( "Time to create the " + nbElems + " elements " + ( ( t01 - t00 ) / 1 ) );
@@ -229,10 +226,10 @@ public class BulkLoaderTest
                 };
 
                 long t0 = System.currentTimeMillis();
-                BTree<Long, String> result = BulkLoader.load( btree, tupleIterator, 128 );
+                BTree<Long, String> result = BulkLoader.load( btree, tupleIterator, 1024000 );
                 long t1 = System.currentTimeMillis();
 
-                if ( i % 100 == 0 )
+                if ( ( i % 100 ) == 0 )
                 {
                     System.out.println( "== Btree #" + i + ", Time to bulkoad the " + nbElems + " elements "
                         + ( t1 - t0 ) + "ms" );
@@ -451,10 +448,6 @@ public class BulkLoaderTest
 
             for ( int i = 0; i < 49; i++ )
             {
-                System.out.println( "=======================================" );
-                System.out.println( "== Iteration n#" + i );
-                System.out.println( "=======================================" );
-
                 LevelInfo<Long, String> leafInfo = BulkLoader.computeLevel( btree, i, LevelEnum.LEAF );
 
                 assertEquals( expectedNbPages[i], leafInfo.getNbPages() );
@@ -510,10 +503,6 @@ public class BulkLoaderTest
 
             for ( int i = 2; i < 52; i++ )
             {
-                System.out.println( "=======================================" );
-                System.out.println( "== Iteration n#" + i );
-                System.out.println( "=======================================" );
-
                 LevelInfo<Long, String> nodeInfo = BulkLoader.computeLevel( btree, i, LevelEnum.NODE );
 
                 assertEquals( expectedNbPages[i], nodeInfo.getNbPages() );
@@ -569,10 +558,6 @@ public class BulkLoaderTest
 
             for ( int i = 2599; i <= 2599; i++ )
             {
-                System.out.println( "=======================================" );
-                System.out.println( "== Iteration #" + i );
-                System.out.println( "=======================================" );
-
                 List<LevelInfo<Long, String>> levels = BulkLoader.computeLevels( btree, i );
 
                 for ( LevelInfo<Long, String> level : levels )
@@ -592,7 +577,7 @@ public class BulkLoaderTest
      * Test that we can load 100 BTrees with 0 to 1000 elements, each one of them having multiple values
      * @throws BTreeAlreadyManagedException 
      */
-    @Ignore("The test is failing atm due to the sub-btree construction which is not working correctly when we have too many elements")
+    //@Ignore("The test is failing atm due to the sub-btree construction which is not working correctly when we have too many elements")
     @Test
     public void testPersistedBulkLoad1000ElementsMultipleValues() throws IOException, KeyNotFoundException,
         BTreeAlreadyManagedException
@@ -672,24 +657,11 @@ public class BulkLoaderTest
                 };
 
                 long t0 = System.currentTimeMillis();
-                BTree<Long, String> result = null;
-
-                try
-                {
-                    result = BulkLoader.load( btree, tupleIterator, 128 );
-                }
-                catch ( NullPointerException npe )
-                {
-                    System.out.println( "Error with : " );
-                    for ( int j = 0; j < i; j++ )
-                    {
-                        System.out.println( elems[j] );
-                    }
-                }
+                BTree<Long, String> result = BulkLoader.load( btree, tupleIterator, 128 );
                 long t1 = System.currentTimeMillis();
 
-                System.out.println( "== Btree #" + i + ", Time to bulkoad the " + nbElems + " elements "
-                    + ( t1 - t0 ) + "ms" );
+                //System.out.println( "== Btree #" + i + ", Time to bulkoad the " + nbElems + " elements "
+                //    + ( t1 - t0 ) + "ms" );
 
                 TupleCursor<Long, String> cursor = result.browse();
                 int nbFetched = 0;
@@ -793,19 +765,8 @@ public class BulkLoaderTest
 
             long t0 = System.currentTimeMillis();
             BTree<Long, String> result = null;
-            try
-            {
-                result = BulkLoader.load( btree, tupleIterator, 128 );
-            }
-            catch ( NullPointerException npe )
-            {
-                npe.printStackTrace();
-                System.out.println( "Error with : " );
-                for ( int j = 0; j < 4; j++ )
-                {
-                    System.out.println( elems[j] );
-                }
-            }
+
+            result = BulkLoader.load( btree, tupleIterator, 128 );
             long t1 = System.currentTimeMillis();
 
             System.out.println( "== Btree #" + 4 + ", Time to bulkoad the " + nbElems + " elements "
@@ -819,10 +780,6 @@ public class BulkLoaderTest
             while ( cursor.hasNext() )
             {
                 Tuple<Long, String> elem = cursor.next();
-
-                assertTrue( expected.containsKey( elem.key ) );
-                Tuple<Long, Set<String>> tuple = expected.get( elem.key );
-                assertNotNull( tuple );
                 nbFetched++;
             }
 
@@ -856,7 +813,7 @@ public class BulkLoaderTest
         listTuples.add( new Tuple<Long, String>( 32L, "V8" ) );
         listTuples.add( new Tuple<Long, String>( -21L, "V9" ) );
         listTuples.add( new Tuple<Long, String>( 9L, "V10" ) );
-        //listTuples.add( new Tuple<Long, String>( 0L, "V11" ) );
+        listTuples.add( new Tuple<Long, String>( 0L, "V11" ) );
         listTuples.add( new Tuple<Long, String>( -7L, "V12" ) );
         listTuples.add( new Tuple<Long, String>( -13L, "V13" ) );
         listTuples.add( new Tuple<Long, String>( 23L, "V14" ) );
@@ -1222,6 +1179,7 @@ public class BulkLoaderTest
                     prev = elem;
                     elem = cursor.next();
                     nbFetched++;
+                    System.out.println( elem );
                 }
             }
             catch ( Exception e )
@@ -1234,7 +1192,7 @@ public class BulkLoaderTest
         }
         catch ( Exception e )
         {
-
+            e.printStackTrace();
         }
     }
 }
index 751a257..49bb731 100644 (file)
@@ -1193,7 +1193,8 @@ public class InMemoryBTreeTest
      * @param element The removed element
      * @param expected The expected set of elements
      */
-    private void checkRemoval( BTree<Integer, String> btree, int element, Set<Integer> expected ) throws IOException, KeyNotFoundException
+    private void checkRemoval( BTree<Integer, String> btree, int element, Set<Integer> expected ) throws IOException,
+        KeyNotFoundException
     {
         Tuple<Integer, String> removed = btree.delete( element );
         assertEquals( element, removed.getKey().intValue() );
@@ -1983,7 +1984,7 @@ public class InMemoryBTreeTest
         btree.close();
     }
 
-    
+
     /**
      * Test the overwriting of elements
      */
@@ -1999,7 +2000,7 @@ public class InMemoryBTreeTest
         assertTrue( btree.hasKey( 1 ) );
 
         assertEquals( Integer.valueOf( 1 ), btree.get( 1 ) );
-        
+
         btree.insert( 1, 10 );
 
         assertTrue( btree.hasKey( 1 ) );
index 078176d..0d5d81f 100644 (file)
@@ -19,6 +19,7 @@
  */
 package org.apache.directory.mavibot.btree;
 
+
 import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertFalse;
 import static org.junit.Assert.assertTrue;
@@ -35,6 +36,7 @@ import org.junit.Rule;
 import org.junit.Test;
 import org.junit.rules.TemporaryFolder;
 
+
 /**
  * Tests for KeyCursor of a persisted sub-Btree.
  *
@@ -71,7 +73,7 @@ public class PersistedSubBtreeKeyCursorTest
 
             btree = BTreeFactory.createPersistedBTree( configuration );
 
-            recordManager.manage( btree, RecordManager.INTERNAL_BTREE );
+            recordManager.manage( btree );
         }
         catch ( Exception e )
         {
@@ -91,33 +93,34 @@ public class PersistedSubBtreeKeyCursorTest
         {
             FileUtils.deleteDirectory( dataDir );
         }
-        
+
         recordManager.close();
         assertTrue( recordManager.isContextOk() );
     }
 
+
     @Test
     public void testBrowseKeys() throws Exception
     {
-        for( int i=0; i< 10; i++ )
+        for ( int i = 0; i < 10; i++ )
         {
             // only the keys are stored, values are ignored
             btree.insert( i, i );
         }
-        
+
         KeyCursor<Integer> cursor = btree.browseKeys();
-        
-        for( int i=0; i< 10; i++ )
+
+        for ( int i = 0; i < 10; i++ )
         {
             assertTrue( cursor.hasNext() );
             assertEquals( String.valueOf( i ), String.valueOf( cursor.next() ) );
         }
-        
+
         assertFalse( cursor.hasNext() );
 
         cursor.afterLast();
-        
-        for( int i=9; i>= 0; i-- )
+
+        for ( int i = 9; i >= 0; i-- )
         {
             assertTrue( cursor.hasPrev() );
             assertEquals( String.valueOf( i ), String.valueOf( cursor.prev() ) );