~/f/bless/RPMS.2017 ~/f/bless
~/f/bless
RPMS.2017/bless-0.6.2-0.0.x86_64.rpm RPMS/bless-0.6.2-0.0.x86_64.rpm differ: byte 225, line 1
Comparing bless-0.6.2-0.0.x86_64.rpm to bless-0.6.2-0.0.x86_64.rpm
comparing the rpm tags of bless
--- old-rpm-tags
+++ new-rpm-tags
@@ -131,18 +131,18 @@
 ___QF_CHECKSUM___
 /usr/bin/bless 08ee5aedf71ea03f57cef105c4296a36ad92af4f9401e66de6b582e75f3e6833 0
 /usr/lib64/bless  0
-/usr/lib64/bless/Bless.Buffers.dll 2422872c2b1793e509b8bcd522864a58bbcf6d819a1e416921da59f01a07a7a9 0
-/usr/lib64/bless/Bless.Gui.Areas.Plugins.dll 58af87e4c80455055d8e0087d26dac42b9e8364df2e1fdb654ca4687b2fb6e58 0
+/usr/lib64/bless/Bless.Buffers.dll e562377190e6b485839aab2ea0e43d0acfe169a0e96c916aff9495aefa46d652 0
+/usr/lib64/bless/Bless.Gui.Areas.Plugins.dll f85c5be8ba3fa8b16cc8cc5b5ccd2a4e899d4abd7ba49e46abfeb10e44ca1a03 0
 /usr/lib64/bless/Bless.Gui.Areas.dll 89e1c430db370c50d4eb52892989901214bf19a9338dd501bd929312a6ebd423 0
-/usr/lib64/bless/Bless.Gui.Drawers.dll f028c323f73797bb65823dcbba10c912da994d50a99fe2cc9751b2f261ed49ae 0
-/usr/lib64/bless/Bless.Gui.Plugins.dll 45302ef75692fb794fed7f8f7e2c4aef48a432a8f72b9352a28038eba8d1316b 0
-/usr/lib64/bless/Bless.Gui.dll 6c355e640672f0ad053f1385ab7120d2932949271baab15764980fac0f3320fd 0
-/usr/lib64/bless/Bless.Plugins.dll 359794bf7bcaf41709f7003ad61a702690cd90efd713ab1f706227dbdbe3ab14 0
-/usr/lib64/bless/Bless.Tools.Export.Plugins.dll 4371307f38856d09f87a88af4a4afaf46878c2e5212f30c8e13650da2bcdd473 0
-/usr/lib64/bless/Bless.Tools.Export.dll d3dface1bb891721ffda3e0c3e7b132ab059be89f840dfa0595a5032f9bbf36c 0
+/usr/lib64/bless/Bless.Gui.Drawers.dll 0d969b24091dd729ad1786f90493c044af589861a572bbde4e9a8f184a740a1d 0
+/usr/lib64/bless/Bless.Gui.Plugins.dll b7b41f53452c4a026f834aa5f3b6cb546bb2c149f8721de990bee71f645bec95 0
+/usr/lib64/bless/Bless.Gui.dll 03087b661347d6041d3bbde6941ccd250c20a557823a6d0aa33bc4f540f8391c 0
+/usr/lib64/bless/Bless.Plugins.dll 776b78400df85c908bddf404ff52f0cd62c2a93d98a466e12c94c2efbedf7838 0
+/usr/lib64/bless/Bless.Tools.Export.Plugins.dll 52b0527e3cc80c25cd99159491e7e97c62524535a766f336077e06b571dfe120 0
+/usr/lib64/bless/Bless.Tools.Export.dll 61e2c02786c8cff31ac83d2b26c2778188bdd74c30b21a2987c4df6b40af11a4 0
 /usr/lib64/bless/Bless.Tools.Find.dll c7ec13664b19f02bbe19ffad273db5fd0da50a7d67ccbbc200af842a1d218089 0
 /usr/lib64/bless/Bless.Tools.dll aac49e5366f369db13172acd70ad31d14099b5f49e15df5df336c8e8330ff4bf 0
-/usr/lib64/bless/Bless.Util.dll ce211efc5cde4e894d2fe5e0652a6659cd4869a7f3e37cc335ac458c81fd75cd 0
+/usr/lib64/bless/Bless.Util.dll b62e7af6828ae2b63d5e17facb553004eb3b68eb7c299861253de93d1190c55f 0
 /usr/lib64/bless/bless.exe 265941dfc575d24bb0cd768a724e2043fe6cffecc7ac0dd8304ff1bb04c49250 0
 /usr/share/applications/bless.desktop 6b30b7be86022e6f70dff8205b1389598837c9d46f277f1e246c975e695fb3f7 0
 /usr/share/bless  0
comparing rpmtags
comparing RELEASE
comparing PROVIDES
comparing scripts
comparing filelist
comparing file checksum
creating rename script
RPM file checksum differs.
Extracting packages
PE32 Mono/.Net assembly: /usr/lib64/bless/Bless.Buffers.dll
/usr/lib64/bless/Bless.Buffers.dll differs (PE32 executable (DLL) (console) Intel 80386, Mono/.Net assembly, for MS Windows)
--- old /usr/lib64/bless/Bless.Buffers.dll (monodis)
+++ new /usr/lib64/bless/Bless.Buffers.dll (monodis)
@@ -1,12 +1,12 @@
+.assembly extern Bless.Util
+{
+  .ver 0:0:0:0
+}
 .assembly extern mscorlib
 {
   .ver 4:0:0:0
   .publickeytoken = (B7 7A 5C 56 19 34 E0 89 ) // .z\V.4..
 }
-.assembly extern Bless.Util
-{
-  .ver 0:0:0:0
-}
 .assembly extern System
 {
   .ver 4:0:0:0
@@ -36,2265 +36,2493 @@
 
 .namespace Bless.Buffers
 {
-  .class public auto ansi beforefieldinit Segment
+  .class public auto ansi beforefieldinit SegmentCollection
   	extends [mscorlib]System.Object
   {
-    .field  private  class Bless.Buffers.IBuffer buffer
-    .field  private  int64 start
-    .field  private  int64 end
+    .field  private  class [Bless.Util]Bless.Util.List`1<class Bless.Buffers.Segment> list
+    .field  private  class [Bless.Util]Bless.Util.List`1/Node<class Bless.Buffers.Segment> cachedNode
+    .field  private  int64 cachedMapping
 
     // method line 1
     .method public hidebysig specialname rtspecialname 
-           instance default void '.ctor' (class Bless.Buffers.IBuffer buffer, int64 start, int64 end)  cil managed 
+           instance default void '.ctor' ()  cil managed 
     {
         // Method begins at RVA 0x2050
-	// Code size 28 (0x1c)
+	// Code size 18 (0x12)
 	.maxstack 8
 	IL_0000:  ldarg.0 
 	IL_0001:  call instance void object::'.ctor'()
 	IL_0006:  ldarg.0 
-	IL_0007:  ldarg.1 
-	IL_0008:  stfld class Bless.Buffers.IBuffer Bless.Buffers.Segment::buffer
-	IL_000d:  ldarg.0 
-	IL_000e:  ldarg.2 
-	IL_000f:  stfld int64 Bless.Buffers.Segment::start
-	IL_0014:  ldarg.0 
-	IL_0015:  ldarg.3 
-	IL_0016:  stfld int64 Bless.Buffers.Segment::end
-	IL_001b:  ret 
-    } // end of method Segment::.ctor
+	IL_0007:  newobj instance void class [Bless.Util]Bless.Util.List`1<class Bless.Buffers.Segment>::'.ctor'()
+	IL_000c:  stfld class [Bless.Util]Bless.Util.List`1<class Bless.Buffers.Segment> Bless.Buffers.SegmentCollection::list
+	IL_0011:  ret 
+    } // end of method SegmentCollection::.ctor
 
     // method line 2
-    .method public hidebysig 
-           instance default bool Contains (int64 offset, int64 mapping)  cil managed 
-    {
-        // Method begins at RVA 0x206d
-	// Code size 32 (0x20)
-	.maxstack 8
-	IL_0000:  ldarg.1 
-	IL_0001:  ldarg.2 
-	IL_0002:  blt IL_001e
-
-	IL_0007:  ldarg.1 
-	IL_0008:  ldarg.2 
-	IL_0009:  ldarg.0 
-	IL_000a:  ldfld int64 Bless.Buffers.Segment::end
-	IL_000f:  add 
-	IL_0010:  ldarg.0 
-	IL_0011:  ldfld int64 Bless.Buffers.Segment::start
-	IL_0016:  sub 
-	IL_0017:  bgt IL_001e
-
-	IL_001c:  ldc.i4.1 
-	IL_001d:  ret 
-	IL_001e:  ldc.i4.0 
-	IL_001f:  ret 
-    } // end of method Segment::Contains
-
-    // method line 3
-    .method public hidebysig 
-           instance default class Bless.Buffers.Segment SplitAt (int64 pos)  cil managed 
-    {
-        // Method begins at RVA 0x2090
-	// Code size 74 (0x4a)
-	.maxstack 3
-	.locals init (
-		class Bless.Buffers.Segment	V_0)
-	IL_0000:  ldarg.1 
-	IL_0001:  ldarg.0 
-	IL_0002:  ldfld int64 Bless.Buffers.Segment::end
-	IL_0007:  ldarg.0 
-	IL_0008:  ldfld int64 Bless.Buffers.Segment::start
-	IL_000d:  sub 
-	IL_000e:  bgt IL_001b
-
-	IL_0013:  ldarg.1 
-	IL_0014:  ldc.i4.0 
-	IL_0015:  conv.i8 
-	IL_0016:  bne.un IL_001d
-
-	IL_001b:  ldnull 
-	IL_001c:  ret 
-	IL_001d:  ldarg.0 
-	IL_001e:  ldfld class Bless.Buffers.IBuffer Bless.Buffers.Segment::buffer
-	IL_0023:  ldarg.0 
-	IL_0024:  ldfld int64 Bless.Buffers.Segment::start
-	IL_0029:  ldarg.1 
-	IL_002a:  add 
-	IL_002b:  ldarg.0 
-	IL_002c:  ldfld int64 Bless.Buffers.Segment::end
-	IL_0031:  newobj instance void class Bless.Buffers.Segment::'.ctor'(class Bless.Buffers.IBuffer, int64, int64)
-	IL_0036:  stloc.0 
-	IL_0037:  ldarg.0 
-	IL_0038:  ldarg.0 
-	IL_0039:  ldfld int64 Bless.Buffers.Segment::start
-	IL_003e:  ldarg.1 
-	IL_003f:  add 
-	IL_0040:  ldc.i4.1 
-	IL_0041:  conv.i8 
-	IL_0042:  sub 
-	IL_0043:  stfld int64 Bless.Buffers.Segment::end
-	IL_0048:  ldloc.0 
-	IL_0049:  ret 
-    } // end of method Segment::SplitAt
-
-    // method line 4
-    .method public hidebysig 
-           instance default void MakePrivateCopyOfData ()  cil managed 
-    {
-        // Method begins at RVA 0x20e8
-	// Code size 61 (0x3d)
-	.maxstack 4
-	.locals init (
-		class Bless.Buffers.SimpleBuffer	V_0)
-	IL_0000:  newobj instance void class Bless.Buffers.SimpleBuffer::'.ctor'()
-	IL_0005:  stloc.0 
-	IL_0006:  ldloc.0 
-	IL_0007:  ldarg.0 
-	IL_0008:  ldfld class Bless.Buffers.IBuffer Bless.Buffers.Segment::buffer
-	IL_000d:  ldarg.0 
-	IL_000e:  ldfld int64 Bless.Buffers.Segment::start
-	IL_0013:  ldarg.0 
-	IL_0014:  call instance int64 class Bless.Buffers.Segment::get_Size()
-	IL_0019:  callvirt instance void class Bless.Buffers.BaseBuffer::AppendBuffer(class Bless.Buffers.IBuffer, int64, int64)
-	IL_001e:  ldarg.0 
-	IL_001f:  ldloc.0 
-	IL_0020:  stfld class Bless.Buffers.IBuffer Bless.Buffers.Segment::buffer
-	IL_0025:  ldarg.0 
-	IL_0026:  ldc.i4.0 
-	IL_0027:  conv.i8 
-	IL_0028:  stfld int64 Bless.Buffers.Segment::start
-	IL_002d:  ldarg.0 
-	IL_002e:  ldloc.0 
-	IL_002f:  callvirt instance int64 class Bless.Buffers.BaseBuffer::get_Size()
-	IL_0034:  ldc.i4.1 
-	IL_0035:  conv.i8 
-	IL_0036:  sub 
-	IL_0037:  stfld int64 Bless.Buffers.Segment::end
-	IL_003c:  ret 
-    } // end of method Segment::MakePrivateCopyOfData
-
-    // method line 5
-    .method public virtual hidebysig 
-           instance default string ToString ()  cil managed 
-    {
-        // Method begins at RVA 0x2131
-	// Code size 33 (0x21)
-	.maxstack 8
-	IL_0000:  ldstr "({0}->{1})"
-	IL_0005:  ldarg.0 
-	IL_0006:  ldfld int64 Bless.Buffers.Segment::start
-	IL_000b:  box [mscorlib]System.Int64
-	IL_0010:  ldarg.0 
-	IL_0011:  ldfld int64 Bless.Buffers.Segment::end
-	IL_0016:  box [mscorlib]System.Int64
-	IL_001b:  call string string::Format(string, object, object)
-	IL_0020:  ret 
-    } // end of method Segment::ToString
-
-    // method line 6
-    .method public hidebysig specialname 
-           instance default int64 get_Size ()  cil managed 
-    {
-        // Method begins at RVA 0x2153
-	// Code size 17 (0x11)
-	.maxstack 8
-	IL_0000:  ldarg.0 
-	IL_0001:  ldfld int64 Bless.Buffers.Segment::end
-	IL_0006:  ldarg.0 
-	IL_0007:  ldfld int64 Bless.Buffers.Segment::start
-	IL_000c:  sub 
-	IL_000d:  ldc.i4.1 
-	IL_000e:  conv.i8 
-	IL_000f:  add 
-	IL_0010:  ret 
-    } // end of method Segment::get_Size
-
-    // method line 7
     .method public hidebysig specialname 
-           instance default class Bless.Buffers.IBuffer get_Buffer ()  cil managed 
+           instance default class [Bless.Util]Bless.Util.List`1<class Bless.Buffers.Segment> get_List ()  cil managed 
     {
-        // Method begins at RVA 0x2165
+        // Method begins at RVA 0x2063
 	// Code size 7 (0x7)
 	.maxstack 8
 	IL_0000:  ldarg.0 
-	IL_0001:  ldfld class Bless.Buffers.IBuffer Bless.Buffers.Segment::buffer
+	IL_0001:  ldfld class [Bless.Util]Bless.Util.List`1<class Bless.Buffers.Segment> Bless.Buffers.SegmentCollection::list
 	IL_0006:  ret 
-    } // end of method Segment::get_Buffer
-
-    // method line 8
-    .method public hidebysig specialname 
-           instance default void set_Buffer (class Bless.Buffers.IBuffer 'value')  cil managed 
-    {
-        // Method begins at RVA 0x216d
-	// Code size 8 (0x8)
-	.maxstack 8
-	IL_0000:  ldarg.0 
-	IL_0001:  ldarg.1 
-	IL_0002:  stfld class Bless.Buffers.IBuffer Bless.Buffers.Segment::buffer
-	IL_0007:  ret 
-    } // end of method Segment::set_Buffer
+    } // end of method SegmentCollection::get_List
 
-    // method line 9
-    .method public hidebysig specialname 
-           instance default int64 get_Start ()  cil managed 
+    // method line 3
+    .method private hidebysig 
+           instance default void InvalidateCache ()  cil managed 
     {
-        // Method begins at RVA 0x2176
-	// Code size 7 (0x7)
+        // Method begins at RVA 0x206b
+	// Code size 16 (0x10)
 	.maxstack 8
 	IL_0000:  ldarg.0 
-	IL_0001:  ldfld int64 Bless.Buffers.Segment::start
-	IL_0006:  ret 
-    } // end of method Segment::get_Start
+	IL_0001:  ldnull 
+	IL_0002:  stfld class [Bless.Util]Bless.Util.List`1/Node<class Bless.Buffers.Segment> Bless.Buffers.SegmentCollection::cachedNode
+	IL_0007:  ldarg.0 
+	IL_0008:  ldc.i4.0 
+	IL_0009:  conv.i8 
+	IL_000a:  stfld int64 Bless.Buffers.SegmentCollection::cachedMapping
+	IL_000f:  ret 
+    } // end of method SegmentCollection::InvalidateCache
 
-    // method line 10
-    .method public hidebysig specialname 
-           instance default void set_Start (int64 'value')  cil managed 
+    // method line 4
+    .method private hidebysig 
+           instance default void SetCache (class [Bless.Util]Bless.Util.List`1/Node<class Bless.Buffers.Segment> n, int64 map)  cil managed 
     {
-        // Method begins at RVA 0x217e
-	// Code size 8 (0x8)
+        // Method begins at RVA 0x207c
+	// Code size 15 (0xf)
 	.maxstack 8
 	IL_0000:  ldarg.0 
 	IL_0001:  ldarg.1 
-	IL_0002:  stfld int64 Bless.Buffers.Segment::start
-	IL_0007:  ret 
-    } // end of method Segment::set_Start
+	IL_0002:  stfld class [Bless.Util]Bless.Util.List`1/Node<class Bless.Buffers.Segment> Bless.Buffers.SegmentCollection::cachedNode
+	IL_0007:  ldarg.0 
+	IL_0008:  ldarg.2 
+	IL_0009:  stfld int64 Bless.Buffers.SegmentCollection::cachedMapping
+	IL_000e:  ret 
+    } // end of method SegmentCollection::SetCache
 
-    // method line 11
-    .method public hidebysig specialname 
-           instance default int64 get_End ()  cil managed 
+    // method line 5
+    .method public hidebysig 
+           instance default void Append (class Bless.Buffers.Segment s)  cil managed 
     {
-        // Method begins at RVA 0x2187
-	// Code size 7 (0x7)
-	.maxstack 8
+        // Method begins at RVA 0x208c
+	// Code size 100 (0x64)
+	.maxstack 3
+	.locals init (
+		class [Bless.Util]Bless.Util.List`1/Node<class Bless.Buffers.Segment>	V_0,
+		class Bless.Buffers.Segment	V_1)
 	IL_0000:  ldarg.0 
-	IL_0001:  ldfld int64 Bless.Buffers.Segment::end
-	IL_0006:  ret 
-    } // end of method Segment::get_End
+	IL_0001:  ldfld class [Bless.Util]Bless.Util.List`1<class Bless.Buffers.Segment> Bless.Buffers.SegmentCollection::list
+	IL_0006:  callvirt instance class [Bless.Util]Bless.Util.List`1/Node<!0> class [Bless.Util]Bless.Util.List`1<class Bless.Buffers.Segment>::get_Last()
+	IL_000b:  stloc.0 
+	IL_000c:  ldloc.0 
+	IL_000d:  brfalse IL_0056
 
-    // method line 12
-    .method public hidebysig specialname 
-           instance default void set_End (int64 'value')  cil managed 
-    {
-        // Method begins at RVA 0x218f
-	// Code size 8 (0x8)
-	.maxstack 8
-	IL_0000:  ldarg.0 
-	IL_0001:  ldarg.1 
-	IL_0002:  stfld int64 Bless.Buffers.Segment::end
-	IL_0007:  ret 
-    } // end of method Segment::set_End
+	IL_0012:  ldloc.0 
+	IL_0013:  ldfld !0 class [Bless.Util]Bless.Util.List`1/Node<class Bless.Buffers.Segment>::data
+	IL_0018:  brfalse IL_0056
 
-	.property instance int64 Size ()
-	{
-		.get instance default int64 Bless.Buffers.Segment::get_Size () 
-	}
-	.property instance class Bless.Buffers.IBuffer Buffer ()
-	{
-		.get instance default class Bless.Buffers.IBuffer Bless.Buffers.Segment::get_Buffer () 
-		.set instance default void Bless.Buffers.Segment::set_Buffer (class Bless.Buffers.IBuffer 'value') 
-	}
-	.property instance int64 Start ()
-	{
-		.get instance default int64 Bless.Buffers.Segment::get_Start () 
-		.set instance default void Bless.Buffers.Segment::set_Start (int64 'value') 
-	}
-	.property instance int64 End ()
-	{
-		.get instance default int64 Bless.Buffers.Segment::get_End () 
-		.set instance default void Bless.Buffers.Segment::set_End (int64 'value') 
-	}
-  } // end of class Bless.Buffers.Segment
-}
+	IL_001d:  ldloc.0 
+	IL_001e:  ldfld !0 class [Bless.Util]Bless.Util.List`1/Node<class Bless.Buffers.Segment>::data
+	IL_0023:  stloc.1 
+	IL_0024:  ldarg.1 
+	IL_0025:  callvirt instance class Bless.Buffers.IBuffer class Bless.Buffers.Segment::get_Buffer()
+	IL_002a:  ldloc.1 
+	IL_002b:  callvirt instance class Bless.Buffers.IBuffer class Bless.Buffers.Segment::get_Buffer()
+	IL_0030:  bne.un IL_0056
 
-.namespace Bless.Buffers
-{
-  .class public auto ansi beforefieldinit SaveAsOperation
-  	extends [Bless.Util]Bless.Util.ThreadedAsyncOperation
-  	implements Bless.Buffers.ISaveState  {
-    .field  family  class Bless.Buffers.ByteBuffer byteBuffer
-    .field  family  int64 bytesSaved
-    .field  family  string savePath
-    .field  private  class [mscorlib]System.IO.FileStream fs
-    .field  private  valuetype Bless.Buffers.SaveAsOperation/SaveAsStage stageReached
+	IL_0035:  ldarg.1 
+	IL_0036:  callvirt instance int64 class Bless.Buffers.Segment::get_Start()
+	IL_003b:  ldloc.1 
+	IL_003c:  callvirt instance int64 class Bless.Buffers.Segment::get_End()
+	IL_0041:  ldc.i4.1 
+	IL_0042:  conv.i8 
+	IL_0043:  add 
+	IL_0044:  bne.un IL_0056
 
-    // method line 13
-    .method public hidebysig specialname rtspecialname 
-           instance default void '.ctor' (class Bless.Buffers.ByteBuffer bb, string fn, class [Bless.Util]Bless.Util.ProgressCallback pc, class [mscorlib]System.AsyncCallback ac, bool glibIdle)  cil managed 
-    {
-        // Method begins at RVA 0x2198
-	// Code size 41 (0x29)
-	.maxstack 8
-	IL_0000:  ldarg.0 
-	IL_0001:  ldarg.3 
-	IL_0002:  ldarg.s 4
-	IL_0004:  ldarg.s 5
-	IL_0006:  call instance void class [Bless.Util]Bless.Util.ThreadedAsyncOperation::'.ctor'(class [Bless.Util]Bless.Util.ProgressCallback, class [mscorlib]System.AsyncCallback, bool)
-	IL_000b:  ldarg.0 
-	IL_000c:  ldarg.1 
-	IL_000d:  stfld class Bless.Buffers.ByteBuffer Bless.Buffers.SaveAsOperation::byteBuffer
-	IL_0012:  ldarg.0 
-	IL_0013:  ldarg.2 
-	IL_0014:  stfld string Bless.Buffers.SaveAsOperation::savePath
-	IL_0019:  ldarg.0 
-	IL_001a:  ldnull 
-	IL_001b:  stfld class [mscorlib]System.IO.FileStream Bless.Buffers.SaveAsOperation::fs
-	IL_0020:  ldarg.0 
-	IL_0021:  ldc.i4.0 
-	IL_0022:  conv.i8 
-	IL_0023:  stfld int64 Bless.Buffers.SaveAsOperation::bytesSaved
-	IL_0028:  ret 
-    } // end of method SaveAsOperation::.ctor
+	IL_0049:  ldloc.1 
+	IL_004a:  ldarg.1 
+	IL_004b:  callvirt instance int64 class Bless.Buffers.Segment::get_End()
+	IL_0050:  callvirt instance void class Bless.Buffers.Segment::set_End(int64)
+	IL_0055:  ret 
+	IL_0056:  ldarg.0 
+	IL_0057:  ldfld class [Bless.Util]Bless.Util.List`1<class Bless.Buffers.Segment> Bless.Buffers.SegmentCollection::list
+	IL_005c:  ldarg.1 
+	IL_005d:  callvirt instance class [Bless.Util]Bless.Util.List`1/Node<!0> class [Bless.Util]Bless.Util.List`1<class Bless.Buffers.Segment>::Append(!0)
+	IL_0062:  pop 
+	IL_0063:  ret 
+    } // end of method SegmentCollection::Append
 
-    // method line 14
-    .method public final virtual hidebysig newslot specialname 
-           instance default class Bless.Buffers.ByteBuffer get_Buffer ()  cil managed 
+    // method line 6
+    .method private hidebysig 
+           instance default class [Bless.Util]Bless.Util.List`1/Node<class Bless.Buffers.Segment> InsertAfter (class [Bless.Util]Bless.Util.List`1/Node<class Bless.Buffers.Segment> n, class Bless.Buffers.Segment s)  cil managed 
     {
-        // Method begins at RVA 0x21c2
-	// Code size 7 (0x7)
-	.maxstack 8
-	IL_0000:  ldarg.0 
-	IL_0001:  ldfld class Bless.Buffers.ByteBuffer Bless.Buffers.SaveAsOperation::byteBuffer
-	IL_0006:  ret 
-    } // end of method SaveAsOperation::get_Buffer
+        // Method begins at RVA 0x20fc
+	// Code size 89 (0x59)
+	.maxstack 3
+	.locals init (
+		class Bless.Buffers.Segment	V_0)
+	IL_0000:  ldarg.1 
+	IL_0001:  brfalse IL_004b
 
-    // method line 15
-    .method public final virtual hidebysig newslot specialname 
-           instance default string get_SavePath ()  cil managed 
-    {
-        // Method begins at RVA 0x21ca
-	// Code size 7 (0x7)
-	.maxstack 8
-	IL_0000:  ldarg.0 
-	IL_0001:  ldfld string Bless.Buffers.SaveAsOperation::savePath
-	IL_0006:  ret 
-    } // end of method SaveAsOperation::get_SavePath
+	IL_0006:  ldarg.1 
+	IL_0007:  ldfld !0 class [Bless.Util]Bless.Util.List`1/Node<class Bless.Buffers.Segment>::data
+	IL_000c:  brfalse IL_004b
 
-    // method line 16
-    .method public hidebysig specialname 
-           instance default void set_SavePath (string 'value')  cil managed 
-    {
-        // Method begins at RVA 0x21d2
-	// Code size 8 (0x8)
-	.maxstack 8
-	IL_0000:  ldarg.0 
-	IL_0001:  ldarg.1 
-	IL_0002:  stfld string Bless.Buffers.SaveAsOperation::savePath
-	IL_0007:  ret 
-    } // end of method SaveAsOperation::set_SavePath
+	IL_0011:  ldarg.1 
+	IL_0012:  ldfld !0 class [Bless.Util]Bless.Util.List`1/Node<class Bless.Buffers.Segment>::data
+	IL_0017:  stloc.0 
+	IL_0018:  ldarg.2 
+	IL_0019:  callvirt instance class Bless.Buffers.IBuffer class Bless.Buffers.Segment::get_Buffer()
+	IL_001e:  ldloc.0 
+	IL_001f:  callvirt instance class Bless.Buffers.IBuffer class Bless.Buffers.Segment::get_Buffer()
+	IL_0024:  bne.un IL_004b
 
-    // method line 17
-    .method public hidebysig specialname 
-           instance default int64 get_BytesSaved ()  cil managed 
-    {
-        // Method begins at RVA 0x21db
-	// Code size 7 (0x7)
-	.maxstack 8
-	IL_0000:  ldarg.0 
-	IL_0001:  ldfld int64 Bless.Buffers.SaveAsOperation::bytesSaved
-	IL_0006:  ret 
-    } // end of method SaveAsOperation::get_BytesSaved
+	IL_0029:  ldarg.2 
+	IL_002a:  callvirt instance int64 class Bless.Buffers.Segment::get_Start()
+	IL_002f:  ldloc.0 
+	IL_0030:  callvirt instance int64 class Bless.Buffers.Segment::get_End()
+	IL_0035:  ldc.i4.1 
+	IL_0036:  conv.i8 
+	IL_0037:  add 
+	IL_0038:  bne.un IL_004b
 
-    // method line 18
-    .method public hidebysig specialname 
-           instance default valuetype Bless.Buffers.SaveAsOperation/SaveAsStage get_StageReached ()  cil managed 
-    {
-        // Method begins at RVA 0x21e3
-	// Code size 7 (0x7)
-	.maxstack 8
-	IL_0000:  ldarg.0 
-	IL_0001:  ldfld valuetype Bless.Buffers.SaveAsOperation/SaveAsStage Bless.Buffers.SaveAsOperation::stageReached
-	IL_0006:  ret 
-    } // end of method SaveAsOperation::get_StageReached
+	IL_003d:  ldloc.0 
+	IL_003e:  ldarg.2 
+	IL_003f:  callvirt instance int64 class Bless.Buffers.Segment::get_End()
+	IL_0044:  callvirt instance void class Bless.Buffers.Segment::set_End(int64)
+	IL_0049:  ldarg.1 
+	IL_004a:  ret 
+	IL_004b:  ldarg.0 
+	IL_004c:  ldfld class [Bless.Util]Bless.Util.List`1<class Bless.Buffers.Segment> Bless.Buffers.SegmentCollection::list
+	IL_0051:  ldarg.1 
+	IL_0052:  ldarg.2 
+	IL_0053:  callvirt instance class [Bless.Util]Bless.Util.List`1/Node<!0> class [Bless.Util]Bless.Util.List`1<class Bless.Buffers.Segment>::InsertAfter(class [Bless.Util]Bless.Util.List`1/Node<!0>, !0)
+	IL_0058:  ret 
+    } // end of method SegmentCollection::InsertAfter
 
-    // method line 19
-    .method family hidebysig 
-           instance default bool CheckFreeSpace (string path, int64 extraSpace)  cil managed 
+    // method line 7
+    .method private hidebysig 
+           instance default class [Bless.Util]Bless.Util.List`1/Node<class Bless.Buffers.Segment> InsertBefore (class [Bless.Util]Bless.Util.List`1/Node<class Bless.Buffers.Segment> n, class Bless.Buffers.Segment s)  cil managed 
     {
-        // Method begins at RVA 0x21ec
-	// Code size 42 (0x2a)
-	.maxstack 2
+        // Method begins at RVA 0x2164
+	// Code size 89 (0x59)
+	.maxstack 3
 	.locals init (
-		int64	V_0,
-		bool	V_1)
-	.try { // 0
-	  IL_0000:  ldarg.1 
-	  IL_0001:  call int64 class [Bless.Util]Portable::GetAvailableDiskSpace(string)
-	  IL_0006:  stloc.0 
-	  IL_0007:  ldloc.0 
-	  IL_0008:  ldarg.2 
-	  IL_0009:  add 
-	  IL_000a:  ldarg.0 
-	  IL_000b:  ldfld class Bless.Buffers.ByteBuffer Bless.Buffers.SaveAsOperation::byteBuffer
-	  IL_0010:  callvirt instance int64 class Bless.Buffers.BaseBuffer::get_Size()
-	  IL_0015:  clt 
-	  IL_0017:  ldc.i4.0 
-	  IL_0018:  ceq 
-	  IL_001a:  stloc.1 
-	  IL_001b:  leave IL_0028
+		class Bless.Buffers.Segment	V_0)
+	IL_0000:  ldarg.1 
+	IL_0001:  brfalse IL_004b
 
-	} // end .try 0
-	catch class [mscorlib]System.NotImplementedException { // 0
-	  IL_0020:  pop 
-	  IL_0021:  ldc.i4.1 
-	  IL_0022:  stloc.1 
-	  IL_0023:  leave IL_0028
+	IL_0006:  ldarg.1 
+	IL_0007:  ldfld !0 class [Bless.Util]Bless.Util.List`1/Node<class Bless.Buffers.Segment>::data
+	IL_000c:  brfalse IL_004b
 
-	} // end handler 0
-	IL_0028:  ldloc.1 
-	IL_0029:  ret 
-    } // end of method SaveAsOperation::CheckFreeSpace
+	IL_0011:  ldarg.1 
+	IL_0012:  ldfld !0 class [Bless.Util]Bless.Util.List`1/Node<class Bless.Buffers.Segment>::data
+	IL_0017:  stloc.0 
+	IL_0018:  ldarg.2 
+	IL_0019:  callvirt instance class Bless.Buffers.IBuffer class Bless.Buffers.Segment::get_Buffer()
+	IL_001e:  ldloc.0 
+	IL_001f:  callvirt instance class Bless.Buffers.IBuffer class Bless.Buffers.Segment::get_Buffer()
+	IL_0024:  bne.un IL_004b
 
-    // method line 20
-    .method family virtual hidebysig 
-           instance default bool StartProgress ()  cil managed 
-    {
-        // Method begins at RVA 0x2234
-	// Code size 72 (0x48)
-	.maxstack 3
-	IL_0000:  ldarg.0 
-	IL_0001:  ldfld class [Bless.Util]Bless.Util.ProgressCallback [Bless.Util]Bless.Util.ThreadedAsyncOperation::progressCallback
-	IL_0006:  ldstr "Saving '{0}'"
-	IL_000b:  call string class [Mono.Posix]Mono.Unix.Catalog::GetString(string)
-	IL_0010:  ldarg.0 
-	IL_0011:  call instance string class Bless.Buffers.SaveAsOperation::get_SavePath()
-	IL_0016:  call string string::Format(string, object)
-	IL_001b:  ldc.i4.3 
-	IL_001c:  callvirt instance bool class [Bless.Util]Bless.Util.ProgressCallback::Invoke(object, valuetype [Bless.Util]Bless.Util.ProgressAction)
-	IL_0021:  pop 
-	IL_0022:  ldarg.0 
-	IL_0023:  ldfld class [Bless.Util]Bless.Util.ProgressCallback [Bless.Util]Bless.Util.ThreadedAsyncOperation::progressCallback
-	IL_0028:  ldarg.0 
-	IL_0029:  ldfld int64 Bless.Buffers.SaveAsOperation::bytesSaved
-	IL_002e:  conv.r8 
-	IL_002f:  ldarg.0 
-	IL_0030:  ldfld class Bless.Buffers.ByteBuffer Bless.Buffers.SaveAsOperation::byteBuffer
-	IL_0035:  callvirt instance int64 class Bless.Buffers.BaseBuffer::get_Size()
-	IL_003a:  conv.r8 
-	IL_003b:  div 
-	IL_003c:  box [mscorlib]System.Double
-	IL_0041:  ldc.i4.0 
-	IL_0042:  callvirt instance bool class [Bless.Util]Bless.Util.ProgressCallback::Invoke(object, valuetype [Bless.Util]Bless.Util.ProgressAction)
-	IL_0047:  ret 
-    } // end of method SaveAsOperation::StartProgress
+	IL_0029:  ldarg.2 
+	IL_002a:  callvirt instance int64 class Bless.Buffers.Segment::get_End()
+	IL_002f:  ldc.i4.1 
+	IL_0030:  conv.i8 
+	IL_0031:  add 
+	IL_0032:  ldloc.0 
+	IL_0033:  callvirt instance int64 class Bless.Buffers.Segment::get_Start()
+	IL_0038:  bne.un IL_004b
+
+	IL_003d:  ldloc.0 
+	IL_003e:  ldarg.2 
+	IL_003f:  callvirt instance int64 class Bless.Buffers.Segment::get_Start()
+	IL_0044:  callvirt instance void class Bless.Buffers.Segment::set_Start(int64)
+	IL_0049:  ldarg.1 
+	IL_004a:  ret 
+	IL_004b:  ldarg.0 
+	IL_004c:  ldfld class [Bless.Util]Bless.Util.List`1<class Bless.Buffers.Segment> Bless.Buffers.SegmentCollection::list
+	IL_0051:  ldarg.1 
+	IL_0052:  ldarg.2 
+	IL_0053:  callvirt instance class [Bless.Util]Bless.Util.List`1/Node<!0> class [Bless.Util]Bless.Util.List`1<class Bless.Buffers.Segment>::InsertBefore(class [Bless.Util]Bless.Util.List`1/Node<!0>, !0)
+	IL_0058:  ret 
+    } // end of method SegmentCollection::InsertBefore
+
+    // method line 8
+    .method public hidebysig 
+           instance default class Bless.Buffers.Segment FindSegment (int64 offset, [out] int64& OutMapping, [out] class [Bless.Util]Bless.Util.List`1/Node<class Bless.Buffers.Segment>& OutNode)  cil managed 
+    {
+        // Method begins at RVA 0x21cc
+	// Code size 258 (0x102)
+	.maxstack 3
+	.locals init (
+		class Bless.Buffers.Segment	V_0,
+		int64	V_1,
+		class [Bless.Util]Bless.Util.List`1/Node<class Bless.Buffers.Segment>	V_2)
+	IL_0000:  ldarg.2 
+	IL_0001:  ldc.i4.0 
+	IL_0002:  conv.i8 
+	IL_0003:  stind.i8 
+	IL_0004:  ldarg.3 
+	IL_0005:  ldnull 
+	IL_0006:  stind.ref 
+	IL_0007:  ldarg.0 
+	IL_0008:  ldfld class [Bless.Util]Bless.Util.List`1/Node<class Bless.Buffers.Segment> Bless.Buffers.SegmentCollection::cachedNode
+	IL_000d:  brtrue IL_0037
+
+	IL_0012:  ldarg.0 
+	IL_0013:  ldfld class [Bless.Util]Bless.Util.List`1<class Bless.Buffers.Segment> Bless.Buffers.SegmentCollection::list
+	IL_0018:  callvirt instance class [Bless.Util]Bless.Util.List`1/Node<!0> class [Bless.Util]Bless.Util.List`1<class Bless.Buffers.Segment>::get_First()
+	IL_001d:  brtrue IL_0024
+
+	IL_0022:  ldnull 
+	IL_0023:  ret 
+	IL_0024:  ldarg.0 
+	IL_0025:  ldarg.0 
+	IL_0026:  ldfld class [Bless.Util]Bless.Util.List`1<class Bless.Buffers.Segment> Bless.Buffers.SegmentCollection::list
+	IL_002b:  callvirt instance class [Bless.Util]Bless.Util.List`1/Node<!0> class [Bless.Util]Bless.Util.List`1<class Bless.Buffers.Segment>::get_First()
+	IL_0030:  ldc.i4.0 
+	IL_0031:  conv.i8 
+	IL_0032:  call instance void class Bless.Buffers.SegmentCollection::SetCache(class [Bless.Util]Bless.Util.List`1/Node<class Bless.Buffers.Segment>, int64)
+	IL_0037:  ldarg.0 
+	IL_0038:  ldfld class [Bless.Util]Bless.Util.List`1/Node<class Bless.Buffers.Segment> Bless.Buffers.SegmentCollection::cachedNode
+	IL_003d:  ldfld !0 class [Bless.Util]Bless.Util.List`1/Node<class Bless.Buffers.Segment>::data
+	IL_0042:  stloc.0 
+	IL_0043:  ldarg.0 
+	IL_0044:  ldfld int64 Bless.Buffers.SegmentCollection::cachedMapping
+	IL_0049:  stloc.1 
+	IL_004a:  ldarg.0 
+	IL_004b:  ldfld class [Bless.Util]Bless.Util.List`1/Node<class Bless.Buffers.Segment> Bless.Buffers.SegmentCollection::cachedNode
+	IL_0050:  stloc.2 
+	IL_0051:  ldloc.0 
+	IL_0052:  ldarg.1 
+	IL_0053:  ldloc.1 
+	IL_0054:  callvirt instance bool class Bless.Buffers.Segment::Contains(int64, int64)
+	IL_0059:  brfalse IL_0066
+
+	IL_005e:  ldarg.2 
+	IL_005f:  ldloc.1 
+	IL_0060:  stind.i8 
+	IL_0061:  ldarg.3 
+	IL_0062:  ldloc.2 
+	IL_0063:  stind.ref 
+	IL_0064:  ldloc.0 
+	IL_0065:  ret 
+	IL_0066:  ldarg.1 
+	IL_0067:  ldloc.1 
+	IL_0068:  bge IL_00b6
+
+	IL_006d:  br IL_00a6
+
+	IL_0072:  ldloc.2 
+	IL_0073:  ldfld class [Bless.Util]Bless.Util.List`1/Node<!0> class [Bless.Util]Bless.Util.List`1/Node<class Bless.Buffers.Segment>::prev
+	IL_0078:  stloc.2 
+	IL_0079:  ldloc.2 
+	IL_007a:  ldfld !0 class [Bless.Util]Bless.Util.List`1/Node<class Bless.Buffers.Segment>::data
+	IL_007f:  stloc.0 
+	IL_0080:  ldloc.1 
+	IL_0081:  ldloc.0 
+	IL_0082:  callvirt instance int64 class Bless.Buffers.Segment::get_Size()
+	IL_0087:  sub 
+	IL_0088:  stloc.1 
+	IL_0089:  ldloc.0 
+	IL_008a:  ldarg.1 
+	IL_008b:  ldloc.1 
+	IL_008c:  callvirt instance bool class Bless.Buffers.Segment::Contains(int64, int64)
+	IL_0091:  brfalse IL_00a6
+
+	IL_0096:  ldarg.0 
+	IL_0097:  ldloc.2 
+	IL_0098:  ldloc.1 
+	IL_0099:  call instance void class Bless.Buffers.SegmentCollection::SetCache(class [Bless.Util]Bless.Util.List`1/Node<class Bless.Buffers.Segment>, int64)
+	IL_009e:  ldarg.2 
+	IL_009f:  ldloc.1 
+	IL_00a0:  stind.i8 
+	IL_00a1:  ldarg.3 
+	IL_00a2:  ldloc.2 
+	IL_00a3:  stind.ref 
+	IL_00a4:  ldloc.0 
+	IL_00a5:  ret 
+	IL_00a6:  ldloc.2 
+	IL_00a7:  ldfld class [Bless.Util]Bless.Util.List`1/Node<!0> class [Bless.Util]Bless.Util.List`1/Node<class Bless.Buffers.Segment>::prev
+	IL_00ac:  brtrue IL_0072
+
+	IL_00b1:  br IL_00fa
+
+	IL_00b6:  br IL_00ef
+
+	IL_00bb:  ldloc.1 
+	IL_00bc:  ldloc.0 
+	IL_00bd:  callvirt instance int64 class Bless.Buffers.Segment::get_Size()
+	IL_00c2:  add 
+	IL_00c3:  stloc.1 
+	IL_00c4:  ldloc.2 
+	IL_00c5:  ldfld class [Bless.Util]Bless.Util.List`1/Node<!0> class [Bless.Util]Bless.Util.List`1/Node<class Bless.Buffers.Segment>::next
+	IL_00ca:  stloc.2 
+	IL_00cb:  ldloc.2 
+	IL_00cc:  ldfld !0 class [Bless.Util]Bless.Util.List`1/Node<class Bless.Buffers.Segment>::data
+	IL_00d1:  stloc.0 
+	IL_00d2:  ldloc.0 
+	IL_00d3:  ldarg.1 
+	IL_00d4:  ldloc.1 
+	IL_00d5:  callvirt instance bool class Bless.Buffers.Segment::Contains(int64, int64)
+	IL_00da:  brfalse IL_00ef
+
+	IL_00df:  ldarg.0 
+	IL_00e0:  ldloc.2 
+	IL_00e1:  ldloc.1 
+	IL_00e2:  call instance void class Bless.Buffers.SegmentCollection::SetCache(class [Bless.Util]Bless.Util.List`1/Node<class Bless.Buffers.Segment>, int64)
+	IL_00e7:  ldarg.2 
+	IL_00e8:  ldloc.1 
+	IL_00e9:  stind.i8 
+	IL_00ea:  ldarg.3 
+	IL_00eb:  ldloc.2 
+	IL_00ec:  stind.ref 
+	IL_00ed:  ldloc.0 
+	IL_00ee:  ret 
+	IL_00ef:  ldloc.2 
+	IL_00f0:  ldfld class [Bless.Util]Bless.Util.List`1/Node<!0> class [Bless.Util]Bless.Util.List`1/Node<class Bless.Buffers.Segment>::next
+	IL_00f5:  brtrue IL_00bb
+
+	IL_00fa:  ldarg.2 
+	IL_00fb:  ldloc.1 
+	IL_00fc:  stind.i8 
+	IL_00fd:  ldarg.3 
+	IL_00fe:  ldloc.2 
+	IL_00ff:  stind.ref 
+	IL_0100:  ldnull 
+	IL_0101:  ret 
+    } // end of method SegmentCollection::FindSegment
+
+    // method line 9
+    .method public hidebysig 
+           instance default void Insert (class Bless.Buffers.SegmentCollection sc, int64 offset)  cil managed 
+    {
+        // Method begins at RVA 0x22dc
+	// Code size 319 (0x13f)
+	.maxstack 4
+	.locals init (
+		int64	V_0,
+		class [Bless.Util]Bless.Util.List`1/Node<class Bless.Buffers.Segment>	V_1,
+		class Bless.Buffers.Segment	V_2,
+		class [Bless.Util]Bless.Util.List`1<class Bless.Buffers.Segment>	V_3,
+		int32	V_4,
+		class [Bless.Util]Bless.Util.List`1/Node<class Bless.Buffers.Segment>	V_5,
+		int32	V_6,
+		class [Bless.Util]Bless.Util.List`1<class Bless.Buffers.Segment>	V_7,
+		int32	V_8,
+		class [Bless.Util]Bless.Util.List`1/Node<class Bless.Buffers.Segment>	V_9,
+		int32	V_10,
+		class Bless.Buffers.Segment	V_11,
+		class [Bless.Util]Bless.Util.List`1<class Bless.Buffers.Segment>	V_12,
+		int32	V_13,
+		class [Bless.Util]Bless.Util.List`1/Node<class Bless.Buffers.Segment>	V_14,
+		int32	V_15)
+	IL_0000:  ldarg.0 
+	IL_0001:  ldarg.2 
+	IL_0002:  ldloca.s 0
+	IL_0004:  ldloca.s 1
+	IL_0006:  call instance class Bless.Buffers.Segment class Bless.Buffers.SegmentCollection::FindSegment(int64, [out] int64&, [out] class [Bless.Util]Bless.Util.List`1/Node<class Bless.Buffers.Segment>&)
+	IL_000b:  stloc.2 
+	IL_000c:  ldloc.2 
+	IL_000d:  brtrue IL_007e
+
+	IL_0012:  ldloc.1 
+	IL_0013:  brtrue IL_0020
+
+	IL_0018:  ldarg.2 
+	IL_0019:  ldc.i4.0 
+	IL_001a:  conv.i8 
+	IL_001b:  beq IL_0039
+
+	IL_0020:  ldloc.1 
+	IL_0021:  brfalse IL_007d
+
+	IL_0026:  ldarg.2 
+	IL_0027:  ldloc.0 
+	IL_0028:  ldloc.1 
+	IL_0029:  ldfld !0 class [Bless.Util]Bless.Util.List`1/Node<class Bless.Buffers.Segment>::data
+	IL_002e:  callvirt instance int64 class Bless.Buffers.Segment::get_Size()
+	IL_0033:  add 
+	IL_0034:  bne.un IL_007d
+
+	IL_0039:  ldarg.1 
+	IL_003a:  callvirt instance class [Bless.Util]Bless.Util.List`1<class Bless.Buffers.Segment> class Bless.Buffers.SegmentCollection::get_List()
+	IL_003f:  stloc.3 
+	IL_0040:  ldloc.3 
+	IL_0041:  callvirt instance int32 class [Bless.Util]Bless.Util.List`1<class Bless.Buffers.Segment>::get_Count()
+	IL_0046:  stloc.s 4
+	IL_0048:  ldloc.3 
+	IL_0049:  callvirt instance class [Bless.Util]Bless.Util.List`1/Node<!0> class [Bless.Util]Bless.Util.List`1<class Bless.Buffers.Segment>::get_First()
+	IL_004e:  stloc.s 5
+	IL_0050:  ldc.i4.0 
+	IL_0051:  stloc.s 6
+	IL_0053:  br IL_0074
+
+	IL_0058:  ldarg.0 
+	IL_0059:  ldloc.s 5
+	IL_005b:  ldfld !0 class [Bless.Util]Bless.Util.List`1/Node<class Bless.Buffers.Segment>::data
+	IL_0060:  call instance void class Bless.Buffers.SegmentCollection::Append(class Bless.Buffers.Segment)
+	IL_0065:  ldloc.s 5
+	IL_0067:  ldfld class [Bless.Util]Bless.Util.List`1/Node<!0> class [Bless.Util]Bless.Util.List`1/Node<class Bless.Buffers.Segment>::next
+	IL_006c:  stloc.s 5
+	IL_006e:  ldloc.s 6
+	IL_0070:  ldc.i4.1 
+	IL_0071:  add 
+	IL_0072:  stloc.s 6
+	IL_0074:  ldloc.s 6
+	IL_0076:  ldloc.s 4
+	IL_0078:  blt IL_0058
+
+	IL_007d:  ret 
+	IL_007e:  ldloc.0 
+	IL_007f:  ldarg.2 
+	IL_0080:  bne.un IL_00db
+
+	IL_0085:  ldarg.1 
+	IL_0086:  callvirt instance class [Bless.Util]Bless.Util.List`1<class Bless.Buffers.Segment> class Bless.Buffers.SegmentCollection::get_List()
+	IL_008b:  stloc.s 7
+	IL_008d:  ldloc.s 7
+	IL_008f:  callvirt instance int32 class [Bless.Util]Bless.Util.List`1<class Bless.Buffers.Segment>::get_Count()
+	IL_0094:  stloc.s 8
+	IL_0096:  ldloc.s 7
+	IL_0098:  callvirt instance class [Bless.Util]Bless.Util.List`1/Node<!0> class [Bless.Util]Bless.Util.List`1<class Bless.Buffers.Segment>::get_Last()
+	IL_009d:  stloc.s 9
+	IL_009f:  ldc.i4.0 
+	IL_00a0:  stloc.s 10
+	IL_00a2:  br IL_00c5
+
+	IL_00a7:  ldarg.0 
+	IL_00a8:  ldloc.1 
+	IL_00a9:  ldloc.s 9
+	IL_00ab:  ldfld !0 class [Bless.Util]Bless.Util.List`1/Node<class Bless.Buffers.Segment>::data
+	IL_00b0:  call instance class [Bless.Util]Bless.Util.List`1/Node<class Bless.Buffers.Segment> class Bless.Buffers.SegmentCollection::InsertBefore(class [Bless.Util]Bless.Util.List`1/Node<class Bless.Buffers.Segment>, class Bless.Buffers.Segment)
+	IL_00b5:  stloc.1 
+	IL_00b6:  ldloc.s 9
+	IL_00b8:  ldfld class [Bless.Util]Bless.Util.List`1/Node<!0> class [Bless.Util]Bless.Util.List`1/Node<class Bless.Buffers.Segment>::prev
+	IL_00bd:  stloc.s 9
+	IL_00bf:  ldloc.s 10
+	IL_00c1:  ldc.i4.1 
+	IL_00c2:  add 
+	IL_00c3:  stloc.s 10
+	IL_00c5:  ldloc.s 10
+	IL_00c7:  ldloc.s 8
+	IL_00c9:  blt IL_00a7
+
+	IL_00ce:  ldarg.0 
+	IL_00cf:  ldloc.1 
+	IL_00d0:  ldloc.0 
+	IL_00d1:  call instance void class Bless.Buffers.SegmentCollection::SetCache(class [Bless.Util]Bless.Util.List`1/Node<class Bless.Buffers.Segment>, int64)
+	IL_00d6:  br IL_013e
+
+	IL_00db:  ldloc.2 
+	IL_00dc:  ldarg.2 
+	IL_00dd:  ldloc.0 
+	IL_00de:  sub 
+	IL_00df:  callvirt instance class Bless.Buffers.Segment class Bless.Buffers.Segment::SplitAt(int64)
+	IL_00e4:  stloc.s 11
+	IL_00e6:  ldarg.0 
+	IL_00e7:  ldfld class [Bless.Util]Bless.Util.List`1<class Bless.Buffers.Segment> Bless.Buffers.SegmentCollection::list
+	IL_00ec:  ldloc.1 
+	IL_00ed:  ldloc.s 11
+	IL_00ef:  callvirt instance class [Bless.Util]Bless.Util.List`1/Node<!0> class [Bless.Util]Bless.Util.List`1<class Bless.Buffers.Segment>::InsertAfter(class [Bless.Util]Bless.Util.List`1/Node<!0>, !0)
+	IL_00f4:  pop 
+	IL_00f5:  ldarg.1 
+	IL_00f6:  callvirt instance class [Bless.Util]Bless.Util.List`1<class Bless.Buffers.Segment> class Bless.Buffers.SegmentCollection::get_List()
+	IL_00fb:  stloc.s 12
+	IL_00fd:  ldloc.s 12
+	IL_00ff:  callvirt instance int32 class [Bless.Util]Bless.Util.List`1<class Bless.Buffers.Segment>::get_Count()
+	IL_0104:  stloc.s 13
+	IL_0106:  ldloc.s 12
+	IL_0108:  callvirt instance class [Bless.Util]Bless.Util.List`1/Node<!0> class [Bless.Util]Bless.Util.List`1<class Bless.Buffers.Segment>::get_First()
+	IL_010d:  stloc.s 14
+	IL_010f:  ldc.i4.0 
+	IL_0110:  stloc.s 15
+	IL_0112:  br IL_0135
 
-    // method line 21
-    .method family virtual hidebysig 
-           instance default bool UpdateProgress ()  cil managed 
-    {
-        // Method begins at RVA 0x2288
-	// Code size 38 (0x26)
-	.maxstack 8
-	IL_0000:  ldarg.0 
-	IL_0001:  ldfld class [Bless.Util]Bless.Util.ProgressCallback [Bless.Util]Bless.Util.ThreadedAsyncOperation::progressCallback
-	IL_0006:  ldarg.0 
-	IL_0007:  ldfld int64 Bless.Buffers.SaveAsOperation::bytesSaved
-	IL_000c:  conv.r8 
-	IL_000d:  ldarg.0 
-	IL_000e:  ldfld class Bless.Buffers.ByteBuffer Bless.Buffers.SaveAsOperation::byteBuffer
-	IL_0013:  callvirt instance int64 class Bless.Buffers.BaseBuffer::get_Size()
-	IL_0018:  conv.r8 
-	IL_0019:  div 
-	IL_001a:  box [mscorlib]System.Double
-	IL_001f:  ldc.i4.2 
-	IL_0020:  callvirt instance bool class [Bless.Util]Bless.Util.ProgressCallback::Invoke(object, valuetype [Bless.Util]Bless.Util.ProgressAction)
-	IL_0025:  ret 
-    } // end of method SaveAsOperation::UpdateProgress
+	IL_0117:  ldarg.0 
+	IL_0118:  ldloc.1 
+	IL_0119:  ldloc.s 14
+	IL_011b:  ldfld !0 class [Bless.Util]Bless.Util.List`1/Node<class Bless.Buffers.Segment>::data
+	IL_0120:  call instance class [Bless.Util]Bless.Util.List`1/Node<class Bless.Buffers.Segment> class Bless.Buffers.SegmentCollection::InsertAfter(class [Bless.Util]Bless.Util.List`1/Node<class Bless.Buffers.Segment>, class Bless.Buffers.Segment)
+	IL_0125:  stloc.1 
+	IL_0126:  ldloc.s 14
+	IL_0128:  ldfld class [Bless.Util]Bless.Util.List`1/Node<!0> class [Bless.Util]Bless.Util.List`1/Node<class Bless.Buffers.Segment>::next
+	IL_012d:  stloc.s 14
+	IL_012f:  ldloc.s 15
+	IL_0131:  ldc.i4.1 
+	IL_0132:  add 
+	IL_0133:  stloc.s 15
+	IL_0135:  ldloc.s 15
+	IL_0137:  ldloc.s 13
+	IL_0139:  blt IL_0117
 
-    // method line 22
-    .method family virtual hidebysig 
-           instance default bool EndProgress ()  cil managed 
-    {
-        // Method begins at RVA 0x22af
-	// Code size 38 (0x26)
-	.maxstack 8
-	IL_0000:  ldarg.0 
-	IL_0001:  ldfld class [Bless.Util]Bless.Util.ProgressCallback [Bless.Util]Bless.Util.ThreadedAsyncOperation::progressCallback
-	IL_0006:  ldarg.0 
-	IL_0007:  ldfld int64 Bless.Buffers.SaveAsOperation::bytesSaved
-	IL_000c:  conv.r8 
-	IL_000d:  ldarg.0 
-	IL_000e:  ldfld class Bless.Buffers.ByteBuffer Bless.Buffers.SaveAsOperation::byteBuffer
-	IL_0013:  callvirt instance int64 class Bless.Buffers.BaseBuffer::get_Size()
-	IL_0018:  conv.r8 
-	IL_0019:  div 
-	IL_001a:  box [mscorlib]System.Double
-	IL_001f:  ldc.i4.5 
-	IL_0020:  callvirt instance bool class [Bless.Util]Bless.Util.ProgressCallback::Invoke(object, valuetype [Bless.Util]Bless.Util.ProgressAction)
-	IL_0025:  ret 
-    } // end of method SaveAsOperation::EndProgress
+	IL_013e:  ret 
+    } // end of method SegmentCollection::Insert
 
-    // method line 23
-    .method family virtual hidebysig 
-           instance default void DoOperation ()  cil managed 
+    // method line 10
+    .method public hidebysig 
+           instance default class Bless.Buffers.SegmentCollection DeleteRange (int64 pos1, int64 pos2)  cil managed 
     {
-        // Method begins at RVA 0x22d8
-	// Code size 416 (0x1a0)
-	.maxstack 6
+        // Method begins at RVA 0x2428
+	// Code size 492 (0x1ec)
+	.maxstack 4
 	.locals init (
-		string	V_0,
-		unsigned int8[]	V_1,
+		int64	V_0,
+		int64	V_1,
 		class [Bless.Util]Bless.Util.List`1/Node<class Bless.Buffers.Segment>	V_2,
-		class Bless.Buffers.Segment	V_3,
-		int64	V_4,
-		int64	V_5,
-		int32	V_6,
-		int64	V_7)
+		class [Bless.Util]Bless.Util.List`1/Node<class Bless.Buffers.Segment>	V_3,
+		class Bless.Buffers.Segment	V_4,
+		class Bless.Buffers.Segment	V_5,
+		bool	V_6,
+		class Bless.Buffers.Segment	V_7,
+		class Bless.Buffers.Segment	V_8,
+		class Bless.Buffers.Segment	V_9,
+		class Bless.Buffers.SegmentCollection	V_10,
+		class Bless.Buffers.Segment	V_11,
+		class [Bless.Util]Bless.Util.List`1/Node<class Bless.Buffers.Segment>	V_12,
+		class Bless.Buffers.Segment	V_13,
+		class Bless.Buffers.Segment	V_14,
+		class Bless.Buffers.SegmentCollection	V_15,
+		class [Bless.Util]Bless.Util.List`1/Node<class Bless.Buffers.Segment>	V_16)
 	IL_0000:  ldarg.0 
-	IL_0001:  ldc.i4.0 
-	IL_0002:  stfld valuetype Bless.Buffers.SaveAsOperation/SaveAsStage Bless.Buffers.SaveAsOperation::stageReached
-	IL_0007:  ldarg.0 
-	IL_0008:  ldarg.0 
-	IL_0009:  ldfld string Bless.Buffers.SaveAsOperation::savePath
-	IL_000e:  call string class [mscorlib]System.IO.Path::GetDirectoryName(string)
-	IL_0013:  ldc.i4.0 
-	IL_0014:  conv.i8 
-	IL_0015:  call instance bool class Bless.Buffers.SaveAsOperation::CheckFreeSpace(string, int64)
-	IL_001a:  brtrue IL_003c
+	IL_0001:  ldarg.2 
+	IL_0002:  ldloca.s 1
+	IL_0004:  ldloca.s 3
+	IL_0006:  call instance class Bless.Buffers.Segment class Bless.Buffers.SegmentCollection::FindSegment(int64, [out] int64&, [out] class [Bless.Util]Bless.Util.List`1/Node<class Bless.Buffers.Segment>&)
+	IL_000b:  stloc.s 4
+	IL_000d:  ldarg.0 
+	IL_000e:  ldarg.1 
+	IL_000f:  ldloca.s 0
+	IL_0011:  ldloca.s 2
+	IL_0013:  call instance class Bless.Buffers.Segment class Bless.Buffers.SegmentCollection::FindSegment(int64, [out] int64&, [out] class [Bless.Util]Bless.Util.List`1/Node<class Bless.Buffers.Segment>&)
+	IL_0018:  stloc.s 5
+	IL_001a:  ldloc.s 5
+	IL_001c:  brfalse IL_0028
 
-	IL_001f:  ldstr "There is not enough free space on the device to save file '{0}'."
-	IL_0024:  call string class [Mono.Posix]Mono.Unix.Catalog::GetString(string)
-	IL_0029:  ldarg.0 
-	IL_002a:  ldfld string Bless.Buffers.SaveAsOperation::savePath
-	IL_002f:  call string string::Format(string, object)
-	IL_0034:  stloc.0 
-	IL_0035:  ldloc.0 
-	IL_0036:  newobj instance void class [mscorlib]System.IO.IOException::'.ctor'(string)
-	IL_003b:  throw 
-	IL_003c:  ldarg.0 
-	IL_003d:  ldarg.0 
-	IL_003e:  ldfld string Bless.Buffers.SaveAsOperation::savePath
-	IL_0043:  ldc.i4.6 
-	IL_0044:  ldc.i4.2 
-	IL_0045:  newobj instance void class [mscorlib]System.IO.FileStream::'.ctor'(string, valuetype [mscorlib]System.IO.FileMode, valuetype [mscorlib]System.IO.FileAccess)
-	IL_004a:  stfld class [mscorlib]System.IO.FileStream Bless.Buffers.SaveAsOperation::fs
-	IL_004f:  ldarg.0 
-	IL_0050:  ldfld class [mscorlib]System.IO.FileStream Bless.Buffers.SaveAsOperation::fs
-	IL_0055:  callvirt instance void class [mscorlib]System.IO.Stream::Close()
-	IL_005a:  ldarg.0 
-	IL_005b:  ldarg.0 
-	IL_005c:  ldfld string Bless.Buffers.SaveAsOperation::savePath
-	IL_0061:  ldc.i4.2 
-	IL_0062:  ldc.i4.2 
-	IL_0063:  newobj instance void class [mscorlib]System.IO.FileStream::'.ctor'(string, valuetype [mscorlib]System.IO.FileMode, valuetype [mscorlib]System.IO.FileAccess)
-	IL_0068:  stfld class [mscorlib]System.IO.FileStream Bless.Buffers.SaveAsOperation::fs
-	IL_006d:  ldarg.0 
-	IL_006e:  ldc.i4.1 
-	IL_006f:  stfld valuetype Bless.Buffers.SaveAsOperation/SaveAsStage Bless.Buffers.SaveAsOperation::stageReached
-	IL_0074:  ldc.i4 65535
-	IL_0079:  newarr [mscorlib]System.Byte
-	IL_007e:  stloc.1 
-	IL_007f:  ldarg.0 
-	IL_0080:  ldfld class Bless.Buffers.ByteBuffer Bless.Buffers.SaveAsOperation::byteBuffer
-	IL_0085:  ldfld class Bless.Buffers.SegmentCollection Bless.Buffers.ByteBuffer::segCol
-	IL_008a:  callvirt instance class [Bless.Util]Bless.Util.List`1<class Bless.Buffers.Segment> class Bless.Buffers.SegmentCollection::get_List()
-	IL_008f:  callvirt instance class [Bless.Util]Bless.Util.List`1/Node<!0> class [Bless.Util]Bless.Util.List`1<class Bless.Buffers.Segment>::get_First()
-	IL_0094:  stloc.2 
-	IL_0095:  br IL_017c
+	IL_0021:  ldloc.s 4
+	IL_0023:  brtrue IL_002a
 
-	IL_009a:  ldloc.2 
-	IL_009b:  ldfld !0 class [Bless.Util]Bless.Util.List`1/Node<class Bless.Buffers.Segment>::data
-	IL_00a0:  stloc.3 
-	IL_00a1:  ldloc.3 
-	IL_00a2:  callvirt instance int64 class Bless.Buffers.Segment::get_Size()
-	IL_00a7:  stloc.s 4
-	IL_00a9:  ldloc.s 4
-	IL_00ab:  ldc.i4 65535
-	IL_00b0:  conv.i8 
-	IL_00b1:  div 
-	IL_00b2:  stloc.s 5
-	IL_00b4:  ldloc.s 4
-	IL_00b6:  ldc.i4 65535
-	IL_00bb:  conv.i8 
-	IL_00bc:  rem 
-	IL_00bd:  conv.i4 
-	IL_00be:  stloc.s 6
-	IL_00c0:  ldc.i4.0 
-	IL_00c1:  conv.i8 
-	IL_00c2:  stloc.s 7
-	IL_00c4:  br IL_0129
+	IL_0028:  ldnull 
+	IL_0029:  ret 
+	IL_002a:  ldloc.2 
+	IL_002b:  ldloc.3 
+	IL_002c:  call bool object::ReferenceEquals(object, object)
+	IL_0031:  brfalse IL_00f3
 
-	IL_00c9:  ldloc.3 
-	IL_00ca:  callvirt instance class Bless.Buffers.IBuffer class Bless.Buffers.Segment::get_Buffer()
-	IL_00cf:  ldloc.1 
-	IL_00d0:  ldc.i4.0 
-	IL_00d1:  conv.i8 
-	IL_00d2:  ldloc.3 
-	IL_00d3:  callvirt instance int64 class Bless.Buffers.Segment::get_Start()
-	IL_00d8:  ldloc.s 7
-	IL_00da:  ldc.i4 65535
-	IL_00df:  conv.i8 
-	IL_00e0:  mul 
-	IL_00e1:  add 
-	IL_00e2:  ldc.i4 65535
-	IL_00e7:  conv.i8 
-	IL_00e8:  callvirt instance int64 class Bless.Buffers.IBuffer::Read(unsigned int8[], int64, int64, int64)
-	IL_00ed:  pop 
-	IL_00ee:  ldarg.0 
-	IL_00ef:  ldfld class [mscorlib]System.IO.FileStream Bless.Buffers.SaveAsOperation::fs
-	IL_00f4:  ldloc.1 
-	IL_00f5:  ldc.i4.0 
-	IL_00f6:  ldc.i4 65535
-	IL_00fb:  callvirt instance void class [mscorlib]System.IO.Stream::Write(unsigned int8[], int32, int32)
-	IL_0100:  ldarg.0 
-	IL_0101:  ldloc.s 7
-	IL_0103:  ldc.i4.1 
-	IL_0104:  conv.i8 
-	IL_0105:  add 
-	IL_0106:  ldc.i4 65535
-	IL_010b:  conv.i8 
-	IL_010c:  mul 
-	IL_010d:  stfld int64 Bless.Buffers.SaveAsOperation::bytesSaved
-	IL_0112:  ldarg.0 
-	IL_0113:  ldfld bool [Bless.Util]Bless.Util.ThreadedAsyncOperation::cancelled
-	IL_0118:  brfalse IL_0122
+	IL_0036:  ldc.i4.0 
+	IL_0037:  stloc.s 6
+	IL_0039:  ldloc.s 5
+	IL_003b:  ldarg.1 
+	IL_003c:  ldloc.0 
+	IL_003d:  sub 
+	IL_003e:  callvirt instance class Bless.Buffers.Segment class Bless.Buffers.Segment::SplitAt(int64)
+	IL_0043:  stloc.s 7
+	IL_0045:  ldloc.s 7
+	IL_0047:  brtrue IL_0053
+
+	IL_004c:  ldloc.s 5
+	IL_004e:  stloc.s 7
+	IL_0050:  ldc.i4.1 
+	IL_0051:  stloc.s 6
+	IL_0053:  ldloc.s 7
+	IL_0055:  ldarg.2 
+	IL_0056:  ldarg.1 
+	IL_0057:  sub 
+	IL_0058:  ldc.i4.1 
+	IL_0059:  conv.i8 
+	IL_005a:  add 
+	IL_005b:  callvirt instance class Bless.Buffers.Segment class Bless.Buffers.Segment::SplitAt(int64)
+	IL_0060:  stloc.s 8
+	IL_0062:  ldloc.s 8
+	IL_0064:  brfalse IL_0078
 
-	IL_011d:  br IL_0132
+	IL_0069:  ldarg.0 
+	IL_006a:  ldfld class [Bless.Util]Bless.Util.List`1<class Bless.Buffers.Segment> Bless.Buffers.SegmentCollection::list
+	IL_006f:  ldloc.2 
+	IL_0070:  ldloc.s 8
+	IL_0072:  callvirt instance class [Bless.Util]Bless.Util.List`1/Node<!0> class [Bless.Util]Bless.Util.List`1<class Bless.Buffers.Segment>::InsertAfter(class [Bless.Util]Bless.Util.List`1/Node<!0>, !0)
+	IL_0077:  pop 
+	IL_0078:  ldloc.s 6
+	IL_007a:  brfalse IL_00e0
 
-	IL_0122:  ldloc.s 7
-	IL_0124:  ldc.i4.1 
-	IL_0125:  conv.i8 
-	IL_0126:  add 
-	IL_0127:  stloc.s 7
-	IL_0129:  ldloc.s 7
-	IL_012b:  ldloc.s 5
-	IL_012d:  blt IL_00c9
+	IL_007f:  ldloc.2 
+	IL_0080:  ldfld class [Bless.Util]Bless.Util.List`1/Node<!0> class [Bless.Util]Bless.Util.List`1/Node<class Bless.Buffers.Segment>::next
+	IL_0085:  brfalse IL_009c
 
-	IL_0132:  ldloc.s 6
-	IL_0134:  brfalse IL_0175
+	IL_008a:  ldarg.0 
+	IL_008b:  ldloc.2 
+	IL_008c:  ldfld class [Bless.Util]Bless.Util.List`1/Node<!0> class [Bless.Util]Bless.Util.List`1/Node<class Bless.Buffers.Segment>::next
+	IL_0091:  ldloc.0 
+	IL_0092:  call instance void class Bless.Buffers.SegmentCollection::SetCache(class [Bless.Util]Bless.Util.List`1/Node<class Bless.Buffers.Segment>, int64)
+	IL_0097:  br IL_00d4
 
-	IL_0139:  ldarg.0 
-	IL_013a:  ldfld bool [Bless.Util]Bless.Util.ThreadedAsyncOperation::cancelled
-	IL_013f:  brtrue IL_0175
+	IL_009c:  ldloc.2 
+	IL_009d:  ldfld class [Bless.Util]Bless.Util.List`1/Node<!0> class [Bless.Util]Bless.Util.List`1/Node<class Bless.Buffers.Segment>::prev
+	IL_00a2:  brfalse IL_00ce
 
-	IL_0144:  ldloc.3 
-	IL_0145:  callvirt instance class Bless.Buffers.IBuffer class Bless.Buffers.Segment::get_Buffer()
-	IL_014a:  ldloc.1 
-	IL_014b:  ldc.i4.0 
-	IL_014c:  conv.i8 
-	IL_014d:  ldloc.3 
-	IL_014e:  callvirt instance int64 class Bless.Buffers.Segment::get_Start()
-	IL_0153:  ldloc.s 7
-	IL_0155:  ldc.i4 65535
-	IL_015a:  conv.i8 
-	IL_015b:  mul 
-	IL_015c:  add 
-	IL_015d:  ldloc.s 6
-	IL_015f:  conv.i8 
-	IL_0160:  callvirt instance int64 class Bless.Buffers.IBuffer::Read(unsigned int8[], int64, int64, int64)
-	IL_0165:  pop 
-	IL_0166:  ldarg.0 
-	IL_0167:  ldfld class [mscorlib]System.IO.FileStream Bless.Buffers.SaveAsOperation::fs
-	IL_016c:  ldloc.1 
-	IL_016d:  ldc.i4.0 
-	IL_016e:  ldloc.s 6
-	IL_0170:  callvirt instance void class [mscorlib]System.IO.Stream::Write(unsigned int8[], int32, int32)
-	IL_0175:  ldloc.2 
-	IL_0176:  ldfld class [Bless.Util]Bless.Util.List`1/Node<!0> class [Bless.Util]Bless.Util.List`1/Node<class Bless.Buffers.Segment>::next
-	IL_017b:  stloc.2 
-	IL_017c:  ldloc.2 
-	IL_017d:  brfalse IL_018d
+	IL_00a7:  ldloc.2 
+	IL_00a8:  ldfld class [Bless.Util]Bless.Util.List`1/Node<!0> class [Bless.Util]Bless.Util.List`1/Node<class Bless.Buffers.Segment>::prev
+	IL_00ad:  ldfld !0 class [Bless.Util]Bless.Util.List`1/Node<class Bless.Buffers.Segment>::data
+	IL_00b2:  stloc.s 9
+	IL_00b4:  ldarg.0 
+	IL_00b5:  ldloc.2 
+	IL_00b6:  ldfld class [Bless.Util]Bless.Util.List`1/Node<!0> class [Bless.Util]Bless.Util.List`1/Node<class Bless.Buffers.Segment>::prev
+	IL_00bb:  ldloc.0 
+	IL_00bc:  ldloc.s 9
+	IL_00be:  callvirt instance int64 class Bless.Buffers.Segment::get_Size()
+	IL_00c3:  sub 
+	IL_00c4:  call instance void class Bless.Buffers.SegmentCollection::SetCache(class [Bless.Util]Bless.Util.List`1/Node<class Bless.Buffers.Segment>, int64)
+	IL_00c9:  br IL_00d4
 
-	IL_0182:  ldarg.0 
-	IL_0183:  ldfld bool [Bless.Util]Bless.Util.ThreadedAsyncOperation::cancelled
-	IL_0188:  brfalse IL_009a
+	IL_00ce:  ldarg.0 
+	IL_00cf:  call instance void class Bless.Buffers.SegmentCollection::InvalidateCache()
+	IL_00d4:  ldarg.0 
+	IL_00d5:  ldfld class [Bless.Util]Bless.Util.List`1<class Bless.Buffers.Segment> Bless.Buffers.SegmentCollection::list
+	IL_00da:  ldloc.2 
+	IL_00db:  callvirt instance void class [Bless.Util]Bless.Util.List`1<class Bless.Buffers.Segment>::Remove(class [Bless.Util]Bless.Util.List`1/Node<!0>)
+	IL_00e0:  newobj instance void class Bless.Buffers.SegmentCollection::'.ctor'()
+	IL_00e5:  stloc.s 10
+	IL_00e7:  ldloc.s 10
+	IL_00e9:  ldloc.s 7
+	IL_00eb:  callvirt instance void class Bless.Buffers.SegmentCollection::Append(class Bless.Buffers.Segment)
+	IL_00f0:  ldloc.s 10
+	IL_00f2:  ret 
+	IL_00f3:  ldloc.s 4
+	IL_00f5:  ldarg.2 
+	IL_00f6:  ldloc.1 
+	IL_00f7:  sub 
+	IL_00f8:  ldc.i4.1 
+	IL_00f9:  conv.i8 
+	IL_00fa:  add 
+	IL_00fb:  callvirt instance class Bless.Buffers.Segment class Bless.Buffers.Segment::SplitAt(int64)
+	IL_0100:  stloc.s 11
+	IL_0102:  ldloc.s 11
+	IL_0104:  brtrue IL_0112
 
-	IL_018d:  ldarg.0 
-	IL_018e:  ldfld class [mscorlib]System.IO.FileStream Bless.Buffers.SaveAsOperation::fs
-	IL_0193:  callvirt instance void class [mscorlib]System.IO.Stream::Close()
-	IL_0198:  ldarg.0 
-	IL_0199:  ldnull 
-	IL_019a:  stfld class [mscorlib]System.IO.FileStream Bless.Buffers.SaveAsOperation::fs
-	IL_019f:  ret 
-    } // end of method SaveAsOperation::DoOperation
+	IL_0109:  ldloc.s 4
+	IL_010b:  stloc.s 11
+	IL_010d:  br IL_0121
 
-    // method line 24
-    .method family virtual hidebysig 
-           instance default void EndOperation ()  cil managed 
-    {
-        // Method begins at RVA 0x2484
-	// Code size 30 (0x1e)
-	.maxstack 8
-	IL_0000:  ldarg.0 
-	IL_0001:  ldfld class [mscorlib]System.IO.FileStream Bless.Buffers.SaveAsOperation::fs
-	IL_0006:  brfalse IL_001d
+	IL_0112:  ldarg.0 
+	IL_0113:  ldfld class [Bless.Util]Bless.Util.List`1<class Bless.Buffers.Segment> Bless.Buffers.SegmentCollection::list
+	IL_0118:  ldloc.3 
+	IL_0119:  ldloc.s 11
+	IL_011b:  callvirt instance class [Bless.Util]Bless.Util.List`1/Node<!0> class [Bless.Util]Bless.Util.List`1<class Bless.Buffers.Segment>::InsertAfter(class [Bless.Util]Bless.Util.List`1/Node<!0>, !0)
+	IL_0120:  pop 
+	IL_0121:  ldloc.2 
+	IL_0122:  ldfld class [Bless.Util]Bless.Util.List`1/Node<!0> class [Bless.Util]Bless.Util.List`1/Node<class Bless.Buffers.Segment>::next
+	IL_0127:  stloc.s 12
+	IL_0129:  ldloc.s 5
+	IL_012b:  ldarg.1 
+	IL_012c:  ldloc.0 
+	IL_012d:  sub 
+	IL_012e:  callvirt instance class Bless.Buffers.Segment class Bless.Buffers.Segment::SplitAt(int64)
+	IL_0133:  stloc.s 13
+	IL_0135:  ldloc.s 13
+	IL_0137:  brtrue IL_0184
 
-	IL_000b:  ldarg.0 
-	IL_000c:  ldfld class [mscorlib]System.IO.FileStream Bless.Buffers.SaveAsOperation::fs
-	IL_0011:  callvirt instance void class [mscorlib]System.IO.Stream::Close()
-	IL_0016:  ldarg.0 
-	IL_0017:  ldnull 
-	IL_0018:  stfld class [mscorlib]System.IO.FileStream Bless.Buffers.SaveAsOperation::fs
-	IL_001d:  ret 
-    } // end of method SaveAsOperation::EndOperation
+	IL_013c:  ldloc.s 5
+	IL_013e:  stloc.s 13
+	IL_0140:  ldloc.2 
+	IL_0141:  ldfld class [Bless.Util]Bless.Util.List`1/Node<!0> class [Bless.Util]Bless.Util.List`1/Node<class Bless.Buffers.Segment>::prev
+	IL_0146:  brfalse IL_0172
 
-    // method line 25
-    .method private final virtual hidebysig newslot strict 
-           instance default valuetype [Bless.Util]Bless.Util.ThreadedAsyncOperation/OperationResult Bless.Buffers.ISaveState.get_Result ()  cil managed 
-    {
-        // Method begins at RVA 0x24a3
-	.override Could not decode method override class Bless.Buffers.ISaveState::get_Result due to (null)
-	// Code size 7 (0x7)
-	.maxstack 8
-	IL_0000:  ldarg.0 
-	IL_0001:  call instance valuetype [Bless.Util]Bless.Util.ThreadedAsyncOperation/OperationResult class [Bless.Util]Bless.Util.ThreadedAsyncOperation::get_Result()
-	IL_0006:  ret 
-    } // end of method SaveAsOperation::Bless.Buffers.ISaveState.get_Result
+	IL_014b:  ldloc.2 
+	IL_014c:  ldfld class [Bless.Util]Bless.Util.List`1/Node<!0> class [Bless.Util]Bless.Util.List`1/Node<class Bless.Buffers.Segment>::prev
+	IL_0151:  ldfld !0 class [Bless.Util]Bless.Util.List`1/Node<class Bless.Buffers.Segment>::data
+	IL_0156:  stloc.s 14
+	IL_0158:  ldarg.0 
+	IL_0159:  ldloc.2 
+	IL_015a:  ldfld class [Bless.Util]Bless.Util.List`1/Node<!0> class [Bless.Util]Bless.Util.List`1/Node<class Bless.Buffers.Segment>::prev
+	IL_015f:  ldloc.0 
+	IL_0160:  ldloc.s 14
+	IL_0162:  callvirt instance int64 class Bless.Buffers.Segment::get_Size()
+	IL_0167:  sub 
+	IL_0168:  call instance void class Bless.Buffers.SegmentCollection::SetCache(class [Bless.Util]Bless.Util.List`1/Node<class Bless.Buffers.Segment>, int64)
+	IL_016d:  br IL_0178
 
-    // method line 26
-    .method private final virtual hidebysig newslot strict 
-           instance default class [mscorlib]System.Exception Bless.Buffers.ISaveState.get_ThreadException ()  cil managed 
-    {
-        // Method begins at RVA 0x24ab
-	.override Could not decode method override class Bless.Buffers.ISaveState::get_ThreadException due to (null)
-	// Code size 7 (0x7)
-	.maxstack 8
-	IL_0000:  ldarg.0 
-	IL_0001:  call instance class [mscorlib]System.Exception class [Bless.Util]Bless.Util.ThreadedAsyncOperation::get_ThreadException()
-	IL_0006:  ret 
-    } // end of method SaveAsOperation::Bless.Buffers.ISaveState.get_ThreadException
+	IL_0172:  ldarg.0 
+	IL_0173:  call instance void class Bless.Buffers.SegmentCollection::InvalidateCache()
+	IL_0178:  ldarg.0 
+	IL_0179:  ldfld class [Bless.Util]Bless.Util.List`1<class Bless.Buffers.Segment> Bless.Buffers.SegmentCollection::list
+	IL_017e:  ldloc.2 
+	IL_017f:  callvirt instance void class [Bless.Util]Bless.Util.List`1<class Bless.Buffers.Segment>::Remove(class [Bless.Util]Bless.Util.List`1/Node<!0>)
+	IL_0184:  newobj instance void class Bless.Buffers.SegmentCollection::'.ctor'()
+	IL_0189:  stloc.s 15
+	IL_018b:  ldloc.s 15
+	IL_018d:  ldloc.s 13
+	IL_018f:  callvirt instance void class Bless.Buffers.SegmentCollection::Append(class Bless.Buffers.Segment)
+	IL_0194:  br IL_01c1
 
-	.property instance class Bless.Buffers.ByteBuffer Buffer ()
-	{
-		.get instance default class Bless.Buffers.ByteBuffer Bless.Buffers.SaveAsOperation::get_Buffer () 
-	}
-	.property instance string SavePath ()
-	{
-		.get instance default string Bless.Buffers.SaveAsOperation::get_SavePath () 
-		.set instance default void Bless.Buffers.SaveAsOperation::set_SavePath (string 'value') 
-	}
-	.property instance int64 BytesSaved ()
-	{
-		.get instance default int64 Bless.Buffers.SaveAsOperation::get_BytesSaved () 
-	}
-	.property instance valuetype Bless.Buffers.SaveAsOperation/SaveAsStage StageReached ()
-	{
-		.get instance default valuetype Bless.Buffers.SaveAsOperation/SaveAsStage Bless.Buffers.SaveAsOperation::get_StageReached () 
-	}
-  .class nested public auto ansi sealed SaveAsStage
-  	extends [mscorlib]System.Enum
-  {
-    .field  public specialname rtspecialname  int32 value__
-    .field public static literal  valuetype Bless.Buffers.SaveAsOperation/SaveAsStage BeforeCreate = int32(0x00000000)
-    .field public static literal  valuetype Bless.Buffers.SaveAsOperation/SaveAsStage BeforeWrite = int32(0x00000001)
+	IL_0199:  ldloc.s 15
+	IL_019b:  ldloc.s 12
+	IL_019d:  ldfld !0 class [Bless.Util]Bless.Util.List`1/Node<class Bless.Buffers.Segment>::data
+	IL_01a2:  callvirt instance void class Bless.Buffers.SegmentCollection::Append(class Bless.Buffers.Segment)
+	IL_01a7:  ldloc.s 12
+	IL_01a9:  stloc.s 16
+	IL_01ab:  ldloc.s 12
+	IL_01ad:  ldfld class [Bless.Util]Bless.Util.List`1/Node<!0> class [Bless.Util]Bless.Util.List`1/Node<class Bless.Buffers.Segment>::next
+	IL_01b2:  stloc.s 12
+	IL_01b4:  ldarg.0 
+	IL_01b5:  ldfld class [Bless.Util]Bless.Util.List`1<class Bless.Buffers.Segment> Bless.Buffers.SegmentCollection::list
+	IL_01ba:  ldloc.s 16
+	IL_01bc:  callvirt instance void class [Bless.Util]Bless.Util.List`1<class Bless.Buffers.Segment>::Remove(class [Bless.Util]Bless.Util.List`1/Node<!0>)
+	IL_01c1:  ldloc.s 12
+	IL_01c3:  ldloc.3 
+	IL_01c4:  call bool object::ReferenceEquals(object, object)
+	IL_01c9:  brfalse IL_0199
 
-  } // end of class SaveAsStage
+	IL_01ce:  ldarg.0 
+	IL_01cf:  ldfld class [Bless.Util]Bless.Util.List`1<class Bless.Buffers.Segment> Bless.Buffers.SegmentCollection::list
+	IL_01d4:  ldloc.s 12
+	IL_01d6:  callvirt instance void class [Bless.Util]Bless.Util.List`1<class Bless.Buffers.Segment>::Remove(class [Bless.Util]Bless.Util.List`1/Node<!0>)
+	IL_01db:  ldloc.s 15
+	IL_01dd:  ldloc.s 12
+	IL_01df:  ldfld !0 class [Bless.Util]Bless.Util.List`1/Node<class Bless.Buffers.Segment>::data
+	IL_01e4:  callvirt instance void class Bless.Buffers.SegmentCollection::Append(class Bless.Buffers.Segment)
+	IL_01e9:  ldloc.s 15
+	IL_01eb:  ret 
+    } // end of method SegmentCollection::DeleteRange
 
-  } // end of class Bless.Buffers.SaveAsOperation
-}
+    // method line 11
+    .method public hidebysig 
+           instance default class Bless.Buffers.SegmentCollection GetRange (int64 pos1, int64 pos2)  cil managed 
+    {
+        // Method begins at RVA 0x2620
+	// Code size 284 (0x11c)
+	.maxstack 4
+	.locals init (
+		int64	V_0,
+		int64	V_1,
+		class [Bless.Util]Bless.Util.List`1/Node<class Bless.Buffers.Segment>	V_2,
+		class [Bless.Util]Bless.Util.List`1/Node<class Bless.Buffers.Segment>	V_3,
+		class Bless.Buffers.Segment	V_4,
+		class Bless.Buffers.Segment	V_5,
+		class Bless.Buffers.SegmentCollection	V_6,
+		class Bless.Buffers.Segment	V_7,
+		class Bless.Buffers.Segment	V_8,
+		class Bless.Buffers.Segment	V_9,
+		class Bless.Buffers.SegmentCollection	V_10,
+		class [Bless.Util]Bless.Util.List`1/Node<class Bless.Buffers.Segment>	V_11)
+	IL_0000:  ldarg.0 
+	IL_0001:  ldarg.2 
+	IL_0002:  ldloca.s 1
+	IL_0004:  ldloca.s 3
+	IL_0006:  call instance class Bless.Buffers.Segment class Bless.Buffers.SegmentCollection::FindSegment(int64, [out] int64&, [out] class [Bless.Util]Bless.Util.List`1/Node<class Bless.Buffers.Segment>&)
+	IL_000b:  stloc.s 4
+	IL_000d:  ldarg.0 
+	IL_000e:  ldarg.1 
+	IL_000f:  ldloca.s 0
+	IL_0011:  ldloca.s 2
+	IL_0013:  call instance class Bless.Buffers.Segment class Bless.Buffers.SegmentCollection::FindSegment(int64, [out] int64&, [out] class [Bless.Util]Bless.Util.List`1/Node<class Bless.Buffers.Segment>&)
+	IL_0018:  stloc.s 5
+	IL_001a:  ldloc.s 5
+	IL_001c:  brfalse IL_0028
 
-.namespace Bless.Buffers
-{
-  .class interface public auto ansi abstract ISaveState
-  {
+	IL_0021:  ldloc.s 4
+	IL_0023:  brtrue IL_002a
 
-    // method line 27
-    .method public virtual hidebysig newslot abstract specialname 
-           instance default valuetype [Bless.Util]Bless.Util.ThreadedAsyncOperation/OperationResult get_Result ()  cil managed 
-    {
-        // Method begins at RVA 0x0
-    } // end of method ISaveState::get_Result
+	IL_0028:  ldnull 
+	IL_0029:  ret 
+	IL_002a:  ldloc.2 
+	IL_002b:  ldloc.3 
+	IL_002c:  call bool object::ReferenceEquals(object, object)
+	IL_0031:  brfalse IL_006d
 
-    // method line 28
-    .method public virtual hidebysig newslot abstract specialname 
-           instance default string get_SavePath ()  cil managed 
-    {
-        // Method begins at RVA 0x0
-    } // end of method ISaveState::get_SavePath
+	IL_0036:  newobj instance void class Bless.Buffers.SegmentCollection::'.ctor'()
+	IL_003b:  stloc.s 6
+	IL_003d:  ldloc.s 5
+	IL_003f:  callvirt instance class Bless.Buffers.IBuffer class Bless.Buffers.Segment::get_Buffer()
+	IL_0044:  ldarg.1 
+	IL_0045:  ldloc.0 
+	IL_0046:  sub 
+	IL_0047:  ldloc.s 5
+	IL_0049:  callvirt instance int64 class Bless.Buffers.Segment::get_Start()
+	IL_004e:  add 
+	IL_004f:  ldarg.2 
+	IL_0050:  ldloc.0 
+	IL_0051:  sub 
+	IL_0052:  ldloc.s 5
+	IL_0054:  callvirt instance int64 class Bless.Buffers.Segment::get_Start()
+	IL_0059:  add 
+	IL_005a:  newobj instance void class Bless.Buffers.Segment::'.ctor'(class Bless.Buffers.IBuffer, int64, int64)
+	IL_005f:  stloc.s 7
+	IL_0061:  ldloc.s 6
+	IL_0063:  ldloc.s 7
+	IL_0065:  callvirt instance void class Bless.Buffers.SegmentCollection::Append(class Bless.Buffers.Segment)
+	IL_006a:  ldloc.s 6
+	IL_006c:  ret 
+	IL_006d:  ldloc.s 4
+	IL_006f:  callvirt instance class Bless.Buffers.IBuffer class Bless.Buffers.Segment::get_Buffer()
+	IL_0074:  ldloc.s 4
+	IL_0076:  callvirt instance int64 class Bless.Buffers.Segment::get_Start()
+	IL_007b:  ldarg.2 
+	IL_007c:  ldloc.1 
+	IL_007d:  sub 
+	IL_007e:  ldloc.s 4
+	IL_0080:  callvirt instance int64 class Bless.Buffers.Segment::get_Start()
+	IL_0085:  add 
+	IL_0086:  newobj instance void class Bless.Buffers.Segment::'.ctor'(class Bless.Buffers.IBuffer, int64, int64)
+	IL_008b:  stloc.s 8
+	IL_008d:  ldloc.s 5
+	IL_008f:  callvirt instance class Bless.Buffers.IBuffer class Bless.Buffers.Segment::get_Buffer()
+	IL_0094:  ldarg.1 
+	IL_0095:  ldloc.0 
+	IL_0096:  sub 
+	IL_0097:  ldloc.s 5
+	IL_0099:  callvirt instance int64 class Bless.Buffers.Segment::get_Start()
+	IL_009e:  add 
+	IL_009f:  ldloc.s 5
+	IL_00a1:  callvirt instance int64 class Bless.Buffers.Segment::get_End()
+	IL_00a6:  newobj instance void class Bless.Buffers.Segment::'.ctor'(class Bless.Buffers.IBuffer, int64, int64)
+	IL_00ab:  stloc.s 9
+	IL_00ad:  newobj instance void class Bless.Buffers.SegmentCollection::'.ctor'()
+	IL_00b2:  stloc.s 10
+	IL_00b4:  ldloc.s 10
+	IL_00b6:  ldloc.s 9
+	IL_00b8:  callvirt instance void class Bless.Buffers.SegmentCollection::Append(class Bless.Buffers.Segment)
+	IL_00bd:  ldloc.2 
+	IL_00be:  ldfld class [Bless.Util]Bless.Util.List`1/Node<!0> class [Bless.Util]Bless.Util.List`1/Node<class Bless.Buffers.Segment>::next
+	IL_00c3:  stloc.s 11
+	IL_00c5:  br IL_0103
 
-    // method line 29
-    .method public virtual hidebysig newslot abstract specialname 
-           instance default class Bless.Buffers.ByteBuffer get_Buffer ()  cil managed 
-    {
-        // Method begins at RVA 0x0
-    } // end of method ISaveState::get_Buffer
+	IL_00ca:  ldloc.s 10
+	IL_00cc:  ldloc.s 11
+	IL_00ce:  ldfld !0 class [Bless.Util]Bless.Util.List`1/Node<class Bless.Buffers.Segment>::data
+	IL_00d3:  callvirt instance class Bless.Buffers.IBuffer class Bless.Buffers.Segment::get_Buffer()
+	IL_00d8:  ldloc.s 11
+	IL_00da:  ldfld !0 class [Bless.Util]Bless.Util.List`1/Node<class Bless.Buffers.Segment>::data
+	IL_00df:  callvirt instance int64 class Bless.Buffers.Segment::get_Start()
+	IL_00e4:  ldloc.s 11
+	IL_00e6:  ldfld !0 class [Bless.Util]Bless.Util.List`1/Node<class Bless.Buffers.Segment>::data
+	IL_00eb:  callvirt instance int64 class Bless.Buffers.Segment::get_End()
+	IL_00f0:  newobj instance void class Bless.Buffers.Segment::'.ctor'(class Bless.Buffers.IBuffer, int64, int64)
+	IL_00f5:  callvirt instance void class Bless.Buffers.SegmentCollection::Append(class Bless.Buffers.Segment)
+	IL_00fa:  ldloc.s 11
+	IL_00fc:  ldfld class [Bless.Util]Bless.Util.List`1/Node<!0> class [Bless.Util]Bless.Util.List`1/Node<class Bless.Buffers.Segment>::next
+	IL_0101:  stloc.s 11
+	IL_0103:  ldloc.s 11
+	IL_0105:  ldloc.3 
+	IL_0106:  call bool object::ReferenceEquals(object, object)
+	IL_010b:  brfalse IL_00ca
 
-    // method line 30
-    .method public virtual hidebysig newslot abstract specialname 
-           instance default class [mscorlib]System.Exception get_ThreadException ()  cil managed 
-    {
-        // Method begins at RVA 0x0
-    } // end of method ISaveState::get_ThreadException
+	IL_0110:  ldloc.s 10
+	IL_0112:  ldloc.s 8
+	IL_0114:  callvirt instance void class Bless.Buffers.SegmentCollection::Append(class Bless.Buffers.Segment)
+	IL_0119:  ldloc.s 10
+	IL_011b:  ret 
+    } // end of method SegmentCollection::GetRange
 
-	.property instance valuetype [Bless.Util]Bless.Util.ThreadedAsyncOperation/OperationResult Result ()
-	{
-		.get instance default valuetype [Bless.Util]Bless.Util.ThreadedAsyncOperation/OperationResult Bless.Buffers.ISaveState::get_Result () 
-	}
-	.property instance string SavePath ()
-	{
-		.get instance default string Bless.Buffers.ISaveState::get_SavePath () 
-	}
-	.property instance class Bless.Buffers.ByteBuffer Buffer ()
-	{
-		.get instance default class Bless.Buffers.ByteBuffer Bless.Buffers.ISaveState::get_Buffer () 
-	}
-	.property instance class [mscorlib]System.Exception ThreadException ()
+	.property instance class [Bless.Util]Bless.Util.List`1<class Bless.Buffers.Segment> List ()
 	{
-		.get instance default class [mscorlib]System.Exception Bless.Buffers.ISaveState::get_ThreadException () 
+		.get instance default class [Bless.Util]Bless.Util.List`1<class Bless.Buffers.Segment> Bless.Buffers.SegmentCollection::get_List () 
 	}
-  } // end of class Bless.Buffers.ISaveState
+  } // end of class Bless.Buffers.SegmentCollection
 }
 
 .namespace Bless.Buffers
 {
-  .class public auto ansi beforefieldinit SaveOperation
-  	extends [Bless.Util]Bless.Util.ThreadedAsyncOperation
-  	implements Bless.Buffers.ISaveState  {
-    .field  family  class Bless.Buffers.ByteBuffer byteBuffer
-    .field  family  int64 bytesSaved
-    .field  family  string savePath
-    .field  private  string tempPath
-    .field  private  valuetype Bless.Buffers.SaveOperation/SaveStage stageReached
-
-    // method line 31
-    .method public hidebysig specialname rtspecialname 
-           instance default void '.ctor' (class Bless.Buffers.ByteBuffer bb, string tempFilename, class [Bless.Util]Bless.Util.ProgressCallback pc, class [mscorlib]System.AsyncCallback ac, bool glibIdle)  cil managed 
-    {
-        // Method begins at RVA 0x24b3
-	// Code size 58 (0x3a)
-	.maxstack 8
-	IL_0000:  ldarg.0 
-	IL_0001:  ldarg.3 
-	IL_0002:  ldarg.s 4
-	IL_0004:  ldarg.s 5
-	IL_0006:  call instance void class [Bless.Util]Bless.Util.ThreadedAsyncOperation::'.ctor'(class [Bless.Util]Bless.Util.ProgressCallback, class [mscorlib]System.AsyncCallback, bool)
-	IL_000b:  ldarg.0 
-	IL_000c:  ldarg.1 
-	IL_000d:  stfld class Bless.Buffers.ByteBuffer Bless.Buffers.SaveOperation::byteBuffer
-	IL_0012:  ldarg.0 
-	IL_0013:  ldarg.0 
-	IL_0014:  ldfld class Bless.Buffers.ByteBuffer Bless.Buffers.SaveOperation::byteBuffer
-	IL_0019:  callvirt instance string class Bless.Buffers.ByteBuffer::get_Filename()
-	IL_001e:  stfld string Bless.Buffers.SaveOperation::savePath
-	IL_0023:  ldarg.0 
-	IL_0024:  ldarg.2 
-	IL_0025:  stfld string Bless.Buffers.SaveOperation::tempPath
-	IL_002a:  ldarg.0 
-	IL_002b:  ldc.i4.0 
-	IL_002c:  conv.i8 
-	IL_002d:  stfld int64 Bless.Buffers.SaveOperation::bytesSaved
-	IL_0032:  ldarg.0 
-	IL_0033:  ldc.i4.0 
-	IL_0034:  stfld bool [Bless.Util]Bless.Util.ThreadedAsyncOperation::activateProgress
-	IL_0039:  ret 
-    } // end of method SaveOperation::.ctor
-
-    // method line 32
-    .method public final virtual hidebysig newslot specialname 
-           instance default class Bless.Buffers.ByteBuffer get_Buffer ()  cil managed 
-    {
-        // Method begins at RVA 0x24ee
-	// Code size 7 (0x7)
-	.maxstack 8
-	IL_0000:  ldarg.0 
-	IL_0001:  ldfld class Bless.Buffers.ByteBuffer Bless.Buffers.SaveOperation::byteBuffer
-	IL_0006:  ret 
-    } // end of method SaveOperation::get_Buffer
+  .class public auto ansi beforefieldinit FileBuffer
+  	extends Bless.Buffers.BaseBuffer
+  {
+    .custom instance void class [mscorlib]System.Reflection.DefaultMemberAttribute::'.ctor'(string) =  (01 00 04 49 74 65 6D 00 00 ) // ...Item..
 
-    // method line 33
-    .method public final virtual hidebysig newslot specialname 
-           instance default string get_SavePath ()  cil managed 
-    {
-        // Method begins at RVA 0x24f6
-	// Code size 7 (0x7)
-	.maxstack 8
-	IL_0000:  ldarg.0 
-	IL_0001:  ldfld string Bless.Buffers.SaveOperation::savePath
-	IL_0006:  ret 
-    } // end of method SaveOperation::get_SavePath
+    .field private static literal  unsigned int32 BLKGETSIZE64 = int32(0x80041272)
+    .field  private  int64 winOffset
+    .field  private  int32 winOccupied
+    .field  private  unsigned int8[] window
+    .field  private  bool isResizable
+    .field  private  class [mscorlib]System.IO.BinaryReader reader
+    .field  private  int64 FileLength
+    .field private static literal  int32 default_size = int32(0x00001000)
 
-    // method line 34
-    .method public hidebysig specialname 
-           instance default void set_SavePath (string 'value')  cil managed 
+    // method line 12
+    .method public hidebysig specialname rtspecialname 
+           instance default void '.ctor' (string fn)  cil managed 
     {
-        // Method begins at RVA 0x24fe
-	// Code size 8 (0x8)
+        // Method begins at RVA 0x2788
+	// Code size 13 (0xd)
 	.maxstack 8
 	IL_0000:  ldarg.0 
 	IL_0001:  ldarg.1 
-	IL_0002:  stfld string Bless.Buffers.SaveOperation::savePath
-	IL_0007:  ret 
-    } // end of method SaveOperation::set_SavePath
+	IL_0002:  ldc.i4 4096
+	IL_0007:  call instance void class Bless.Buffers.FileBuffer::'.ctor'(string, int32)
+	IL_000c:  ret 
+    } // end of method FileBuffer::.ctor
 
-    // method line 35
-    .method public hidebysig specialname 
-           instance default int64 get_BytesSaved ()  cil managed 
+    // method line 13
+    .method public hidebysig specialname rtspecialname 
+           instance default void '.ctor' (string fn, int32 size)  cil managed 
     {
-        // Method begins at RVA 0x2507
-	// Code size 7 (0x7)
+        // Method begins at RVA 0x2796
+	// Code size 26 (0x1a)
 	.maxstack 8
 	IL_0000:  ldarg.0 
-	IL_0001:  ldfld int64 Bless.Buffers.SaveOperation::bytesSaved
-	IL_0006:  ret 
-    } // end of method SaveOperation::get_BytesSaved
+	IL_0001:  call instance void class Bless.Buffers.BaseBuffer::'.ctor'()
+	IL_0006:  ldarg.0 
+	IL_0007:  ldarg.2 
+	IL_0008:  newarr [mscorlib]System.Byte
+	IL_000d:  stfld unsigned int8[] Bless.Buffers.FileBuffer::window
+	IL_0012:  ldarg.0 
+	IL_0013:  ldarg.1 
+	IL_0014:  call instance void class Bless.Buffers.FileBuffer::Load(string)
+	IL_0019:  ret 
+    } // end of method FileBuffer::.ctor
 
-    // method line 36
-    .method public hidebysig specialname 
-           instance default string get_TempPath ()  cil managed 
+    // method line 14
+    .method private static hidebysig pinvokeimpl ("libc" as "ioctl" winapi lasterr )
+           default int32 ioctl (int32 fd, unsigned int32 'request', int64& size)  cil managed preservesig 
     {
-        // Method begins at RVA 0x250f
-	// Code size 7 (0x7)
-	.maxstack 8
-	IL_0000:  ldarg.0 
-	IL_0001:  ldfld string Bless.Buffers.SaveOperation::tempPath
-	IL_0006:  ret 
-    } // end of method SaveOperation::get_TempPath
+        // Method begins at RVA 0x0
+    } // end of method FileBuffer::ioctl
 
-    // method line 37
-    .method public hidebysig specialname 
-           instance default valuetype Bless.Buffers.SaveOperation/SaveStage get_StageReached ()  cil managed 
+    // method line 15
+    .method private hidebysig 
+           instance default bool InWindow (int64 pos)  cil managed 
     {
-        // Method begins at RVA 0x2517
-	// Code size 7 (0x7)
+        // Method begins at RVA 0x27b1
+	// Code size 33 (0x21)
 	.maxstack 8
-	IL_0000:  ldarg.0 
-	IL_0001:  ldfld valuetype Bless.Buffers.SaveOperation/SaveStage Bless.Buffers.SaveOperation::stageReached
-	IL_0006:  ret 
-    } // end of method SaveOperation::get_StageReached
-
-    // method line 38
-    .method family hidebysig 
-           instance default bool CheckFreeSpace (string path, int64 extraSpace)  cil managed 
-    {
-        // Method begins at RVA 0x2520
-	// Code size 42 (0x2a)
-	.maxstack 2
-	.locals init (
-		int64	V_0,
-		bool	V_1)
-	.try { // 0
-	  IL_0000:  ldarg.1 
-	  IL_0001:  call int64 class [Bless.Util]Portable::GetAvailableDiskSpace(string)
-	  IL_0006:  stloc.0 
-	  IL_0007:  ldloc.0 
-	  IL_0008:  ldarg.2 
-	  IL_0009:  add 
-	  IL_000a:  ldarg.0 
-	  IL_000b:  ldfld class Bless.Buffers.ByteBuffer Bless.Buffers.SaveOperation::byteBuffer
-	  IL_0010:  callvirt instance int64 class Bless.Buffers.BaseBuffer::get_Size()
-	  IL_0015:  clt 
-	  IL_0017:  ldc.i4.0 
-	  IL_0018:  ceq 
-	  IL_001a:  stloc.1 
-	  IL_001b:  leave IL_0028
+	IL_0000:  ldarg.1 
+	IL_0001:  ldarg.0 
+	IL_0002:  ldfld int64 Bless.Buffers.FileBuffer::winOffset
+	IL_0007:  blt IL_001f
 
-	} // end .try 0
-	catch class [mscorlib]System.NotImplementedException { // 0
-	  IL_0020:  pop 
-	  IL_0021:  ldc.i4.1 
-	  IL_0022:  stloc.1 
-	  IL_0023:  leave IL_0028
+	IL_000c:  ldarg.1 
+	IL_000d:  ldarg.0 
+	IL_000e:  ldfld int64 Bless.Buffers.FileBuffer::winOffset
+	IL_0013:  ldarg.0 
+	IL_0014:  ldfld int32 Bless.Buffers.FileBuffer::winOccupied
+	IL_0019:  conv.i8 
+	IL_001a:  add 
+	IL_001b:  clt 
+	IL_001d:  br.s IL_0020
 
-	} // end handler 0
-	IL_0028:  ldloc.1 
-	IL_0029:  ret 
-    } // end of method SaveOperation::CheckFreeSpace
+	IL_001f:  ldc.i4.0 
+	IL_0020:  ret 
+    } // end of method FileBuffer::InWindow
 
-    // method line 39
-    .method family virtual hidebysig 
-           instance default bool StartProgress ()  cil managed 
+    // method line 16
+    .method public virtual hidebysig 
+           instance default int64 Read (unsigned int8[] ba, int64 index, int64 pos, int64 len)  cil managed 
     {
-        // Method begins at RVA 0x2568
-	// Code size 78 (0x4e)
+        // Method begins at RVA 0x27d4
+	// Code size 91 (0x5b)
 	.maxstack 4
-	IL_0000:  ldarg.0 
-	IL_0001:  ldfld class [Bless.Util]Bless.Util.ProgressCallback [Bless.Util]Bless.Util.ThreadedAsyncOperation::progressCallback
-	IL_0006:  ldstr "Moving '{0}' to '{1}'"
-	IL_000b:  call string class [Mono.Posix]Mono.Unix.Catalog::GetString(string)
-	IL_0010:  ldarg.0 
-	IL_0011:  ldfld string Bless.Buffers.SaveOperation::tempPath
-	IL_0016:  ldarg.0 
-	IL_0017:  ldfld string Bless.Buffers.SaveOperation::savePath
-	IL_001c:  call string string::Format(string, object, object)
-	IL_0021:  ldc.i4.3 
-	IL_0022:  callvirt instance bool class [Bless.Util]Bless.Util.ProgressCallback::Invoke(object, valuetype [Bless.Util]Bless.Util.ProgressAction)
-	IL_0027:  pop 
-	IL_0028:  ldarg.0 
-	IL_0029:  ldfld class [Bless.Util]Bless.Util.ProgressCallback [Bless.Util]Bless.Util.ThreadedAsyncOperation::progressCallback
-	IL_002e:  ldarg.0 
-	IL_002f:  ldfld int64 Bless.Buffers.SaveOperation::bytesSaved
-	IL_0034:  conv.r8 
-	IL_0035:  ldarg.0 
-	IL_0036:  ldfld class Bless.Buffers.ByteBuffer Bless.Buffers.SaveOperation::byteBuffer
-	IL_003b:  callvirt instance int64 class Bless.Buffers.BaseBuffer::get_Size()
-	IL_0040:  conv.r8 
-	IL_0041:  div 
-	IL_0042:  box [mscorlib]System.Double
-	IL_0047:  ldc.i4.0 
-	IL_0048:  callvirt instance bool class [Bless.Util]Bless.Util.ProgressCallback::Invoke(object, valuetype [Bless.Util]Bless.Util.ProgressAction)
-	IL_004d:  ret 
-    } // end of method SaveOperation::StartProgress
+	IL_0000:  ldarg.3 
+	IL_0001:  ldarg.0 
+	IL_0002:  ldfld int64 Bless.Buffers.FileBuffer::FileLength
+	IL_0007:  bge IL_0014
 
-    // method line 40
-    .method family virtual hidebysig 
-           instance default bool UpdateProgress ()  cil managed 
+	IL_000c:  ldarg.3 
+	IL_000d:  ldc.i4.0 
+	IL_000e:  conv.i8 
+	IL_000f:  bge IL_0017
+
+	IL_0014:  ldc.i4.0 
+	IL_0015:  conv.i8 
+	IL_0016:  ret 
+	IL_0017:  ldarg.3 
+	IL_0018:  ldarg.s 4
+	IL_001a:  add 
+	IL_001b:  ldarg.0 
+	IL_001c:  ldfld int64 Bless.Buffers.FileBuffer::FileLength
+	IL_0021:  ble IL_0033
+
+	IL_0026:  ldarg.0 
+	IL_0027:  ldfld int64 Bless.Buffers.FileBuffer::FileLength
+	IL_002c:  ldarg.3 
+	IL_002d:  sub 
+	IL_002e:  ldc.i4.1 
+	IL_002f:  conv.i8 
+	IL_0030:  add 
+	IL_0031:  starg.s 4
+	IL_0033:  ldarg.0 
+	IL_0034:  ldfld class [mscorlib]System.IO.BinaryReader Bless.Buffers.FileBuffer::reader
+	IL_0039:  callvirt instance class [mscorlib]System.IO.Stream class [mscorlib]System.IO.BinaryReader::get_BaseStream()
+	IL_003e:  ldarg.3 
+	IL_003f:  ldc.i4.0 
+	IL_0040:  callvirt instance int64 class [mscorlib]System.IO.Stream::Seek(int64, valuetype [mscorlib]System.IO.SeekOrigin)
+	IL_0045:  pop 
+	IL_0046:  ldarg.0 
+	IL_0047:  ldfld class [mscorlib]System.IO.BinaryReader Bless.Buffers.FileBuffer::reader
+	IL_004c:  ldarg.1 
+	IL_004d:  ldarg.2 
+	IL_004e:  conv.i4 
+	IL_004f:  ldarg.s 4
+	IL_0051:  conv.i4 
+	IL_0052:  callvirt instance int32 class [mscorlib]System.IO.BinaryReader::Read(unsigned int8[], int32, int32)
+	IL_0057:  pop 
+	IL_0058:  ldarg.s 4
+	IL_005a:  ret 
+    } // end of method FileBuffer::Read
+
+    // method line 17
+    .method public virtual hidebysig specialname 
+           instance default void set_Item (int64 index, unsigned int8 'value')  cil managed 
     {
-        // Method begins at RVA 0x25c2
-	// Code size 38 (0x26)
+        // Method begins at RVA 0x283b
+	// Code size 1 (0x1)
 	.maxstack 8
+	IL_0000:  ret 
+    } // end of method FileBuffer::set_Item
+
+    // method line 18
+    .method public virtual hidebysig specialname 
+           instance default unsigned int8 get_Item (int64 index)  cil managed 
+    {
+        // Method begins at RVA 0x2840
+	// Code size 143 (0x8f)
+	.maxstack 5
 	IL_0000:  ldarg.0 
-	IL_0001:  ldfld class [Bless.Util]Bless.Util.ProgressCallback [Bless.Util]Bless.Util.ThreadedAsyncOperation::progressCallback
-	IL_0006:  ldarg.0 
-	IL_0007:  ldfld int64 Bless.Buffers.SaveOperation::bytesSaved
-	IL_000c:  conv.r8 
+	IL_0001:  ldarg.1 
+	IL_0002:  call instance bool class Bless.Buffers.FileBuffer::InWindow(int64)
+	IL_0007:  brtrue IL_007e
+
+	IL_000c:  ldarg.1 
 	IL_000d:  ldarg.0 
-	IL_000e:  ldfld class Bless.Buffers.ByteBuffer Bless.Buffers.SaveOperation::byteBuffer
-	IL_0013:  callvirt instance int64 class Bless.Buffers.BaseBuffer::get_Size()
-	IL_0018:  conv.r8 
-	IL_0019:  div 
-	IL_001a:  box [mscorlib]System.Double
-	IL_001f:  ldc.i4.2 
-	IL_0020:  callvirt instance bool class [Bless.Util]Bless.Util.ProgressCallback::Invoke(object, valuetype [Bless.Util]Bless.Util.ProgressAction)
-	IL_0025:  ret 
-    } // end of method SaveOperation::UpdateProgress
+	IL_000e:  ldfld int64 Bless.Buffers.FileBuffer::FileLength
+	IL_0013:  blt IL_001e
+
+	IL_0018:  newobj instance void class [mscorlib]System.IndexOutOfRangeException::'.ctor'()
+	IL_001d:  throw 
+	IL_001e:  ldarg.0 
+	IL_001f:  ldarg.1 
+	IL_0020:  ldarg.0 
+	IL_0021:  ldfld unsigned int8[] Bless.Buffers.FileBuffer::window
+	IL_0026:  ldlen 
+	IL_0027:  conv.i4 
+	IL_0028:  ldc.i4.2 
+	IL_0029:  div 
+	IL_002a:  conv.i8 
+	IL_002b:  sub 
+	IL_002c:  stfld int64 Bless.Buffers.FileBuffer::winOffset
+	IL_0031:  ldarg.0 
+	IL_0032:  ldfld int64 Bless.Buffers.FileBuffer::winOffset
+	IL_0037:  ldc.i4.0 
+	IL_0038:  conv.i8 
+	IL_0039:  bge IL_0046
+
+	IL_003e:  ldarg.0 
+	IL_003f:  ldc.i4.0 
+	IL_0040:  conv.i8 
+	IL_0041:  stfld int64 Bless.Buffers.FileBuffer::winOffset
+	IL_0046:  ldarg.0 
+	IL_0047:  ldfld class [mscorlib]System.IO.BinaryReader Bless.Buffers.FileBuffer::reader
+	IL_004c:  callvirt instance class [mscorlib]System.IO.Stream class [mscorlib]System.IO.BinaryReader::get_BaseStream()
+	IL_0051:  ldarg.0 
+	IL_0052:  ldfld int64 Bless.Buffers.FileBuffer::winOffset
+	IL_0057:  ldc.i4.0 
+	IL_0058:  callvirt instance int64 class [mscorlib]System.IO.Stream::Seek(int64, valuetype [mscorlib]System.IO.SeekOrigin)
+	IL_005d:  pop 
+	IL_005e:  ldarg.0 
+	IL_005f:  ldarg.0 
+	IL_0060:  ldfld class [mscorlib]System.IO.BinaryReader Bless.Buffers.FileBuffer::reader
+	IL_0065:  ldarg.0 
+	IL_0066:  ldfld unsigned int8[] Bless.Buffers.FileBuffer::window
+	IL_006b:  ldc.i4.0 
+	IL_006c:  ldarg.0 
+	IL_006d:  ldfld unsigned int8[] Bless.Buffers.FileBuffer::window
+	IL_0072:  ldlen 
+	IL_0073:  conv.i4 
+	IL_0074:  callvirt instance int32 class [mscorlib]System.IO.BinaryReader::Read(unsigned int8[], int32, int32)
+	IL_0079:  stfld int32 Bless.Buffers.FileBuffer::winOccupied
+	IL_007e:  ldarg.0 
+	IL_007f:  ldfld unsigned int8[] Bless.Buffers.FileBuffer::window
+	IL_0084:  ldarg.1 
+	IL_0085:  ldarg.0 
+	IL_0086:  ldfld int64 Bless.Buffers.FileBuffer::winOffset
+	IL_008b:  sub 
+	IL_008c:  conv.ovf.i 
+	IL_008d:  ldelem.u1 
+	IL_008e:  ret 
+    } // end of method FileBuffer::get_Item
 
-    // method line 41
-    .method family virtual hidebysig 
-           instance default bool EndProgress ()  cil managed 
+    // method line 19
+    .method public virtual hidebysig specialname 
+           instance default int64 get_Size ()  cil managed 
     {
-        // Method begins at RVA 0x25e9
-	// Code size 38 (0x26)
+        // Method begins at RVA 0x28db
+	// Code size 7 (0x7)
 	.maxstack 8
 	IL_0000:  ldarg.0 
-	IL_0001:  ldfld class [Bless.Util]Bless.Util.ProgressCallback [Bless.Util]Bless.Util.ThreadedAsyncOperation::progressCallback
-	IL_0006:  ldarg.0 
-	IL_0007:  ldfld int64 Bless.Buffers.SaveOperation::bytesSaved
-	IL_000c:  conv.r8 
-	IL_000d:  ldarg.0 
-	IL_000e:  ldfld class Bless.Buffers.ByteBuffer Bless.Buffers.SaveOperation::byteBuffer
-	IL_0013:  callvirt instance int64 class Bless.Buffers.BaseBuffer::get_Size()
-	IL_0018:  conv.r8 
-	IL_0019:  div 
-	IL_001a:  box [mscorlib]System.Double
-	IL_001f:  ldc.i4.5 
-	IL_0020:  callvirt instance bool class [Bless.Util]Bless.Util.ProgressCallback::Invoke(object, valuetype [Bless.Util]Bless.Util.ProgressAction)
-	IL_0025:  ret 
-    } // end of method SaveOperation::EndProgress
+	IL_0001:  ldfld int64 Bless.Buffers.FileBuffer::FileLength
+	IL_0006:  ret 
+    } // end of method FileBuffer::get_Size
 
-    // method line 42
-    .method family virtual hidebysig 
-           instance default void DoOperation ()  cil managed 
+    // method line 20
+    .method public hidebysig 
+           instance default void Load (string filename)  cil managed 
     {
-        // Method begins at RVA 0x2610
-	// Code size 314 (0x13a)
+        // Method begins at RVA 0x28e4
+	// Code size 242 (0xf2)
 	.maxstack 5
 	.locals init (
-		class Bless.Buffers.SaveAsOperation	V_0,
-		string	V_1,
-		object	V_2,
-		bool	V_3)
+		class [Mono.Posix]Mono.Unix.UnixFileInfo	V_0,
+		class [Mono.Posix]Mono.Unix.UnixStream	V_1,
+		class [mscorlib]System.IO.Stream	V_2)
 	IL_0000:  ldarg.0 
-	IL_0001:  ldfld class Bless.Buffers.ByteBuffer Bless.Buffers.SaveOperation::byteBuffer
-	IL_0006:  ldarg.0 
-	IL_0007:  ldfld string Bless.Buffers.SaveOperation::tempPath
-	IL_000c:  ldarg.0 
-	IL_000d:  ldfld class [Bless.Util]Bless.Util.ProgressCallback [Bless.Util]Bless.Util.ThreadedAsyncOperation::progressCallback
-	IL_0012:  ldnull 
-	IL_0013:  ldc.i4.0 
-	IL_0014:  newobj instance void class Bless.Buffers.SaveAsOperation::'.ctor'(class Bless.Buffers.ByteBuffer, string, class [Bless.Util]Bless.Util.ProgressCallback, class [mscorlib]System.AsyncCallback, bool)
-	IL_0019:  stloc.0 
-	IL_001a:  ldarg.0 
-	IL_001b:  ldc.i4.0 
-	IL_001c:  stfld valuetype Bless.Buffers.SaveOperation/SaveStage Bless.Buffers.SaveOperation::stageReached
-	IL_0021:  ldarg.0 
-	IL_0022:  ldarg.0 
-	IL_0023:  ldfld class Bless.Buffers.ByteBuffer Bless.Buffers.SaveOperation::byteBuffer
-	IL_0028:  callvirt instance string class Bless.Buffers.ByteBuffer::get_Filename()
-	IL_002d:  call string class [mscorlib]System.IO.Path::GetDirectoryName(string)
-	IL_0032:  ldarg.0 
-	IL_0033:  ldfld class Bless.Buffers.ByteBuffer Bless.Buffers.SaveOperation::byteBuffer
-	IL_0038:  ldfld class Bless.Buffers.FileBuffer Bless.Buffers.ByteBuffer::fileBuf
-	IL_003d:  callvirt instance int64 class Bless.Buffers.BaseBuffer::get_Size()
-	IL_0042:  call instance bool class Bless.Buffers.SaveOperation::CheckFreeSpace(string, int64)
-	IL_0047:  brtrue IL_006e
+	IL_0001:  ldfld class [mscorlib]System.IO.BinaryReader Bless.Buffers.FileBuffer::reader
+	IL_0006:  brfalse IL_0016
 
-	IL_004c:  ldstr "There is not enough free space on the device to save file '{0}'."
-	IL_0051:  call string class [Mono.Posix]Mono.Unix.Catalog::GetString(string)
-	IL_0056:  ldarg.0 
-	IL_0057:  ldfld class Bless.Buffers.ByteBuffer Bless.Buffers.SaveOperation::byteBuffer
-	IL_005c:  callvirt instance string class Bless.Buffers.ByteBuffer::get_Filename()
-	IL_0061:  call string string::Format(string, object)
-	IL_0066:  stloc.1 
-	IL_0067:  ldloc.1 
-	IL_0068:  newobj instance void class [mscorlib]System.IO.IOException::'.ctor'(string)
-	IL_006d:  throw 
-	IL_006e:  ldloc.0 
-	IL_006f:  callvirt instance void class [Bless.Util]Bless.Util.ThreadedAsyncOperation::OperationThread()
-	IL_0074:  ldloc.0 
-	IL_0075:  callvirt instance valuetype [Bless.Util]Bless.Util.ThreadedAsyncOperation/OperationResult class [Bless.Util]Bless.Util.ThreadedAsyncOperation::get_Result()
-	IL_007a:  ldc.i4.2 
-	IL_007b:  bne.un IL_0087
+	IL_000b:  ldarg.0 
+	IL_000c:  ldfld class [mscorlib]System.IO.BinaryReader Bless.Buffers.FileBuffer::reader
+	IL_0011:  callvirt instance void class [mscorlib]System.IO.BinaryReader::Close()
+	IL_0016:  ldarg.1 
+	IL_0017:  newobj instance void class [Mono.Posix]Mono.Unix.UnixFileInfo::'.ctor'(string)
+	IL_001c:  stloc.0 
+	IL_001d:  ldloc.0 
+	IL_001e:  callvirt instance bool class [Mono.Posix]Mono.Unix.UnixFileSystemInfo::get_Exists()
+	IL_0023:  brtrue IL_0034
 
-	IL_0080:  ldloc.0 
-	IL_0081:  callvirt instance class [mscorlib]System.Exception class [Bless.Util]Bless.Util.ThreadedAsyncOperation::get_ThreadException()
-	IL_0086:  throw 
-	IL_0087:  ldloc.0 
-	IL_0088:  callvirt instance valuetype [Bless.Util]Bless.Util.ThreadedAsyncOperation/OperationResult class [Bless.Util]Bless.Util.ThreadedAsyncOperation::get_Result()
-	IL_008d:  ldc.i4.1 
-	IL_008e:  bne.un IL_009a
+	IL_0028:  ldloc.0 
+	IL_0029:  callvirt instance string class [Mono.Posix]Mono.Unix.UnixFileSystemInfo::get_FullName()
+	IL_002e:  newobj instance void class [mscorlib]System.IO.FileNotFoundException::'.ctor'(string)
+	IL_0033:  throw 
+	IL_0034:  ldloc.0 
+	IL_0035:  callvirt instance bool class [Mono.Posix]Mono.Unix.UnixFileSystemInfo::get_IsRegularFile()
+	IL_003a:  brfalse IL_0057
 
-	IL_0093:  ldarg.0 
-	IL_0094:  ldc.i4.1 
-	IL_0095:  stfld bool [Bless.Util]Bless.Util.ThreadedAsyncOperation::cancelled
-	IL_009a:  ldarg.0 
-	IL_009b:  ldfld bool [Bless.Util]Bless.Util.ThreadedAsyncOperation::cancelled
-	IL_00a0:  brtrue IL_0139
+	IL_003f:  ldarg.0 
+	IL_0040:  ldloc.0 
+	IL_0041:  callvirt instance int64 class [Mono.Posix]Mono.Unix.UnixFileSystemInfo::get_Length()
+	IL_0046:  stfld int64 Bless.Buffers.FileBuffer::FileLength
+	IL_004b:  ldarg.0 
+	IL_004c:  ldc.i4.1 
+	IL_004d:  stfld bool Bless.Buffers.FileBuffer::isResizable
+	IL_0052:  br IL_009d
 
-	IL_00a5:  ldarg.0 
-	IL_00a6:  ldc.i4.1 
-	IL_00a7:  call instance void class [Bless.Util]Bless.Util.ThreadedAsyncOperation::ActivateProgressReport(bool)
-	IL_00ac:  ldarg.0 
-	IL_00ad:  ldc.i4.1 
-	IL_00ae:  stfld valuetype Bless.Buffers.SaveOperation/SaveStage Bless.Buffers.SaveOperation::stageReached
-	IL_00b3:  ldarg.0 
-	IL_00b4:  ldfld string Bless.Buffers.SaveOperation::savePath
-	IL_00b9:  call bool class [mscorlib]System.IO.File::Exists(string)
-	IL_00be:  brfalse IL_00ce
+	IL_0057:  ldloc.0 
+	IL_0058:  callvirt instance bool class [Mono.Posix]Mono.Unix.UnixFileSystemInfo::get_IsBlockDevice()
+	IL_005d:  brfalse IL_0092
 
-	IL_00c3:  ldarg.0 
-	IL_00c4:  ldfld string Bless.Buffers.SaveOperation::savePath
-	IL_00c9:  call void class [mscorlib]System.IO.File::Delete(string)
-	IL_00ce:  ldarg.0 
-	IL_00cf:  ldfld class Bless.Buffers.ByteBuffer Bless.Buffers.SaveOperation::byteBuffer
-	IL_00d4:  ldfld object Bless.Buffers.ByteBuffer::LockObj
-	IL_00d9:  stloc.2 
-	IL_00da:  ldc.i4.0 
-	IL_00db:  stloc.3 
-	.try { // 0
-	  IL_00dc:  ldloc.2 
-	  IL_00dd:  ldloca.s 3
-	  IL_00df:  call void class [mscorlib]System.Threading.Monitor::Enter(object, [out] bool&)
-	  IL_00e4:  ldarg.0 
-	  IL_00e5:  ldfld class Bless.Buffers.ByteBuffer Bless.Buffers.SaveOperation::byteBuffer
-	  IL_00ea:  callvirt instance void class Bless.Buffers.ByteBuffer::MakePrivateCopyOfUndoRedo()
-	  IL_00ef:  ldarg.0 
-	  IL_00f0:  ldfld class Bless.Buffers.ByteBuffer Bless.Buffers.SaveOperation::byteBuffer
-	  IL_00f5:  ldc.i4.1 
-	  IL_00f6:  callvirt instance void class Bless.Buffers.ByteBuffer::set_FileOperationsAllowed(bool)
-	  IL_00fb:  ldarg.0 
-	  IL_00fc:  ldfld class Bless.Buffers.ByteBuffer Bless.Buffers.SaveOperation::byteBuffer
-	  IL_0101:  callvirt instance void class Bless.Buffers.ByteBuffer::CloseFile()
-	  IL_0106:  ldarg.0 
-	  IL_0107:  ldfld class Bless.Buffers.ByteBuffer Bless.Buffers.SaveOperation::byteBuffer
-	  IL_010c:  ldc.i4.0 
-	  IL_010d:  callvirt instance void class Bless.Buffers.ByteBuffer::set_FileOperationsAllowed(bool)
-	  IL_0112:  leave IL_0121
+	IL_0062:  ldloc.0 
+	IL_0063:  callvirt instance class [Mono.Posix]Mono.Unix.UnixStream class [Mono.Posix]Mono.Unix.UnixFileInfo::OpenRead()
+	IL_0068:  stloc.1 
+	IL_0069:  ldloc.1 
+	IL_006a:  callvirt instance int32 class [Mono.Posix]Mono.Unix.UnixStream::get_Handle()
+	IL_006f:  ldc.i4 -2147216782
+	IL_0074:  ldarg.0 
+	IL_0075:  ldflda int64 Bless.Buffers.FileBuffer::FileLength
+	IL_007a:  call int32 class Bless.Buffers.FileBuffer::ioctl(int32, unsigned int32, [out] int64&)
+	IL_007f:  pop 
+	IL_0080:  ldloc.1 
+	IL_0081:  callvirt instance void class [mscorlib]System.IO.Stream::Close()
+	IL_0086:  ldarg.0 
+	IL_0087:  ldc.i4.0 
+	IL_0088:  stfld bool Bless.Buffers.FileBuffer::isResizable
+	IL_008d:  br IL_009d
 
-	} // end .try 0
-	finally  { // 0
-	  IL_0117:  ldloc.3 
-	  IL_0118:  brfalse.s IL_0120
+	IL_0092:  ldstr "File object isn't a regular or block device."
+	IL_0097:  newobj instance void class [mscorlib]System.NotSupportedException::'.ctor'(string)
+	IL_009c:  throw 
+	IL_009d:  ldarg.1 
+	IL_009e:  ldc.i4.3 
+	IL_009f:  ldc.i4.1 
+	IL_00a0:  ldc.i4.3 
+	IL_00a1:  newobj instance void class [mscorlib]System.IO.FileStream::'.ctor'(string, valuetype [mscorlib]System.IO.FileMode, valuetype [mscorlib]System.IO.FileAccess, valuetype [mscorlib]System.IO.FileShare)
+	IL_00a6:  stloc.2 
+	IL_00a7:  ldloc.2 
+	IL_00a8:  callvirt instance bool class [mscorlib]System.IO.Stream::get_CanSeek()
+	IL_00ad:  brtrue IL_00bd
 
-	  IL_011a:  ldloc.2 
-	  IL_011b:  call void class [mscorlib]System.Threading.Monitor::Exit(object)
-	  IL_0120:  endfinally 
-	} // end handler 0
-	IL_0121:  ldarg.0 
-	IL_0122:  ldc.i4.2 
-	IL_0123:  stfld valuetype Bless.Buffers.SaveOperation/SaveStage Bless.Buffers.SaveOperation::stageReached
-	IL_0128:  ldarg.0 
-	IL_0129:  ldfld string Bless.Buffers.SaveOperation::tempPath
-	IL_012e:  ldarg.0 
-	IL_012f:  ldfld string Bless.Buffers.SaveOperation::savePath
-	IL_0134:  call void class [mscorlib]System.IO.File::Move(string, string)
-	IL_0139:  ret 
-    } // end of method SaveOperation::DoOperation
+	IL_00b2:  ldstr "File object doesn't support seeking."
+	IL_00b7:  newobj instance void class [mscorlib]System.NotSupportedException::'.ctor'(string)
+	IL_00bc:  throw 
+	IL_00bd:  ldarg.0 
+	IL_00be:  ldloc.2 
+	IL_00bf:  newobj instance void class [mscorlib]System.IO.BinaryReader::'.ctor'(class [mscorlib]System.IO.Stream)
+	IL_00c4:  stfld class [mscorlib]System.IO.BinaryReader Bless.Buffers.FileBuffer::reader
+	IL_00c9:  ldarg.0 
+	IL_00ca:  ldarg.0 
+	IL_00cb:  ldfld class [mscorlib]System.IO.BinaryReader Bless.Buffers.FileBuffer::reader
+	IL_00d0:  ldarg.0 
+	IL_00d1:  ldfld unsigned int8[] Bless.Buffers.FileBuffer::window
+	IL_00d6:  ldc.i4.0 
+	IL_00d7:  ldarg.0 
+	IL_00d8:  ldfld unsigned int8[] Bless.Buffers.FileBuffer::window
+	IL_00dd:  ldlen 
+	IL_00de:  conv.i4 
+	IL_00df:  callvirt instance int32 class [mscorlib]System.IO.BinaryReader::Read(unsigned int8[], int32, int32)
+	IL_00e4:  stfld int32 Bless.Buffers.FileBuffer::winOccupied
+	IL_00e9:  ldarg.0 
+	IL_00ea:  ldc.i4.0 
+	IL_00eb:  conv.i8 
+	IL_00ec:  stfld int64 Bless.Buffers.FileBuffer::winOffset
+	IL_00f1:  ret 
+    } // end of method FileBuffer::Load
 
-    // method line 43
-    .method family virtual hidebysig 
-           instance default void EndOperation ()  cil managed 
+    // method line 21
+    .method public hidebysig specialname 
+           instance default string get_Filename ()  cil managed 
     {
-        // Method begins at RVA 0x2768
-	// Code size 1 (0x1)
+        // Method begins at RVA 0x29e2
+	// Code size 35 (0x23)
 	.maxstack 8
-	IL_0000:  ret 
-    } // end of method SaveOperation::EndOperation
+	IL_0000:  ldarg.0 
+	IL_0001:  ldfld class [mscorlib]System.IO.BinaryReader Bless.Buffers.FileBuffer::reader
+	IL_0006:  brfalse IL_0021
 
-    // method line 44
-    .method private final virtual hidebysig newslot strict 
-           instance default valuetype [Bless.Util]Bless.Util.ThreadedAsyncOperation/OperationResult Bless.Buffers.ISaveState.get_Result ()  cil managed 
+	IL_000b:  ldarg.0 
+	IL_000c:  ldfld class [mscorlib]System.IO.BinaryReader Bless.Buffers.FileBuffer::reader
+	IL_0011:  callvirt instance class [mscorlib]System.IO.Stream class [mscorlib]System.IO.BinaryReader::get_BaseStream()
+	IL_0016:  isinst [mscorlib]System.IO.FileStream
+	IL_001b:  callvirt instance string class [mscorlib]System.IO.FileStream::get_Name()
+	IL_0020:  ret 
+	IL_0021:  ldnull 
+	IL_0022:  ret 
+    } // end of method FileBuffer::get_Filename
+
+    // method line 22
+    .method public hidebysig specialname 
+           instance default bool get_IsResizable ()  cil managed 
     {
-        // Method begins at RVA 0x276a
-	.override Could not decode method override class Bless.Buffers.ISaveState::get_Result due to (null)
+        // Method begins at RVA 0x2a06
 	// Code size 7 (0x7)
 	.maxstack 8
 	IL_0000:  ldarg.0 
-	IL_0001:  call instance valuetype [Bless.Util]Bless.Util.ThreadedAsyncOperation/OperationResult class [Bless.Util]Bless.Util.ThreadedAsyncOperation::get_Result()
+	IL_0001:  ldfld bool Bless.Buffers.FileBuffer::isResizable
 	IL_0006:  ret 
-    } // end of method SaveOperation::Bless.Buffers.ISaveState.get_Result
+    } // end of method FileBuffer::get_IsResizable
 
-    // method line 45
-    .method private final virtual hidebysig newslot strict 
-           instance default class [mscorlib]System.Exception Bless.Buffers.ISaveState.get_ThreadException ()  cil managed 
+    // method line 23
+    .method public hidebysig 
+           instance default void Close ()  cil managed 
     {
-        // Method begins at RVA 0x2772
-	.override Could not decode method override class Bless.Buffers.ISaveState::get_ThreadException due to (null)
-	// Code size 7 (0x7)
+        // Method begins at RVA 0x2a0e
+	// Code size 19 (0x13)
 	.maxstack 8
 	IL_0000:  ldarg.0 
-	IL_0001:  call instance class [mscorlib]System.Exception class [Bless.Util]Bless.Util.ThreadedAsyncOperation::get_ThreadException()
-	IL_0006:  ret 
-    } // end of method SaveOperation::Bless.Buffers.ISaveState.get_ThreadException
+	IL_0001:  ldfld class [mscorlib]System.IO.BinaryReader Bless.Buffers.FileBuffer::reader
+	IL_0006:  callvirt instance void class [mscorlib]System.IO.BinaryReader::Close()
+	IL_000b:  ldarg.0 
+	IL_000c:  ldnull 
+	IL_000d:  stfld class [mscorlib]System.IO.BinaryReader Bless.Buffers.FileBuffer::reader
+	IL_0012:  ret 
+    } // end of method FileBuffer::Close
 
-	.property instance class Bless.Buffers.ByteBuffer Buffer ()
-	{
-		.get instance default class Bless.Buffers.ByteBuffer Bless.Buffers.SaveOperation::get_Buffer () 
-	}
-	.property instance string SavePath ()
+	.property instance unsigned int8 Item (int64)
 	{
-		.get instance default string Bless.Buffers.SaveOperation::get_SavePath () 
-		.set instance default void Bless.Buffers.SaveOperation::set_SavePath (string 'value') 
+		.get instance default unsigned int8 Bless.Buffers.FileBuffer::get_Item (int64 index) 
+		.set instance default void Bless.Buffers.FileBuffer::set_Item (int64 index, unsigned int8 'value') 
 	}
-	.property instance int64 BytesSaved ()
+	.property instance int64 Size ()
 	{
-		.get instance default int64 Bless.Buffers.SaveOperation::get_BytesSaved () 
+		.get instance default int64 Bless.Buffers.FileBuffer::get_Size () 
 	}
-	.property instance string TempPath ()
+	.property instance string Filename ()
 	{
-		.get instance default string Bless.Buffers.SaveOperation::get_TempPath () 
+		.get instance default string Bless.Buffers.FileBuffer::get_Filename () 
 	}
-	.property instance valuetype Bless.Buffers.SaveOperation/SaveStage StageReached ()
+	.property instance bool IsResizable ()
 	{
-		.get instance default valuetype Bless.Buffers.SaveOperation/SaveStage Bless.Buffers.SaveOperation::get_StageReached () 
+		.get instance default bool Bless.Buffers.FileBuffer::get_IsResizable () 
 	}
-  .class nested public auto ansi sealed SaveStage
-  	extends [mscorlib]System.Enum
-  {
-    .field  public specialname rtspecialname  int32 value__
-    .field public static literal  valuetype Bless.Buffers.SaveOperation/SaveStage BeforeSaveAs = int32(0x00000000)
-    .field public static literal  valuetype Bless.Buffers.SaveOperation/SaveStage BeforeDelete = int32(0x00000001)
-    .field public static literal  valuetype Bless.Buffers.SaveOperation/SaveStage BeforeMove = int32(0x00000002)
-
-  } // end of class SaveStage
-
-  } // end of class Bless.Buffers.SaveOperation
+  } // end of class Bless.Buffers.FileBuffer
 }
 
 .namespace Bless.Buffers
 {
-  .class private auto ansi abstract beforefieldinit ByteBufferAction
+  .class public auto ansi beforefieldinit Segment
   	extends [mscorlib]System.Object
   {
+    .field  private  class Bless.Buffers.IBuffer buffer
+    .field  private  int64 start
+    .field  private  int64 end
 
-    // method line 46
-    .method family hidebysig specialname rtspecialname 
-           instance default void '.ctor' ()  cil managed 
+    // method line 24
+    .method public hidebysig specialname rtspecialname 
+           instance default void '.ctor' (class Bless.Buffers.IBuffer buffer, int64 start, int64 end)  cil managed 
+    {
+        // Method begins at RVA 0x2a22
+	// Code size 28 (0x1c)
+	.maxstack 8
+	IL_0000:  ldarg.0 
+	IL_0001:  call instance void object::'.ctor'()
+	IL_0006:  ldarg.0 
+	IL_0007:  ldarg.1 
+	IL_0008:  stfld class Bless.Buffers.IBuffer Bless.Buffers.Segment::buffer
+	IL_000d:  ldarg.0 
+	IL_000e:  ldarg.2 
+	IL_000f:  stfld int64 Bless.Buffers.Segment::start
+	IL_0014:  ldarg.0 
+	IL_0015:  ldarg.3 
+	IL_0016:  stfld int64 Bless.Buffers.Segment::end
+	IL_001b:  ret 
+    } // end of method Segment::.ctor
+
+    // method line 25
+    .method public hidebysig 
+           instance default bool Contains (int64 offset, int64 mapping)  cil managed 
+    {
+        // Method begins at RVA 0x2a3f
+	// Code size 32 (0x20)
+	.maxstack 8
+	IL_0000:  ldarg.1 
+	IL_0001:  ldarg.2 
+	IL_0002:  blt IL_001e
+
+	IL_0007:  ldarg.1 
+	IL_0008:  ldarg.2 
+	IL_0009:  ldarg.0 
+	IL_000a:  ldfld int64 Bless.Buffers.Segment::end
+	IL_000f:  add 
+	IL_0010:  ldarg.0 
+	IL_0011:  ldfld int64 Bless.Buffers.Segment::start
+	IL_0016:  sub 
+	IL_0017:  bgt IL_001e
+
+	IL_001c:  ldc.i4.1 
+	IL_001d:  ret 
+	IL_001e:  ldc.i4.0 
+	IL_001f:  ret 
+    } // end of method Segment::Contains
+
+    // method line 26
+    .method public hidebysig 
+           instance default class Bless.Buffers.Segment SplitAt (int64 pos)  cil managed 
+    {
+        // Method begins at RVA 0x2a60
+	// Code size 74 (0x4a)
+	.maxstack 3
+	.locals init (
+		class Bless.Buffers.Segment	V_0)
+	IL_0000:  ldarg.1 
+	IL_0001:  ldarg.0 
+	IL_0002:  ldfld int64 Bless.Buffers.Segment::end
+	IL_0007:  ldarg.0 
+	IL_0008:  ldfld int64 Bless.Buffers.Segment::start
+	IL_000d:  sub 
+	IL_000e:  bgt IL_001b
+
+	IL_0013:  ldarg.1 
+	IL_0014:  ldc.i4.0 
+	IL_0015:  conv.i8 
+	IL_0016:  bne.un IL_001d
+
+	IL_001b:  ldnull 
+	IL_001c:  ret 
+	IL_001d:  ldarg.0 
+	IL_001e:  ldfld class Bless.Buffers.IBuffer Bless.Buffers.Segment::buffer
+	IL_0023:  ldarg.0 
+	IL_0024:  ldfld int64 Bless.Buffers.Segment::start
+	IL_0029:  ldarg.1 
+	IL_002a:  add 
+	IL_002b:  ldarg.0 
+	IL_002c:  ldfld int64 Bless.Buffers.Segment::end
+	IL_0031:  newobj instance void class Bless.Buffers.Segment::'.ctor'(class Bless.Buffers.IBuffer, int64, int64)
+	IL_0036:  stloc.0 
+	IL_0037:  ldarg.0 
+	IL_0038:  ldarg.0 
+	IL_0039:  ldfld int64 Bless.Buffers.Segment::start
+	IL_003e:  ldarg.1 
+	IL_003f:  add 
+	IL_0040:  ldc.i4.1 
+	IL_0041:  conv.i8 
+	IL_0042:  sub 
+	IL_0043:  stfld int64 Bless.Buffers.Segment::end
+	IL_0048:  ldloc.0 
+	IL_0049:  ret 
+    } // end of method Segment::SplitAt
+
+    // method line 27
+    .method public hidebysig 
+           instance default void MakePrivateCopyOfData ()  cil managed 
+    {
+        // Method begins at RVA 0x2ab8
+	// Code size 61 (0x3d)
+	.maxstack 4
+	.locals init (
+		class Bless.Buffers.SimpleBuffer	V_0)
+	IL_0000:  newobj instance void class Bless.Buffers.SimpleBuffer::'.ctor'()
+	IL_0005:  stloc.0 
+	IL_0006:  ldloc.0 
+	IL_0007:  ldarg.0 
+	IL_0008:  ldfld class Bless.Buffers.IBuffer Bless.Buffers.Segment::buffer
+	IL_000d:  ldarg.0 
+	IL_000e:  ldfld int64 Bless.Buffers.Segment::start
+	IL_0013:  ldarg.0 
+	IL_0014:  call instance int64 class Bless.Buffers.Segment::get_Size()
+	IL_0019:  callvirt instance void class Bless.Buffers.BaseBuffer::AppendBuffer(class Bless.Buffers.IBuffer, int64, int64)
+	IL_001e:  ldarg.0 
+	IL_001f:  ldloc.0 
+	IL_0020:  stfld class Bless.Buffers.IBuffer Bless.Buffers.Segment::buffer
+	IL_0025:  ldarg.0 
+	IL_0026:  ldc.i4.0 
+	IL_0027:  conv.i8 
+	IL_0028:  stfld int64 Bless.Buffers.Segment::start
+	IL_002d:  ldarg.0 
+	IL_002e:  ldloc.0 
+	IL_002f:  callvirt instance int64 class Bless.Buffers.BaseBuffer::get_Size()
+	IL_0034:  ldc.i4.1 
+	IL_0035:  conv.i8 
+	IL_0036:  sub 
+	IL_0037:  stfld int64 Bless.Buffers.Segment::end
+	IL_003c:  ret 
+    } // end of method Segment::MakePrivateCopyOfData
+
+    // method line 28
+    .method public virtual hidebysig 
+           instance default string ToString ()  cil managed 
+    {
+        // Method begins at RVA 0x2b01
+	// Code size 33 (0x21)
+	.maxstack 8
+	IL_0000:  ldstr "({0}->{1})"
+	IL_0005:  ldarg.0 
+	IL_0006:  ldfld int64 Bless.Buffers.Segment::start
+	IL_000b:  box [mscorlib]System.Int64
+	IL_0010:  ldarg.0 
+	IL_0011:  ldfld int64 Bless.Buffers.Segment::end
+	IL_0016:  box [mscorlib]System.Int64
+	IL_001b:  call string string::Format(string, object, object)
+	IL_0020:  ret 
+    } // end of method Segment::ToString
+
+    // method line 29
+    .method public hidebysig specialname 
+           instance default int64 get_Size ()  cil managed 
+    {
+        // Method begins at RVA 0x2b23
+	// Code size 17 (0x11)
+	.maxstack 8
+	IL_0000:  ldarg.0 
+	IL_0001:  ldfld int64 Bless.Buffers.Segment::end
+	IL_0006:  ldarg.0 
+	IL_0007:  ldfld int64 Bless.Buffers.Segment::start
+	IL_000c:  sub 
+	IL_000d:  ldc.i4.1 
+	IL_000e:  conv.i8 
+	IL_000f:  add 
+	IL_0010:  ret 
+    } // end of method Segment::get_Size
+
+    // method line 30
+    .method public hidebysig specialname 
+           instance default class Bless.Buffers.IBuffer get_Buffer ()  cil managed 
     {
-        // Method begins at RVA 0x277a
+        // Method begins at RVA 0x2b35
 	// Code size 7 (0x7)
 	.maxstack 8
 	IL_0000:  ldarg.0 
-	IL_0001:  call instance void object::'.ctor'()
+	IL_0001:  ldfld class Bless.Buffers.IBuffer Bless.Buffers.Segment::buffer
 	IL_0006:  ret 
-    } // end of method ByteBufferAction::.ctor
-
-    // method line 47
-    .method public virtual hidebysig newslot abstract 
-           instance default void Do ()  cil managed 
-    {
-        // Method begins at RVA 0x0
-    } // end of method ByteBufferAction::Do
-
-    // method line 48
-    .method public virtual hidebysig newslot abstract 
-           instance default void Undo ()  cil managed 
-    {
-        // Method begins at RVA 0x0
-    } // end of method ByteBufferAction::Undo
+    } // end of method Segment::get_Buffer
 
-    // method line 49
-    .method public virtual hidebysig newslot 
-           instance default void MakePrivateCopyOfData ()  cil managed 
+    // method line 31
+    .method public hidebysig specialname 
+           instance default void set_Buffer (class Bless.Buffers.IBuffer 'value')  cil managed 
     {
-        // Method begins at RVA 0x2782
-	// Code size 1 (0x1)
+        // Method begins at RVA 0x2b3d
+	// Code size 8 (0x8)
 	.maxstack 8
-	IL_0000:  ret 
-    } // end of method ByteBufferAction::MakePrivateCopyOfData
+	IL_0000:  ldarg.0 
+	IL_0001:  ldarg.1 
+	IL_0002:  stfld class Bless.Buffers.IBuffer Bless.Buffers.Segment::buffer
+	IL_0007:  ret 
+    } // end of method Segment::set_Buffer
 
-    // method line 50
-    .method public virtual hidebysig newslot 
-           instance default int64 GetPrivateCopySize ()  cil managed 
+    // method line 32
+    .method public hidebysig specialname 
+           instance default int64 get_Start ()  cil managed 
     {
-        // Method begins at RVA 0x2784
-	// Code size 3 (0x3)
+        // Method begins at RVA 0x2b46
+	// Code size 7 (0x7)
 	.maxstack 8
-	IL_0000:  ldc.i4.0 
-	IL_0001:  conv.i8 
-	IL_0002:  ret 
-    } // end of method ByteBufferAction::GetPrivateCopySize
-
-  } // end of class Bless.Buffers.ByteBufferAction
-}
-
-.namespace Bless.Buffers
-{
-  .class private auto ansi beforefieldinit AppendAction
-  	extends Bless.Buffers.ByteBufferAction
-  {
-    .field  private  class Bless.Buffers.Segment seg
-    .field  private  class Bless.Buffers.ByteBuffer byteBuf
+	IL_0000:  ldarg.0 
+	IL_0001:  ldfld int64 Bless.Buffers.Segment::start
+	IL_0006:  ret 
+    } // end of method Segment::get_Start
 
-    // method line 51
-    .method public hidebysig specialname rtspecialname 
-           instance default void '.ctor' (unsigned int8[] d, int64 index, int64 length, class Bless.Buffers.ByteBuffer bb)  cil managed 
+    // method line 33
+    .method public hidebysig specialname 
+           instance default void set_Start (int64 'value')  cil managed 
     {
-        // Method begins at RVA 0x2788
-	// Code size 79 (0x4f)
-	.maxstack 5
-	.locals init (
-		class Bless.Buffers.SimpleBuffer	V_0)
+        // Method begins at RVA 0x2b4e
+	// Code size 8 (0x8)
+	.maxstack 8
 	IL_0000:  ldarg.0 
-	IL_0001:  call instance void class Bless.Buffers.ByteBufferAction::'.ctor'()
-	IL_0006:  ldarg.0 
-	IL_0007:  ldarg.s 4
-	IL_0009:  stfld class Bless.Buffers.ByteBuffer Bless.Buffers.AppendAction::byteBuf
-	IL_000e:  ldarg.1 
-	IL_000f:  ldlen 
-	IL_0010:  conv.i4 
-	IL_0011:  brtrue IL_0022
-
-	IL_0016:  ldarg.0 
-	IL_0017:  ldnull 
-	IL_0018:  stfld class Bless.Buffers.Segment Bless.Buffers.AppendAction::seg
-	IL_001d:  br IL_004e
-
-	IL_0022:  newobj instance void class Bless.Buffers.SimpleBuffer::'.ctor'()
-	IL_0027:  stloc.0 
-	IL_0028:  ldarg.0 
-	IL_0029:  ldloc.0 
-	IL_002a:  ldloc.0 
-	IL_002b:  callvirt instance int64 class Bless.Buffers.BaseBuffer::get_Size()
-	IL_0030:  ldloc.0 
-	IL_0031:  callvirt instance int64 class Bless.Buffers.BaseBuffer::get_Size()
-	IL_0036:  ldarg.3 
-	IL_0037:  add 
-	IL_0038:  ldc.i4.1 
-	IL_0039:  conv.i8 
-	IL_003a:  sub 
-	IL_003b:  newobj instance void class Bless.Buffers.Segment::'.ctor'(class Bless.Buffers.IBuffer, int64, int64)
-	IL_0040:  stfld class Bless.Buffers.Segment Bless.Buffers.AppendAction::seg
-	IL_0045:  ldloc.0 
-	IL_0046:  ldarg.1 
-	IL_0047:  ldarg.2 
-	IL_0048:  ldarg.3 
-	IL_0049:  callvirt instance void class Bless.Buffers.BaseBuffer::Append(unsigned int8[], int64, int64)
-	IL_004e:  ret 
-    } // end of method AppendAction::.ctor
+	IL_0001:  ldarg.1 
+	IL_0002:  stfld int64 Bless.Buffers.Segment::start
+	IL_0007:  ret 
+    } // end of method Segment::set_Start
 
-    // method line 52
-    .method public virtual hidebysig 
-           instance default void Do ()  cil managed 
+    // method line 34
+    .method public hidebysig specialname 
+           instance default int64 get_End ()  cil managed 
     {
-        // Method begins at RVA 0x27e4
-	// Code size 96 (0x60)
-	.maxstack 4
+        // Method begins at RVA 0x2b57
+	// Code size 7 (0x7)
+	.maxstack 8
 	IL_0000:  ldarg.0 
-	IL_0001:  ldfld class Bless.Buffers.Segment Bless.Buffers.AppendAction::seg
-	IL_0006:  brtrue IL_000c
-
-	IL_000b:  ret 
-	IL_000c:  ldarg.0 
-	IL_000d:  ldfld class Bless.Buffers.ByteBuffer Bless.Buffers.AppendAction::byteBuf
-	IL_0012:  ldfld class Bless.Buffers.SegmentCollection Bless.Buffers.ByteBuffer::segCol
-	IL_0017:  ldarg.0 
-	IL_0018:  ldfld class Bless.Buffers.Segment Bless.Buffers.AppendAction::seg
-	IL_001d:  callvirt instance class Bless.Buffers.IBuffer class Bless.Buffers.Segment::get_Buffer()
-	IL_0022:  ldarg.0 
-	IL_0023:  ldfld class Bless.Buffers.Segment Bless.Buffers.AppendAction::seg
-	IL_0028:  callvirt instance int64 class Bless.Buffers.Segment::get_Start()
-	IL_002d:  ldarg.0 
-	IL_002e:  ldfld class Bless.Buffers.Segment Bless.Buffers.AppendAction::seg
-	IL_0033:  callvirt instance int64 class Bless.Buffers.Segment::get_End()
-	IL_0038:  newobj instance void class Bless.Buffers.Segment::'.ctor'(class Bless.Buffers.IBuffer, int64, int64)
-	IL_003d:  callvirt instance void class Bless.Buffers.SegmentCollection::Append(class Bless.Buffers.Segment)
-	IL_0042:  ldarg.0 
-	IL_0043:  ldfld class Bless.Buffers.ByteBuffer Bless.Buffers.AppendAction::byteBuf
-	IL_0048:  dup 
-	IL_0049:  ldfld int64 Bless.Buffers.ByteBuffer::size
-	IL_004e:  ldarg.0 
-	IL_004f:  ldfld class Bless.Buffers.Segment Bless.Buffers.AppendAction::seg
-	IL_0054:  callvirt instance int64 class Bless.Buffers.Segment::get_Size()
-	IL_0059:  add 
-	IL_005a:  stfld int64 Bless.Buffers.ByteBuffer::size
-	IL_005f:  ret 
-    } // end of method AppendAction::Do
+	IL_0001:  ldfld int64 Bless.Buffers.Segment::end
+	IL_0006:  ret 
+    } // end of method Segment::get_End
 
-    // method line 53
-    .method public virtual hidebysig 
-           instance default void Undo ()  cil managed 
+    // method line 35
+    .method public hidebysig specialname 
+           instance default void set_End (int64 'value')  cil managed 
     {
-        // Method begins at RVA 0x2850
-	// Code size 96 (0x60)
-	.maxstack 4
+        // Method begins at RVA 0x2b5f
+	// Code size 8 (0x8)
+	.maxstack 8
 	IL_0000:  ldarg.0 
-	IL_0001:  ldfld class Bless.Buffers.Segment Bless.Buffers.AppendAction::seg
-	IL_0006:  brtrue IL_000c
-
-	IL_000b:  ret 
-	IL_000c:  ldarg.0 
-	IL_000d:  ldfld class Bless.Buffers.ByteBuffer Bless.Buffers.AppendAction::byteBuf
-	IL_0012:  dup 
-	IL_0013:  ldfld int64 Bless.Buffers.ByteBuffer::size
-	IL_0018:  ldarg.0 
-	IL_0019:  ldfld class Bless.Buffers.Segment Bless.Buffers.AppendAction::seg
-	IL_001e:  callvirt instance int64 class Bless.Buffers.Segment::get_Size()
-	IL_0023:  sub 
-	IL_0024:  stfld int64 Bless.Buffers.ByteBuffer::size
-	IL_0029:  ldarg.0 
-	IL_002a:  ldfld class Bless.Buffers.ByteBuffer Bless.Buffers.AppendAction::byteBuf
-	IL_002f:  ldfld class Bless.Buffers.SegmentCollection Bless.Buffers.ByteBuffer::segCol
-	IL_0034:  ldarg.0 
-	IL_0035:  ldfld class Bless.Buffers.ByteBuffer Bless.Buffers.AppendAction::byteBuf
-	IL_003a:  ldfld int64 Bless.Buffers.ByteBuffer::size
-	IL_003f:  ldarg.0 
-	IL_0040:  ldfld class Bless.Buffers.ByteBuffer Bless.Buffers.AppendAction::byteBuf
-	IL_0045:  ldfld int64 Bless.Buffers.ByteBuffer::size
-	IL_004a:  ldarg.0 
-	IL_004b:  ldfld class Bless.Buffers.Segment Bless.Buffers.AppendAction::seg
-	IL_0050:  callvirt instance int64 class Bless.Buffers.Segment::get_Size()
-	IL_0055:  add 
-	IL_0056:  ldc.i4.1 
-	IL_0057:  conv.i8 
-	IL_0058:  sub 
-	IL_0059:  callvirt instance class Bless.Buffers.SegmentCollection class Bless.Buffers.SegmentCollection::DeleteRange(int64, int64)
-	IL_005e:  pop 
-	IL_005f:  ret 
-    } // end of method AppendAction::Undo
+	IL_0001:  ldarg.1 
+	IL_0002:  stfld int64 Bless.Buffers.Segment::end
+	IL_0007:  ret 
+    } // end of method Segment::set_End
 
-  } // end of class Bless.Buffers.AppendAction
+	.property instance int64 Size ()
+	{
+		.get instance default int64 Bless.Buffers.Segment::get_Size () 
+	}
+	.property instance class Bless.Buffers.IBuffer Buffer ()
+	{
+		.get instance default class Bless.Buffers.IBuffer Bless.Buffers.Segment::get_Buffer () 
+		.set instance default void Bless.Buffers.Segment::set_Buffer (class Bless.Buffers.IBuffer 'value') 
+	}
+	.property instance int64 Start ()
+	{
+		.get instance default int64 Bless.Buffers.Segment::get_Start () 
+		.set instance default void Bless.Buffers.Segment::set_Start (int64 'value') 
+	}
+	.property instance int64 End ()
+	{
+		.get instance default int64 Bless.Buffers.Segment::get_End () 
+		.set instance default void Bless.Buffers.Segment::set_End (int64 'value') 
+	}
+  } // end of class Bless.Buffers.Segment
 }
 
 .namespace Bless.Buffers
 {
-  .class private auto ansi beforefieldinit InsertAction
-  	extends Bless.Buffers.ByteBufferAction
-  {
-    .field  private  class Bless.Buffers.Segment seg
-    .field  private  int64 pos
-    .field  private  class Bless.Buffers.ByteBuffer byteBuf
+  .class public auto ansi beforefieldinit SaveOperation
+  	extends [Bless.Util]Bless.Util.ThreadedAsyncOperation
+  	implements Bless.Buffers.ISaveState  {
+    .field  family  class Bless.Buffers.ByteBuffer byteBuffer
+    .field  family  int64 bytesSaved
+    .field  family  string savePath
+    .field  private  string tempPath
+    .field  private  valuetype Bless.Buffers.SaveOperation/SaveStage stageReached
+
+    // method line 36
+    .method public hidebysig specialname rtspecialname 
+           instance default void '.ctor' (class Bless.Buffers.ByteBuffer bb, string tempFilename, class [Bless.Util]Bless.Util.ProgressCallback pc, class [mscorlib]System.AsyncCallback ac, bool glibIdle)  cil managed 
+    {
+        // Method begins at RVA 0x2b68
+	// Code size 58 (0x3a)
+	.maxstack 8
+	IL_0000:  ldarg.0 
+	IL_0001:  ldarg.3 
+	IL_0002:  ldarg.s 4
+	IL_0004:  ldarg.s 5
+	IL_0006:  call instance void class [Bless.Util]Bless.Util.ThreadedAsyncOperation::'.ctor'(class [Bless.Util]Bless.Util.ProgressCallback, class [mscorlib]System.AsyncCallback, bool)
+	IL_000b:  ldarg.0 
+	IL_000c:  ldarg.1 
+	IL_000d:  stfld class Bless.Buffers.ByteBuffer Bless.Buffers.SaveOperation::byteBuffer
+	IL_0012:  ldarg.0 
+	IL_0013:  ldarg.0 
+	IL_0014:  ldfld class Bless.Buffers.ByteBuffer Bless.Buffers.SaveOperation::byteBuffer
+	IL_0019:  callvirt instance string class Bless.Buffers.ByteBuffer::get_Filename()
+	IL_001e:  stfld string Bless.Buffers.SaveOperation::savePath
+	IL_0023:  ldarg.0 
+	IL_0024:  ldarg.2 
+	IL_0025:  stfld string Bless.Buffers.SaveOperation::tempPath
+	IL_002a:  ldarg.0 
+	IL_002b:  ldc.i4.0 
+	IL_002c:  conv.i8 
+	IL_002d:  stfld int64 Bless.Buffers.SaveOperation::bytesSaved
+	IL_0032:  ldarg.0 
+	IL_0033:  ldc.i4.0 
+	IL_0034:  stfld bool [Bless.Util]Bless.Util.ThreadedAsyncOperation::activateProgress
+	IL_0039:  ret 
+    } // end of method SaveOperation::.ctor
 
-    // method line 54
-    .method public hidebysig specialname rtspecialname 
-           instance default void '.ctor' (int64 p, unsigned int8[] d, int64 index, int64 length, class Bless.Buffers.ByteBuffer bb)  cil managed 
+    // method line 37
+    .method public final virtual hidebysig newslot specialname 
+           instance default class Bless.Buffers.ByteBuffer get_Buffer ()  cil managed 
     {
-        // Method begins at RVA 0x28bc
-	// Code size 89 (0x59)
-	.maxstack 5
-	.locals init (
-		class Bless.Buffers.SimpleBuffer	V_0)
+        // Method begins at RVA 0x2ba3
+	// Code size 7 (0x7)
+	.maxstack 8
 	IL_0000:  ldarg.0 
-	IL_0001:  call instance void class Bless.Buffers.ByteBufferAction::'.ctor'()
-	IL_0006:  ldarg.0 
-	IL_0007:  ldarg.s 5
-	IL_0009:  stfld class Bless.Buffers.ByteBuffer Bless.Buffers.InsertAction::byteBuf
-	IL_000e:  ldarg.0 
-	IL_000f:  ldarg.1 
-	IL_0010:  stfld int64 Bless.Buffers.InsertAction::pos
-	IL_0015:  ldarg.s 4
-	IL_0017:  ldc.i4.0 
-	IL_0018:  conv.i8 
-	IL_0019:  bne.un IL_002a
+	IL_0001:  ldfld class Bless.Buffers.ByteBuffer Bless.Buffers.SaveOperation::byteBuffer
+	IL_0006:  ret 
+    } // end of method SaveOperation::get_Buffer
 
-	IL_001e:  ldarg.0 
-	IL_001f:  ldnull 
-	IL_0020:  stfld class Bless.Buffers.Segment Bless.Buffers.InsertAction::seg
-	IL_0025:  br IL_0058
+    // method line 38
+    .method public final virtual hidebysig newslot specialname 
+           instance default string get_SavePath ()  cil managed 
+    {
+        // Method begins at RVA 0x2bab
+	// Code size 7 (0x7)
+	.maxstack 8
+	IL_0000:  ldarg.0 
+	IL_0001:  ldfld string Bless.Buffers.SaveOperation::savePath
+	IL_0006:  ret 
+    } // end of method SaveOperation::get_SavePath
 
-	IL_002a:  newobj instance void class Bless.Buffers.SimpleBuffer::'.ctor'()
-	IL_002f:  stloc.0 
-	IL_0030:  ldarg.0 
-	IL_0031:  ldloc.0 
-	IL_0032:  ldloc.0 
-	IL_0033:  callvirt instance int64 class Bless.Buffers.BaseBuffer::get_Size()
-	IL_0038:  ldloc.0 
-	IL_0039:  callvirt instance int64 class Bless.Buffers.BaseBuffer::get_Size()
-	IL_003e:  ldarg.s 4
-	IL_0040:  add 
-	IL_0041:  ldc.i4.1 
-	IL_0042:  conv.i8 
-	IL_0043:  sub 
-	IL_0044:  newobj instance void class Bless.Buffers.Segment::'.ctor'(class Bless.Buffers.IBuffer, int64, int64)
-	IL_0049:  stfld class Bless.Buffers.Segment Bless.Buffers.InsertAction::seg
-	IL_004e:  ldloc.0 
-	IL_004f:  ldarg.2 
-	IL_0050:  ldarg.3 
-	IL_0051:  ldarg.s 4
-	IL_0053:  callvirt instance void class Bless.Buffers.BaseBuffer::Append(unsigned int8[], int64, int64)
-	IL_0058:  ret 
-    } // end of method InsertAction::.ctor
+    // method line 39
+    .method public hidebysig specialname 
+           instance default void set_SavePath (string 'value')  cil managed 
+    {
+        // Method begins at RVA 0x2bb3
+	// Code size 8 (0x8)
+	.maxstack 8
+	IL_0000:  ldarg.0 
+	IL_0001:  ldarg.1 
+	IL_0002:  stfld string Bless.Buffers.SaveOperation::savePath
+	IL_0007:  ret 
+    } // end of method SaveOperation::set_SavePath
 
-    // method line 55
-    .method public virtual hidebysig 
-           instance default void Do ()  cil managed 
+    // method line 40
+    .method public hidebysig specialname 
+           instance default int64 get_BytesSaved ()  cil managed 
     {
-        // Method begins at RVA 0x2924
-	// Code size 115 (0x73)
-	.maxstack 4
-	.locals init (
-		class Bless.Buffers.SegmentCollection	V_0)
+        // Method begins at RVA 0x2bbc
+	// Code size 7 (0x7)
+	.maxstack 8
 	IL_0000:  ldarg.0 
-	IL_0001:  ldfld class Bless.Buffers.Segment Bless.Buffers.InsertAction::seg
-	IL_0006:  brtrue IL_000c
+	IL_0001:  ldfld int64 Bless.Buffers.SaveOperation::bytesSaved
+	IL_0006:  ret 
+    } // end of method SaveOperation::get_BytesSaved
 
-	IL_000b:  ret 
-	IL_000c:  newobj instance void class Bless.Buffers.SegmentCollection::'.ctor'()
-	IL_0011:  stloc.0 
-	IL_0012:  ldloc.0 
-	IL_0013:  ldarg.0 
-	IL_0014:  ldfld class Bless.Buffers.Segment Bless.Buffers.InsertAction::seg
-	IL_0019:  callvirt instance class Bless.Buffers.IBuffer class Bless.Buffers.Segment::get_Buffer()
-	IL_001e:  ldarg.0 
-	IL_001f:  ldfld class Bless.Buffers.Segment Bless.Buffers.InsertAction::seg
-	IL_0024:  callvirt instance int64 class Bless.Buffers.Segment::get_Start()
-	IL_0029:  ldarg.0 
-	IL_002a:  ldfld class Bless.Buffers.Segment Bless.Buffers.InsertAction::seg
-	IL_002f:  callvirt instance int64 class Bless.Buffers.Segment::get_End()
-	IL_0034:  newobj instance void class Bless.Buffers.Segment::'.ctor'(class Bless.Buffers.IBuffer, int64, int64)
-	IL_0039:  callvirt instance void class Bless.Buffers.SegmentCollection::Append(class Bless.Buffers.Segment)
-	IL_003e:  ldarg.0 
-	IL_003f:  ldfld class Bless.Buffers.ByteBuffer Bless.Buffers.InsertAction::byteBuf
-	IL_0044:  ldfld class Bless.Buffers.SegmentCollection Bless.Buffers.ByteBuffer::segCol
-	IL_0049:  ldloc.0 
-	IL_004a:  ldarg.0 
-	IL_004b:  ldfld int64 Bless.Buffers.InsertAction::pos
-	IL_0050:  callvirt instance void class Bless.Buffers.SegmentCollection::Insert(class Bless.Buffers.SegmentCollection, int64)
-	IL_0055:  ldarg.0 
-	IL_0056:  ldfld class Bless.Buffers.ByteBuffer Bless.Buffers.InsertAction::byteBuf
-	IL_005b:  dup 
-	IL_005c:  ldfld int64 Bless.Buffers.ByteBuffer::size
-	IL_0061:  ldarg.0 
-	IL_0062:  ldfld class Bless.Buffers.Segment Bless.Buffers.InsertAction::seg
-	IL_0067:  callvirt instance int64 class Bless.Buffers.Segment::get_Size()
-	IL_006c:  add 
-	IL_006d:  stfld int64 Bless.Buffers.ByteBuffer::size
-	IL_0072:  ret 
-    } // end of method InsertAction::Do
+    // method line 41
+    .method public hidebysig specialname 
+           instance default string get_TempPath ()  cil managed 
+    {
+        // Method begins at RVA 0x2bc4
+	// Code size 7 (0x7)
+	.maxstack 8
+	IL_0000:  ldarg.0 
+	IL_0001:  ldfld string Bless.Buffers.SaveOperation::tempPath
+	IL_0006:  ret 
+    } // end of method SaveOperation::get_TempPath
 
-    // method line 56
-    .method public virtual hidebysig 
-           instance default void Undo ()  cil managed 
+    // method line 42
+    .method public hidebysig specialname 
+           instance default valuetype Bless.Buffers.SaveOperation/SaveStage get_StageReached ()  cil managed 
     {
-        // Method begins at RVA 0x29a4
-	// Code size 86 (0x56)
-	.maxstack 4
+        // Method begins at RVA 0x2bcc
+	// Code size 7 (0x7)
+	.maxstack 8
 	IL_0000:  ldarg.0 
-	IL_0001:  ldfld class Bless.Buffers.Segment Bless.Buffers.InsertAction::seg
-	IL_0006:  brtrue IL_000c
+	IL_0001:  ldfld valuetype Bless.Buffers.SaveOperation/SaveStage Bless.Buffers.SaveOperation::stageReached
+	IL_0006:  ret 
+    } // end of method SaveOperation::get_StageReached
 
-	IL_000b:  ret 
-	IL_000c:  ldarg.0 
-	IL_000d:  ldfld class Bless.Buffers.ByteBuffer Bless.Buffers.InsertAction::byteBuf
-	IL_0012:  ldfld class Bless.Buffers.SegmentCollection Bless.Buffers.ByteBuffer::segCol
-	IL_0017:  ldarg.0 
-	IL_0018:  ldfld int64 Bless.Buffers.InsertAction::pos
-	IL_001d:  ldarg.0 
-	IL_001e:  ldfld int64 Bless.Buffers.InsertAction::pos
-	IL_0023:  ldarg.0 
-	IL_0024:  ldfld class Bless.Buffers.Segment Bless.Buffers.InsertAction::seg
-	IL_0029:  callvirt instance int64 class Bless.Buffers.Segment::get_Size()
-	IL_002e:  add 
-	IL_002f:  ldc.i4.1 
-	IL_0030:  conv.i8 
-	IL_0031:  sub 
-	IL_0032:  callvirt instance class Bless.Buffers.SegmentCollection class Bless.Buffers.SegmentCollection::DeleteRange(int64, int64)
-	IL_0037:  pop 
-	IL_0038:  ldarg.0 
-	IL_0039:  ldfld class Bless.Buffers.ByteBuffer Bless.Buffers.InsertAction::byteBuf
-	IL_003e:  dup 
-	IL_003f:  ldfld int64 Bless.Buffers.ByteBuffer::size
-	IL_0044:  ldarg.0 
-	IL_0045:  ldfld class Bless.Buffers.Segment Bless.Buffers.InsertAction::seg
-	IL_004a:  callvirt instance int64 class Bless.Buffers.Segment::get_Size()
-	IL_004f:  sub 
-	IL_0050:  stfld int64 Bless.Buffers.ByteBuffer::size
-	IL_0055:  ret 
-    } // end of method InsertAction::Undo
+    // method line 43
+    .method family hidebysig 
+           instance default bool CheckFreeSpace (string path, int64 extraSpace)  cil managed 
+    {
+        // Method begins at RVA 0x2bd4
+	// Code size 42 (0x2a)
+	.maxstack 2
+	.locals init (
+		int64	V_0,
+		bool	V_1)
+	.try { // 0
+	  IL_0000:  ldarg.1 
+	  IL_0001:  call int64 class [Bless.Util]Portable::GetAvailableDiskSpace(string)
+	  IL_0006:  stloc.0 
+	  IL_0007:  ldloc.0 
+	  IL_0008:  ldarg.2 
+	  IL_0009:  add 
+	  IL_000a:  ldarg.0 
+	  IL_000b:  ldfld class Bless.Buffers.ByteBuffer Bless.Buffers.SaveOperation::byteBuffer
+	  IL_0010:  callvirt instance int64 class Bless.Buffers.BaseBuffer::get_Size()
+	  IL_0015:  clt 
+	  IL_0017:  ldc.i4.0 
+	  IL_0018:  ceq 
+	  IL_001a:  stloc.1 
+	  IL_001b:  leave IL_0028
 
-  } // end of class Bless.Buffers.InsertAction
-}
+	} // end .try 0
+	catch class [mscorlib]System.NotImplementedException { // 0
+	  IL_0020:  pop 
+	  IL_0021:  ldc.i4.1 
+	  IL_0022:  stloc.1 
+	  IL_0023:  leave IL_0028
 
-.namespace Bless.Buffers
-{
-  .class private auto ansi beforefieldinit DeleteAction
-  	extends Bless.Buffers.ByteBufferAction
-  {
-    .field  private  class Bless.Buffers.SegmentCollection del
-    .field  private  int64 pos1
-    .field  private  int64 pos2
-    .field  private  class Bless.Buffers.ByteBuffer byteBuf
+	} // end handler 0
+	IL_0028:  ldloc.1 
+	IL_0029:  ret 
+    } // end of method SaveOperation::CheckFreeSpace
+
+    // method line 44
+    .method family virtual hidebysig 
+           instance default bool StartProgress ()  cil managed 
+    {
+        // Method begins at RVA 0x2c1c
+	// Code size 78 (0x4e)
+	.maxstack 4
+	IL_0000:  ldarg.0 
+	IL_0001:  ldfld class [Bless.Util]Bless.Util.ProgressCallback [Bless.Util]Bless.Util.ThreadedAsyncOperation::progressCallback
+	IL_0006:  ldstr "Moving '{0}' to '{1}'"
+	IL_000b:  call string class [Mono.Posix]Mono.Unix.Catalog::GetString(string)
+	IL_0010:  ldarg.0 
+	IL_0011:  ldfld string Bless.Buffers.SaveOperation::tempPath
+	IL_0016:  ldarg.0 
+	IL_0017:  ldfld string Bless.Buffers.SaveOperation::savePath
+	IL_001c:  call string string::Format(string, object, object)
+	IL_0021:  ldc.i4.3 
+	IL_0022:  callvirt instance bool class [Bless.Util]Bless.Util.ProgressCallback::Invoke(object, valuetype [Bless.Util]Bless.Util.ProgressAction)
+	IL_0027:  pop 
+	IL_0028:  ldarg.0 
+	IL_0029:  ldfld class [Bless.Util]Bless.Util.ProgressCallback [Bless.Util]Bless.Util.ThreadedAsyncOperation::progressCallback
+	IL_002e:  ldarg.0 
+	IL_002f:  ldfld int64 Bless.Buffers.SaveOperation::bytesSaved
+	IL_0034:  conv.r8 
+	IL_0035:  ldarg.0 
+	IL_0036:  ldfld class Bless.Buffers.ByteBuffer Bless.Buffers.SaveOperation::byteBuffer
+	IL_003b:  callvirt instance int64 class Bless.Buffers.BaseBuffer::get_Size()
+	IL_0040:  conv.r8 
+	IL_0041:  div 
+	IL_0042:  box [mscorlib]System.Double
+	IL_0047:  ldc.i4.0 
+	IL_0048:  callvirt instance bool class [Bless.Util]Bless.Util.ProgressCallback::Invoke(object, valuetype [Bless.Util]Bless.Util.ProgressAction)
+	IL_004d:  ret 
+    } // end of method SaveOperation::StartProgress
 
-    // method line 57
-    .method public hidebysig specialname rtspecialname 
-           instance default void '.ctor' (int64 p1, int64 p2, class Bless.Buffers.ByteBuffer bb)  cil managed 
+    // method line 45
+    .method family virtual hidebysig 
+           instance default bool UpdateProgress ()  cil managed 
     {
-        // Method begins at RVA 0x2a06
-	// Code size 28 (0x1c)
+        // Method begins at RVA 0x2c76
+	// Code size 38 (0x26)
 	.maxstack 8
 	IL_0000:  ldarg.0 
-	IL_0001:  call instance void class Bless.Buffers.ByteBufferAction::'.ctor'()
+	IL_0001:  ldfld class [Bless.Util]Bless.Util.ProgressCallback [Bless.Util]Bless.Util.ThreadedAsyncOperation::progressCallback
 	IL_0006:  ldarg.0 
-	IL_0007:  ldarg.3 
-	IL_0008:  stfld class Bless.Buffers.ByteBuffer Bless.Buffers.DeleteAction::byteBuf
+	IL_0007:  ldfld int64 Bless.Buffers.SaveOperation::bytesSaved
+	IL_000c:  conv.r8 
 	IL_000d:  ldarg.0 
-	IL_000e:  ldarg.1 
-	IL_000f:  stfld int64 Bless.Buffers.DeleteAction::pos1
-	IL_0014:  ldarg.0 
-	IL_0015:  ldarg.2 
-	IL_0016:  stfld int64 Bless.Buffers.DeleteAction::pos2
-	IL_001b:  ret 
-    } // end of method DeleteAction::.ctor
-
-    // method line 58
-    .method public virtual hidebysig 
-           instance default void Do ()  cil managed 
-    {
-        // Method begins at RVA 0x2a24
-	// Code size 69 (0x45)
-	.maxstack 4
-	IL_0000:  ldarg.0 
-	IL_0001:  ldarg.0 
-	IL_0002:  ldfld class Bless.Buffers.ByteBuffer Bless.Buffers.DeleteAction::byteBuf
-	IL_0007:  ldfld class Bless.Buffers.SegmentCollection Bless.Buffers.ByteBuffer::segCol
-	IL_000c:  ldarg.0 
-	IL_000d:  ldfld int64 Bless.Buffers.DeleteAction::pos1
-	IL_0012:  ldarg.0 
-	IL_0013:  ldfld int64 Bless.Buffers.DeleteAction::pos2
-	IL_0018:  callvirt instance class Bless.Buffers.SegmentCollection class Bless.Buffers.SegmentCollection::DeleteRange(int64, int64)
-	IL_001d:  stfld class Bless.Buffers.SegmentCollection Bless.Buffers.DeleteAction::del
-	IL_0022:  ldarg.0 
-	IL_0023:  ldfld class Bless.Buffers.ByteBuffer Bless.Buffers.DeleteAction::byteBuf
-	IL_0028:  dup 
-	IL_0029:  ldfld int64 Bless.Buffers.ByteBuffer::size
-	IL_002e:  ldarg.0 
-	IL_002f:  ldfld int64 Bless.Buffers.DeleteAction::pos2
-	IL_0034:  ldarg.0 
-	IL_0035:  ldfld int64 Bless.Buffers.DeleteAction::pos1
-	IL_003a:  sub 
-	IL_003b:  ldc.i4.1 
-	IL_003c:  conv.i8 
-	IL_003d:  add 
-	IL_003e:  sub 
-	IL_003f:  stfld int64 Bless.Buffers.ByteBuffer::size
-	IL_0044:  ret 
-    } // end of method DeleteAction::Do
+	IL_000e:  ldfld class Bless.Buffers.ByteBuffer Bless.Buffers.SaveOperation::byteBuffer
+	IL_0013:  callvirt instance int64 class Bless.Buffers.BaseBuffer::get_Size()
+	IL_0018:  conv.r8 
+	IL_0019:  div 
+	IL_001a:  box [mscorlib]System.Double
+	IL_001f:  ldc.i4.2 
+	IL_0020:  callvirt instance bool class [Bless.Util]Bless.Util.ProgressCallback::Invoke(object, valuetype [Bless.Util]Bless.Util.ProgressAction)
+	IL_0025:  ret 
+    } // end of method SaveOperation::UpdateProgress
 
-    // method line 59
-    .method public virtual hidebysig 
-           instance default void Undo ()  cil managed 
+    // method line 46
+    .method family virtual hidebysig 
+           instance default bool EndProgress ()  cil managed 
     {
-        // Method begins at RVA 0x2a75
-	// Code size 63 (0x3f)
+        // Method begins at RVA 0x2c9d
+	// Code size 38 (0x26)
 	.maxstack 8
 	IL_0000:  ldarg.0 
-	IL_0001:  ldfld class Bless.Buffers.ByteBuffer Bless.Buffers.DeleteAction::byteBuf
-	IL_0006:  ldfld class Bless.Buffers.SegmentCollection Bless.Buffers.ByteBuffer::segCol
-	IL_000b:  ldarg.0 
-	IL_000c:  ldfld class Bless.Buffers.SegmentCollection Bless.Buffers.DeleteAction::del
-	IL_0011:  ldarg.0 
-	IL_0012:  ldfld int64 Bless.Buffers.DeleteAction::pos1
-	IL_0017:  callvirt instance void class Bless.Buffers.SegmentCollection::Insert(class Bless.Buffers.SegmentCollection, int64)
-	IL_001c:  ldarg.0 
-	IL_001d:  ldfld class Bless.Buffers.ByteBuffer Bless.Buffers.DeleteAction::byteBuf
-	IL_0022:  dup 
-	IL_0023:  ldfld int64 Bless.Buffers.ByteBuffer::size
-	IL_0028:  ldarg.0 
-	IL_0029:  ldfld int64 Bless.Buffers.DeleteAction::pos2
-	IL_002e:  ldarg.0 
-	IL_002f:  ldfld int64 Bless.Buffers.DeleteAction::pos1
-	IL_0034:  sub 
-	IL_0035:  ldc.i4.1 
-	IL_0036:  conv.i8 
-	IL_0037:  add 
-	IL_0038:  add 
-	IL_0039:  stfld int64 Bless.Buffers.ByteBuffer::size
-	IL_003e:  ret 
-    } // end of method DeleteAction::Undo
+	IL_0001:  ldfld class [Bless.Util]Bless.Util.ProgressCallback [Bless.Util]Bless.Util.ThreadedAsyncOperation::progressCallback
+	IL_0006:  ldarg.0 
+	IL_0007:  ldfld int64 Bless.Buffers.SaveOperation::bytesSaved
+	IL_000c:  conv.r8 
+	IL_000d:  ldarg.0 
+	IL_000e:  ldfld class Bless.Buffers.ByteBuffer Bless.Buffers.SaveOperation::byteBuffer
+	IL_0013:  callvirt instance int64 class Bless.Buffers.BaseBuffer::get_Size()
+	IL_0018:  conv.r8 
+	IL_0019:  div 
+	IL_001a:  box [mscorlib]System.Double
+	IL_001f:  ldc.i4.5 
+	IL_0020:  callvirt instance bool class [Bless.Util]Bless.Util.ProgressCallback::Invoke(object, valuetype [Bless.Util]Bless.Util.ProgressAction)
+	IL_0025:  ret 
+    } // end of method SaveOperation::EndProgress
 
-    // method line 60
-    .method public virtual hidebysig 
-           instance default void MakePrivateCopyOfData ()  cil managed 
+    // method line 47
+    .method family virtual hidebysig 
+           instance default void DoOperation ()  cil managed 
     {
-        // Method begins at RVA 0x2ab8
-	// Code size 96 (0x60)
-	.maxstack 2
+        // Method begins at RVA 0x2cc4
+	// Code size 314 (0x13a)
+	.maxstack 5
 	.locals init (
-		class Bless.Buffers.Segment	V_0,
-		class [mscorlib]System.Collections.Generic.IEnumerator`1<class Bless.Buffers.Segment>	V_1)
+		class Bless.Buffers.SaveAsOperation	V_0,
+		string	V_1,
+		object	V_2,
+		bool	V_3)
 	IL_0000:  ldarg.0 
-	IL_0001:  ldfld class Bless.Buffers.SegmentCollection Bless.Buffers.DeleteAction::del
-	IL_0006:  callvirt instance class [Bless.Util]Bless.Util.List`1<class Bless.Buffers.Segment> class Bless.Buffers.SegmentCollection::get_List()
-	IL_000b:  callvirt instance class [mscorlib]System.Collections.Generic.IEnumerator`1<!0> class [Bless.Util]Bless.Util.List`1<class Bless.Buffers.Segment>::GetEnumerator()
-	IL_0010:  stloc.1 
-	.try { // 0
-	  IL_0011:  br IL_0042
-
-	  IL_0016:  ldloc.1 
-	  IL_0017:  callvirt instance !0 class [mscorlib]System.Collections.Generic.IEnumerator`1<class Bless.Buffers.Segment>::get_Current()
-	  IL_001c:  stloc.0 
-	  IL_001d:  ldloc.0 
-	  IL_001e:  callvirt instance class Bless.Buffers.IBuffer class Bless.Buffers.Segment::get_Buffer()
-	  IL_0023:  callvirt instance class [mscorlib]System.Type object::GetType()
-	  IL_0028:  ldtoken Bless.Buffers.FileBuffer
-	  IL_002d:  call class [mscorlib]System.Type class [mscorlib]System.Type::GetTypeFromHandle(valuetype [mscorlib]System.RuntimeTypeHandle)
-	  IL_0032:  call bool class [mscorlib]System.Type::op_Equality(class [mscorlib]System.Type, class [mscorlib]System.Type)
-	  IL_0037:  brfalse IL_0042
-
-	  IL_003c:  ldloc.0 
-	  IL_003d:  callvirt instance void class Bless.Buffers.Segment::MakePrivateCopyOfData()
-	  IL_0042:  ldloc.1 
-	  IL_0043:  callvirt instance bool class [mscorlib]System.Collections.IEnumerator::MoveNext()
-	  IL_0048:  brtrue IL_0016
-
-	  IL_004d:  leave IL_005f
-
-	} // end .try 0
-	finally  { // 0
-	  IL_0052:  ldloc.1 
-	  IL_0053:  brfalse IL_005e
+	IL_0001:  ldfld class Bless.Buffers.ByteBuffer Bless.Buffers.SaveOperation::byteBuffer
+	IL_0006:  ldarg.0 
+	IL_0007:  ldfld string Bless.Buffers.SaveOperation::tempPath
+	IL_000c:  ldarg.0 
+	IL_000d:  ldfld class [Bless.Util]Bless.Util.ProgressCallback [Bless.Util]Bless.Util.ThreadedAsyncOperation::progressCallback
+	IL_0012:  ldnull 
+	IL_0013:  ldc.i4.0 
+	IL_0014:  newobj instance void class Bless.Buffers.SaveAsOperation::'.ctor'(class Bless.Buffers.ByteBuffer, string, class [Bless.Util]Bless.Util.ProgressCallback, class [mscorlib]System.AsyncCallback, bool)
+	IL_0019:  stloc.0 
+	IL_001a:  ldarg.0 
+	IL_001b:  ldc.i4.0 
+	IL_001c:  stfld valuetype Bless.Buffers.SaveOperation/SaveStage Bless.Buffers.SaveOperation::stageReached
+	IL_0021:  ldarg.0 
+	IL_0022:  ldarg.0 
+	IL_0023:  ldfld class Bless.Buffers.ByteBuffer Bless.Buffers.SaveOperation::byteBuffer
+	IL_0028:  callvirt instance string class Bless.Buffers.ByteBuffer::get_Filename()
+	IL_002d:  call string class [mscorlib]System.IO.Path::GetDirectoryName(string)
+	IL_0032:  ldarg.0 
+	IL_0033:  ldfld class Bless.Buffers.ByteBuffer Bless.Buffers.SaveOperation::byteBuffer
+	IL_0038:  ldfld class Bless.Buffers.FileBuffer Bless.Buffers.ByteBuffer::fileBuf
+	IL_003d:  callvirt instance int64 class Bless.Buffers.BaseBuffer::get_Size()
+	IL_0042:  call instance bool class Bless.Buffers.SaveOperation::CheckFreeSpace(string, int64)
+	IL_0047:  brtrue IL_006e
 
-	  IL_0058:  ldloc.1 
-	  IL_0059:  callvirt instance void class [mscorlib]System.IDisposable::Dispose()
-	  IL_005e:  endfinally 
-	} // end handler 0
-	IL_005f:  ret 
-    } // end of method DeleteAction::MakePrivateCopyOfData
+	IL_004c:  ldstr "There is not enough free space on the device to save file '{0}'."
+	IL_0051:  call string class [Mono.Posix]Mono.Unix.Catalog::GetString(string)
+	IL_0056:  ldarg.0 
+	IL_0057:  ldfld class Bless.Buffers.ByteBuffer Bless.Buffers.SaveOperation::byteBuffer
+	IL_005c:  callvirt instance string class Bless.Buffers.ByteBuffer::get_Filename()
+	IL_0061:  call string string::Format(string, object)
+	IL_0066:  stloc.1 
+	IL_0067:  ldloc.1 
+	IL_0068:  newobj instance void class [mscorlib]System.IO.IOException::'.ctor'(string)
+	IL_006d:  throw 
+	IL_006e:  ldloc.0 
+	IL_006f:  callvirt instance void class [Bless.Util]Bless.Util.ThreadedAsyncOperation::OperationThread()
+	IL_0074:  ldloc.0 
+	IL_0075:  callvirt instance valuetype [Bless.Util]Bless.Util.ThreadedAsyncOperation/OperationResult class [Bless.Util]Bless.Util.ThreadedAsyncOperation::get_Result()
+	IL_007a:  ldc.i4.2 
+	IL_007b:  bne.un IL_0087
 
-    // method line 61
-    .method public virtual hidebysig 
-           instance default int64 GetPrivateCopySize ()  cil managed 
-    {
-        // Method begins at RVA 0x2b34
-	// Code size 103 (0x67)
-	.maxstack 2
-	.locals init (
-		int64	V_0,
-		class Bless.Buffers.Segment	V_1,
-		class [mscorlib]System.Collections.Generic.IEnumerator`1<class Bless.Buffers.Segment>	V_2)
-	IL_0000:  ldc.i4.0 
-	IL_0001:  conv.i8 
-	IL_0002:  stloc.0 
-	IL_0003:  ldarg.0 
-	IL_0004:  ldfld class Bless.Buffers.SegmentCollection Bless.Buffers.DeleteAction::del
-	IL_0009:  callvirt instance class [Bless.Util]Bless.Util.List`1<class Bless.Buffers.Segment> class Bless.Buffers.SegmentCollection::get_List()
-	IL_000e:  callvirt instance class [mscorlib]System.Collections.Generic.IEnumerator`1<!0> class [Bless.Util]Bless.Util.List`1<class Bless.Buffers.Segment>::GetEnumerator()
-	IL_0013:  stloc.2 
-	.try { // 0
-	  IL_0014:  br IL_0048
+	IL_0080:  ldloc.0 
+	IL_0081:  callvirt instance class [mscorlib]System.Exception class [Bless.Util]Bless.Util.ThreadedAsyncOperation::get_ThreadException()
+	IL_0086:  throw 
+	IL_0087:  ldloc.0 
+	IL_0088:  callvirt instance valuetype [Bless.Util]Bless.Util.ThreadedAsyncOperation/OperationResult class [Bless.Util]Bless.Util.ThreadedAsyncOperation::get_Result()
+	IL_008d:  ldc.i4.1 
+	IL_008e:  bne.un IL_009a
 
-	  IL_0019:  ldloc.2 
-	  IL_001a:  callvirt instance !0 class [mscorlib]System.Collections.Generic.IEnumerator`1<class Bless.Buffers.Segment>::get_Current()
-	  IL_001f:  stloc.1 
-	  IL_0020:  ldloc.1 
-	  IL_0021:  callvirt instance class Bless.Buffers.IBuffer class Bless.Buffers.Segment::get_Buffer()
-	  IL_0026:  callvirt instance class [mscorlib]System.Type object::GetType()
-	  IL_002b:  ldtoken Bless.Buffers.FileBuffer
-	  IL_0030:  call class [mscorlib]System.Type class [mscorlib]System.Type::GetTypeFromHandle(valuetype [mscorlib]System.RuntimeTypeHandle)
-	  IL_0035:  call bool class [mscorlib]System.Type::op_Equality(class [mscorlib]System.Type, class [mscorlib]System.Type)
-	  IL_003a:  brfalse IL_0048
+	IL_0093:  ldarg.0 
+	IL_0094:  ldc.i4.1 
+	IL_0095:  stfld bool [Bless.Util]Bless.Util.ThreadedAsyncOperation::cancelled
+	IL_009a:  ldarg.0 
+	IL_009b:  ldfld bool [Bless.Util]Bless.Util.ThreadedAsyncOperation::cancelled
+	IL_00a0:  brtrue IL_0139
 
-	  IL_003f:  ldloc.0 
-	  IL_0040:  ldloc.1 
-	  IL_0041:  callvirt instance int64 class Bless.Buffers.Segment::get_Size()
-	  IL_0046:  add 
-	  IL_0047:  stloc.0 
-	  IL_0048:  ldloc.2 
-	  IL_0049:  callvirt instance bool class [mscorlib]System.Collections.IEnumerator::MoveNext()
-	  IL_004e:  brtrue IL_0019
+	IL_00a5:  ldarg.0 
+	IL_00a6:  ldc.i4.1 
+	IL_00a7:  call instance void class [Bless.Util]Bless.Util.ThreadedAsyncOperation::ActivateProgressReport(bool)
+	IL_00ac:  ldarg.0 
+	IL_00ad:  ldc.i4.1 
+	IL_00ae:  stfld valuetype Bless.Buffers.SaveOperation/SaveStage Bless.Buffers.SaveOperation::stageReached
+	IL_00b3:  ldarg.0 
+	IL_00b4:  ldfld string Bless.Buffers.SaveOperation::savePath
+	IL_00b9:  call bool class [mscorlib]System.IO.File::Exists(string)
+	IL_00be:  brfalse IL_00ce
 
-	  IL_0053:  leave IL_0065
+	IL_00c3:  ldarg.0 
+	IL_00c4:  ldfld string Bless.Buffers.SaveOperation::savePath
+	IL_00c9:  call void class [mscorlib]System.IO.File::Delete(string)
+	IL_00ce:  ldarg.0 
+	IL_00cf:  ldfld class Bless.Buffers.ByteBuffer Bless.Buffers.SaveOperation::byteBuffer
+	IL_00d4:  ldfld object Bless.Buffers.ByteBuffer::LockObj
+	IL_00d9:  stloc.2 
+	IL_00da:  ldc.i4.0 
+	IL_00db:  stloc.3 
+	.try { // 0
+	  IL_00dc:  ldloc.2 
+	  IL_00dd:  ldloca.s 3
+	  IL_00df:  call void class [mscorlib]System.Threading.Monitor::Enter(object, [out] bool&)
+	  IL_00e4:  ldarg.0 
+	  IL_00e5:  ldfld class Bless.Buffers.ByteBuffer Bless.Buffers.SaveOperation::byteBuffer
+	  IL_00ea:  callvirt instance void class Bless.Buffers.ByteBuffer::MakePrivateCopyOfUndoRedo()
+	  IL_00ef:  ldarg.0 
+	  IL_00f0:  ldfld class Bless.Buffers.ByteBuffer Bless.Buffers.SaveOperation::byteBuffer
+	  IL_00f5:  ldc.i4.1 
+	  IL_00f6:  callvirt instance void class Bless.Buffers.ByteBuffer::set_FileOperationsAllowed(bool)
+	  IL_00fb:  ldarg.0 
+	  IL_00fc:  ldfld class Bless.Buffers.ByteBuffer Bless.Buffers.SaveOperation::byteBuffer
+	  IL_0101:  callvirt instance void class Bless.Buffers.ByteBuffer::CloseFile()
+	  IL_0106:  ldarg.0 
+	  IL_0107:  ldfld class Bless.Buffers.ByteBuffer Bless.Buffers.SaveOperation::byteBuffer
+	  IL_010c:  ldc.i4.0 
+	  IL_010d:  callvirt instance void class Bless.Buffers.ByteBuffer::set_FileOperationsAllowed(bool)
+	  IL_0112:  leave IL_0121
 
 	} // end .try 0
 	finally  { // 0
-	  IL_0058:  ldloc.2 
-	  IL_0059:  brfalse IL_0064
+	  IL_0117:  ldloc.3 
+	  IL_0118:  brfalse.s IL_0120
 
-	  IL_005e:  ldloc.2 
-	  IL_005f:  callvirt instance void class [mscorlib]System.IDisposable::Dispose()
-	  IL_0064:  endfinally 
+	  IL_011a:  ldloc.2 
+	  IL_011b:  call void class [mscorlib]System.Threading.Monitor::Exit(object)
+	  IL_0120:  endfinally 
 	} // end handler 0
-	IL_0065:  ldloc.0 
-	IL_0066:  ret 
-    } // end of method DeleteAction::GetPrivateCopySize
-
-  } // end of class Bless.Buffers.DeleteAction
-}
-
-.namespace Bless.Buffers
-{
-  .class private auto ansi beforefieldinit ReplaceAction
-  	extends Bless.Buffers.ByteBufferAction
-  {
-    .field  private  class Bless.Buffers.DeleteAction del
-    .field  private  class Bless.Buffers.InsertAction ins
+	IL_0121:  ldarg.0 
+	IL_0122:  ldc.i4.2 
+	IL_0123:  stfld valuetype Bless.Buffers.SaveOperation/SaveStage Bless.Buffers.SaveOperation::stageReached
+	IL_0128:  ldarg.0 
+	IL_0129:  ldfld string Bless.Buffers.SaveOperation::tempPath
+	IL_012e:  ldarg.0 
+	IL_012f:  ldfld string Bless.Buffers.SaveOperation::savePath
+	IL_0134:  call void class [mscorlib]System.IO.File::Move(string, string)
+	IL_0139:  ret 
+    } // end of method SaveOperation::DoOperation
 
-    // method line 62
-    .method public hidebysig specialname rtspecialname 
-           instance default void '.ctor' (int64 p1, int64 p2, unsigned int8[] d, int64 index, int64 length, class Bless.Buffers.ByteBuffer bb)  cil managed 
+    // method line 48
+    .method family virtual hidebysig 
+           instance default void EndOperation ()  cil managed 
     {
-        // Method begins at RVA 0x2bb8
-	// Code size 41 (0x29)
+        // Method begins at RVA 0x2e1c
+	// Code size 1 (0x1)
 	.maxstack 8
-	IL_0000:  ldarg.0 
-	IL_0001:  call instance void class Bless.Buffers.ByteBufferAction::'.ctor'()
-	IL_0006:  ldarg.0 
-	IL_0007:  ldarg.1 
-	IL_0008:  ldarg.2 
-	IL_0009:  ldarg.s 6
-	IL_000b:  newobj instance void class Bless.Buffers.DeleteAction::'.ctor'(int64, int64, class Bless.Buffers.ByteBuffer)
-	IL_0010:  stfld class Bless.Buffers.DeleteAction Bless.Buffers.ReplaceAction::del
-	IL_0015:  ldarg.0 
-	IL_0016:  ldarg.1 
-	IL_0017:  ldarg.3 
-	IL_0018:  ldarg.s 4
-	IL_001a:  ldarg.s 5
-	IL_001c:  ldarg.s 6
-	IL_001e:  newobj instance void class Bless.Buffers.InsertAction::'.ctor'(int64, unsigned int8[], int64, int64, class Bless.Buffers.ByteBuffer)
-	IL_0023:  stfld class Bless.Buffers.InsertAction Bless.Buffers.ReplaceAction::ins
-	IL_0028:  ret 
-    } // end of method ReplaceAction::.ctor
+	IL_0000:  ret 
+    } // end of method SaveOperation::EndOperation
 
-    // method line 63
-    .method public virtual hidebysig 
-           instance default void Do ()  cil managed 
+    // method line 49
+    .method private final virtual hidebysig newslot strict 
+           instance default valuetype [Bless.Util]Bless.Util.ThreadedAsyncOperation/OperationResult Bless.Buffers.ISaveState.get_Result ()  cil managed 
     {
-        // Method begins at RVA 0x2be2
-	// Code size 23 (0x17)
+        // Method begins at RVA 0x2e1e
+	.override Could not decode method override class Bless.Buffers.ISaveState::get_Result due to (null)
+	// Code size 7 (0x7)
 	.maxstack 8
 	IL_0000:  ldarg.0 
-	IL_0001:  ldfld class Bless.Buffers.DeleteAction Bless.Buffers.ReplaceAction::del
-	IL_0006:  callvirt instance void class Bless.Buffers.ByteBufferAction::Do()
-	IL_000b:  ldarg.0 
-	IL_000c:  ldfld class Bless.Buffers.InsertAction Bless.Buffers.ReplaceAction::ins
-	IL_0011:  callvirt instance void class Bless.Buffers.ByteBufferAction::Do()
-	IL_0016:  ret 
-    } // end of method ReplaceAction::Do
+	IL_0001:  call instance valuetype [Bless.Util]Bless.Util.ThreadedAsyncOperation/OperationResult class [Bless.Util]Bless.Util.ThreadedAsyncOperation::get_Result()
+	IL_0006:  ret 
+    } // end of method SaveOperation::Bless.Buffers.ISaveState.get_Result
 
-    // method line 64
-    .method public virtual hidebysig 
-           instance default void Undo ()  cil managed 
+    // method line 50
+    .method private final virtual hidebysig newslot strict 
+           instance default class [mscorlib]System.Exception Bless.Buffers.ISaveState.get_ThreadException ()  cil managed 
     {
-        // Method begins at RVA 0x2bfa
-	// Code size 23 (0x17)
+        // Method begins at RVA 0x2e26
+	.override Could not decode method override class Bless.Buffers.ISaveState::get_ThreadException due to (null)
+	// Code size 7 (0x7)
 	.maxstack 8
 	IL_0000:  ldarg.0 
-	IL_0001:  ldfld class Bless.Buffers.InsertAction Bless.Buffers.ReplaceAction::ins
-	IL_0006:  callvirt instance void class Bless.Buffers.ByteBufferAction::Undo()
-	IL_000b:  ldarg.0 
-	IL_000c:  ldfld class Bless.Buffers.DeleteAction Bless.Buffers.ReplaceAction::del
-	IL_0011:  callvirt instance void class Bless.Buffers.ByteBufferAction::Undo()
-	IL_0016:  ret 
-    } // end of method ReplaceAction::Undo
+	IL_0001:  call instance class [mscorlib]System.Exception class [Bless.Util]Bless.Util.ThreadedAsyncOperation::get_ThreadException()
+	IL_0006:  ret 
+    } // end of method SaveOperation::Bless.Buffers.ISaveState.get_ThreadException
 
-    // method line 65
-    .method public virtual hidebysig 
-           instance default void MakePrivateCopyOfData ()  cil managed 
-    {
-        // Method begins at RVA 0x2c12
-	// Code size 12 (0xc)
-	.maxstack 8
-	IL_0000:  ldarg.0 
-	IL_0001:  ldfld class Bless.Buffers.DeleteAction Bless.Buffers.ReplaceAction::del
-	IL_0006:  callvirt instance void class Bless.Buffers.ByteBufferAction::MakePrivateCopyOfData()
-	IL_000b:  ret 
-    } // end of method ReplaceAction::MakePrivateCopyOfData
+	.property instance class Bless.Buffers.ByteBuffer Buffer ()
+	{
+		.get instance default class Bless.Buffers.ByteBuffer Bless.Buffers.SaveOperation::get_Buffer () 
+	}
+	.property instance string SavePath ()
+	{
+		.get instance default string Bless.Buffers.SaveOperation::get_SavePath () 
+		.set instance default void Bless.Buffers.SaveOperation::set_SavePath (string 'value') 
+	}
+	.property instance int64 BytesSaved ()
+	{
+		.get instance default int64 Bless.Buffers.SaveOperation::get_BytesSaved () 
+	}
+	.property instance string TempPath ()
+	{
+		.get instance default string Bless.Buffers.SaveOperation::get_TempPath () 
+	}
+	.property instance valuetype Bless.Buffers.SaveOperation/SaveStage StageReached ()
+	{
+		.get instance default valuetype Bless.Buffers.SaveOperation/SaveStage Bless.Buffers.SaveOperation::get_StageReached () 
+	}
+  .class nested public auto ansi sealed SaveStage
+  	extends [mscorlib]System.Enum
+  {
+    .field  public specialname rtspecialname  int32 value__
+    .field public static literal  valuetype Bless.Buffers.SaveOperation/SaveStage BeforeSaveAs = int32(0x00000000)
+    .field public static literal  valuetype Bless.Buffers.SaveOperation/SaveStage BeforeDelete = int32(0x00000001)
+    .field public static literal  valuetype Bless.Buffers.SaveOperation/SaveStage BeforeMove = int32(0x00000002)
 
-    // method line 66
-    .method public virtual hidebysig 
-           instance default int64 GetPrivateCopySize ()  cil managed 
-    {
-        // Method begins at RVA 0x2c1f
-	// Code size 12 (0xc)
-	.maxstack 8
-	IL_0000:  ldarg.0 
-	IL_0001:  ldfld class Bless.Buffers.DeleteAction Bless.Buffers.ReplaceAction::del
-	IL_0006:  callvirt instance int64 class Bless.Buffers.ByteBufferAction::GetPrivateCopySize()
-	IL_000b:  ret 
-    } // end of method ReplaceAction::GetPrivateCopySize
+  } // end of class SaveStage
 
-  } // end of class Bless.Buffers.ReplaceAction
+  } // end of class Bless.Buffers.SaveOperation
 }
 
 .namespace Bless.Buffers
 {
-  .class private auto ansi beforefieldinit MultiAction
-  	extends Bless.Buffers.ByteBufferAction
-  {
-    .field  private  class [mscorlib]System.Collections.Generic.List`1<class Bless.Buffers.ByteBufferAction> list
+  .class public auto ansi beforefieldinit SaveInPlaceOperation
+  	extends [Bless.Util]Bless.Util.ThreadedAsyncOperation
+  	implements Bless.Buffers.ISaveState  {
+    .field  family  class Bless.Buffers.ByteBuffer byteBuffer
+    .field  family  int64 bytesSaved
+    .field  family  string savePath
+    .field  private  class [mscorlib]System.IO.FileStream fs
+    .field  private  valuetype Bless.Buffers.SaveInPlaceOperation/SaveInPlaceStage stageReached
 
-    // method line 67
+    // method line 51
     .method public hidebysig specialname rtspecialname 
-           instance default void '.ctor' ()  cil managed 
+           instance default void '.ctor' (class Bless.Buffers.ByteBuffer bb, class [Bless.Util]Bless.Util.ProgressCallback pc, class [mscorlib]System.AsyncCallback ac, bool glibIdle)  cil managed 
     {
-        // Method begins at RVA 0x2c2c
-	// Code size 18 (0x12)
+        // Method begins at RVA 0x2e2e
+	// Code size 50 (0x32)
 	.maxstack 8
 	IL_0000:  ldarg.0 
-	IL_0001:  call instance void class Bless.Buffers.ByteBufferAction::'.ctor'()
-	IL_0006:  ldarg.0 
-	IL_0007:  newobj instance void class [mscorlib]System.Collections.Generic.List`1<class Bless.Buffers.ByteBufferAction>::'.ctor'()
-	IL_000c:  stfld class [mscorlib]System.Collections.Generic.List`1<class Bless.Buffers.ByteBufferAction> Bless.Buffers.MultiAction::list
-	IL_0011:  ret 
-    } // end of method MultiAction::.ctor
+	IL_0001:  ldarg.2 
+	IL_0002:  ldarg.3 
+	IL_0003:  ldarg.s 4
+	IL_0005:  call instance void class [Bless.Util]Bless.Util.ThreadedAsyncOperation::'.ctor'(class [Bless.Util]Bless.Util.ProgressCallback, class [mscorlib]System.AsyncCallback, bool)
+	IL_000a:  ldarg.0 
+	IL_000b:  ldarg.1 
+	IL_000c:  stfld class Bless.Buffers.ByteBuffer Bless.Buffers.SaveInPlaceOperation::byteBuffer
+	IL_0011:  ldarg.0 
+	IL_0012:  ldarg.0 
+	IL_0013:  ldfld class Bless.Buffers.ByteBuffer Bless.Buffers.SaveInPlaceOperation::byteBuffer
+	IL_0018:  callvirt instance string class Bless.Buffers.ByteBuffer::get_Filename()
+	IL_001d:  stfld string Bless.Buffers.SaveInPlaceOperation::savePath
+	IL_0022:  ldarg.0 
+	IL_0023:  ldnull 
+	IL_0024:  stfld class [mscorlib]System.IO.FileStream Bless.Buffers.SaveInPlaceOperation::fs
+	IL_0029:  ldarg.0 
+	IL_002a:  ldc.i4.0 
+	IL_002b:  conv.i8 
+	IL_002c:  stfld int64 Bless.Buffers.SaveInPlaceOperation::bytesSaved
+	IL_0031:  ret 
+    } // end of method SaveInPlaceOperation::.ctor
+
+    // method line 52
+    .method public final virtual hidebysig newslot specialname 
+           instance default class Bless.Buffers.ByteBuffer get_Buffer ()  cil managed 
+    {
+        // Method begins at RVA 0x2e61
+	// Code size 7 (0x7)
+	.maxstack 8
+	IL_0000:  ldarg.0 
+	IL_0001:  ldfld class Bless.Buffers.ByteBuffer Bless.Buffers.SaveInPlaceOperation::byteBuffer
+	IL_0006:  ret 
+    } // end of method SaveInPlaceOperation::get_Buffer
 
-    // method line 68
-    .method public hidebysig 
-           instance default void Add (class Bless.Buffers.ByteBufferAction action)  cil managed 
+    // method line 53
+    .method public final virtual hidebysig newslot specialname 
+           instance default string get_SavePath ()  cil managed 
     {
-        // Method begins at RVA 0x2c3f
-	// Code size 13 (0xd)
+        // Method begins at RVA 0x2e69
+	// Code size 7 (0x7)
 	.maxstack 8
 	IL_0000:  ldarg.0 
-	IL_0001:  ldfld class [mscorlib]System.Collections.Generic.List`1<class Bless.Buffers.ByteBufferAction> Bless.Buffers.MultiAction::list
-	IL_0006:  ldarg.1 
-	IL_0007:  callvirt instance void class [mscorlib]System.Collections.Generic.List`1<class Bless.Buffers.ByteBufferAction>::Add(!0)
-	IL_000c:  ret 
-    } // end of method MultiAction::Add
+	IL_0001:  ldfld string Bless.Buffers.SaveInPlaceOperation::savePath
+	IL_0006:  ret 
+    } // end of method SaveInPlaceOperation::get_SavePath
 
-    // method line 69
-    .method public virtual hidebysig 
-           instance default void Do ()  cil managed 
+    // method line 54
+    .method public hidebysig specialname 
+           instance default void set_SavePath (string 'value')  cil managed 
     {
-        // Method begins at RVA 0x2c50
-	// Code size 46 (0x2e)
-	.maxstack 2
-	.locals init (
-		int32	V_0)
-	IL_0000:  ldc.i4.0 
-	IL_0001:  stloc.0 
-	IL_0002:  br IL_001c
-
-	IL_0007:  ldarg.0 
-	IL_0008:  ldfld class [mscorlib]System.Collections.Generic.List`1<class Bless.Buffers.ByteBufferAction> Bless.Buffers.MultiAction::list
-	IL_000d:  ldloc.0 
-	IL_000e:  callvirt instance !0 class [mscorlib]System.Collections.Generic.List`1<class Bless.Buffers.ByteBufferAction>::get_Item(int32)
-	IL_0013:  callvirt instance void class Bless.Buffers.ByteBufferAction::Do()
-	IL_0018:  ldloc.0 
-	IL_0019:  ldc.i4.1 
-	IL_001a:  add 
-	IL_001b:  stloc.0 
-	IL_001c:  ldloc.0 
-	IL_001d:  ldarg.0 
-	IL_001e:  ldfld class [mscorlib]System.Collections.Generic.List`1<class Bless.Buffers.ByteBufferAction> Bless.Buffers.MultiAction::list
-	IL_0023:  callvirt instance int32 class [mscorlib]System.Collections.Generic.List`1<class Bless.Buffers.ByteBufferAction>::get_Count()
-	IL_0028:  blt IL_0007
-
-	IL_002d:  ret 
-    } // end of method MultiAction::Do
+        // Method begins at RVA 0x2e71
+	// Code size 8 (0x8)
+	.maxstack 8
+	IL_0000:  ldarg.0 
+	IL_0001:  ldarg.1 
+	IL_0002:  stfld string Bless.Buffers.SaveInPlaceOperation::savePath
+	IL_0007:  ret 
+    } // end of method SaveInPlaceOperation::set_SavePath
 
-    // method line 70
-    .method public virtual hidebysig 
-           instance default void Undo ()  cil managed 
+    // method line 55
+    .method public hidebysig specialname 
+           instance default int64 get_BytesSaved ()  cil managed 
     {
-        // Method begins at RVA 0x2c8c
-	// Code size 48 (0x30)
-	.maxstack 2
-	.locals init (
-		int32	V_0)
+        // Method begins at RVA 0x2e7a
+	// Code size 7 (0x7)
+	.maxstack 8
 	IL_0000:  ldarg.0 
-	IL_0001:  ldfld class [mscorlib]System.Collections.Generic.List`1<class Bless.Buffers.ByteBufferAction> Bless.Buffers.MultiAction::list
-	IL_0006:  callvirt instance int32 class [mscorlib]System.Collections.Generic.List`1<class Bless.Buffers.ByteBufferAction>::get_Count()
-	IL_000b:  ldc.i4.1 
-	IL_000c:  sub 
-	IL_000d:  stloc.0 
-	IL_000e:  br IL_0028
-
-	IL_0013:  ldarg.0 
-	IL_0014:  ldfld class [mscorlib]System.Collections.Generic.List`1<class Bless.Buffers.ByteBufferAction> Bless.Buffers.MultiAction::list
-	IL_0019:  ldloc.0 
-	IL_001a:  callvirt instance !0 class [mscorlib]System.Collections.Generic.List`1<class Bless.Buffers.ByteBufferAction>::get_Item(int32)
-	IL_001f:  callvirt instance void class Bless.Buffers.ByteBufferAction::Undo()
-	IL_0024:  ldloc.0 
-	IL_0025:  ldc.i4.1 
-	IL_0026:  sub 
-	IL_0027:  stloc.0 
-	IL_0028:  ldloc.0 
-	IL_0029:  ldc.i4.0 
-	IL_002a:  bge IL_0013
-
-	IL_002f:  ret 
-    } // end of method MultiAction::Undo
+	IL_0001:  ldfld int64 Bless.Buffers.SaveInPlaceOperation::bytesSaved
+	IL_0006:  ret 
+    } // end of method SaveInPlaceOperation::get_BytesSaved
 
-    // method line 71
-    .method public virtual hidebysig 
-           instance default void MakePrivateCopyOfData ()  cil managed 
+    // method line 56
+    .method public hidebysig specialname 
+           instance default valuetype Bless.Buffers.SaveInPlaceOperation/SaveInPlaceStage get_StageReached ()  cil managed 
     {
-        // Method begins at RVA 0x2cc8
-	// Code size 63 (0x3f)
-	.maxstack 1
-	.locals init (
-		class Bless.Buffers.ByteBufferAction	V_0,
-		valuetype [mscorlib]System.Collections.Generic.List`1/Enumerator<class Bless.Buffers.ByteBufferAction>	V_1)
+        // Method begins at RVA 0x2e82
+	// Code size 7 (0x7)
+	.maxstack 8
 	IL_0000:  ldarg.0 
-	IL_0001:  ldfld class [mscorlib]System.Collections.Generic.List`1<class Bless.Buffers.ByteBufferAction> Bless.Buffers.MultiAction::list
-	IL_0006:  callvirt instance valuetype [mscorlib]System.Collections.Generic.List`1/Enumerator<!0> class [mscorlib]System.Collections.Generic.List`1<class Bless.Buffers.ByteBufferAction>::GetEnumerator()
-	IL_000b:  stloc.1 
-	.try { // 0
-	  IL_000c:  br IL_001f
-
-	  IL_0011:  ldloca.s 1
-	  IL_0013:  call instance !0 valuetype [mscorlib]System.Collections.Generic.List`1/Enumerator<class Bless.Buffers.ByteBufferAction>::get_Current()
-	  IL_0018:  stloc.0 
-	  IL_0019:  ldloc.0 
-	  IL_001a:  callvirt instance void class Bless.Buffers.ByteBufferAction::MakePrivateCopyOfData()
-	  IL_001f:  ldloca.s 1
-	  IL_0021:  call instance bool valuetype [mscorlib]System.Collections.Generic.List`1/Enumerator<class Bless.Buffers.ByteBufferAction>::MoveNext()
-	  IL_0026:  brtrue IL_0011
-
-	  IL_002b:  leave IL_003e
-
-	} // end .try 0
-	finally  { // 0
-	  IL_0030:  ldloca.s 1
-	  IL_0032:  constrained. valuetype [mscorlib]System.Collections.Generic.List`1/Enumerator<class Bless.Buffers.ByteBufferAction>
-	  IL_0038:  callvirt instance void class [mscorlib]System.IDisposable::Dispose()
-	  IL_003d:  endfinally 
-	} // end handler 0
-	IL_003e:  ret 
-    } // end of method MultiAction::MakePrivateCopyOfData
+	IL_0001:  ldfld valuetype Bless.Buffers.SaveInPlaceOperation/SaveInPlaceStage Bless.Buffers.SaveInPlaceOperation::stageReached
+	IL_0006:  ret 
+    } // end of method SaveInPlaceOperation::get_StageReached
 
-    // method line 72
-    .method public virtual hidebysig 
-           instance default int64 GetPrivateCopySize ()  cil managed 
+    // method line 57
+    .method family virtual hidebysig 
+           instance default bool StartProgress ()  cil managed 
     {
-        // Method begins at RVA 0x2d24
-	// Code size 70 (0x46)
-	.maxstack 2
-	.locals init (
-		int64	V_0,
-		class Bless.Buffers.ByteBufferAction	V_1,
-		valuetype [mscorlib]System.Collections.Generic.List`1/Enumerator<class Bless.Buffers.ByteBufferAction>	V_2)
-	IL_0000:  ldc.i4.0 
-	IL_0001:  conv.i8 
-	IL_0002:  stloc.0 
-	IL_0003:  ldarg.0 
-	IL_0004:  ldfld class [mscorlib]System.Collections.Generic.List`1<class Bless.Buffers.ByteBufferAction> Bless.Buffers.MultiAction::list
-	IL_0009:  callvirt instance valuetype [mscorlib]System.Collections.Generic.List`1/Enumerator<!0> class [mscorlib]System.Collections.Generic.List`1<class Bless.Buffers.ByteBufferAction>::GetEnumerator()
-	IL_000e:  stloc.2 
-	.try { // 0
-	  IL_000f:  br IL_0025
-
-	  IL_0014:  ldloca.s 2
-	  IL_0016:  call instance !0 valuetype [mscorlib]System.Collections.Generic.List`1/Enumerator<class Bless.Buffers.ByteBufferAction>::get_Current()
-	  IL_001b:  stloc.1 
-	  IL_001c:  ldloc.0 
-	  IL_001d:  ldloc.1 
-	  IL_001e:  callvirt instance int64 class Bless.Buffers.ByteBufferAction::GetPrivateCopySize()
-	  IL_0023:  add 
-	  IL_0024:  stloc.0 
-	  IL_0025:  ldloca.s 2
-	  IL_0027:  call instance bool valuetype [mscorlib]System.Collections.Generic.List`1/Enumerator<class Bless.Buffers.ByteBufferAction>::MoveNext()
-	  IL_002c:  brtrue IL_0014
-
-	  IL_0031:  leave IL_0044
-
-	} // end .try 0
-	finally  { // 0
-	  IL_0036:  ldloca.s 2
-	  IL_0038:  constrained. valuetype [mscorlib]System.Collections.Generic.List`1/Enumerator<class Bless.Buffers.ByteBufferAction>
-	  IL_003e:  callvirt instance void class [mscorlib]System.IDisposable::Dispose()
-	  IL_0043:  endfinally 
-	} // end handler 0
-	IL_0044:  ldloc.0 
-	IL_0045:  ret 
-    } // end of method MultiAction::GetPrivateCopySize
-
-  } // end of class Bless.Buffers.MultiAction
-}
-
-.namespace Bless.Buffers
-{
-  .class interface public auto ansi abstract IBuffer
-  {
-    .custom instance void class [mscorlib]System.Reflection.DefaultMemberAttribute::'.ctor'(string) =  (01 00 04 49 74 65 6D 00 00 ) // ...Item..
-
+        // Method begins at RVA 0x2e8c
+	// Code size 72 (0x48)
+	.maxstack 3
+	IL_0000:  ldarg.0 
+	IL_0001:  ldfld class [Bless.Util]Bless.Util.ProgressCallback [Bless.Util]Bless.Util.ThreadedAsyncOperation::progressCallback
+	IL_0006:  ldstr "Saving '{0}'"
+	IL_000b:  call string class [Mono.Posix]Mono.Unix.Catalog::GetString(string)
+	IL_0010:  ldarg.0 
+	IL_0011:  call instance string class Bless.Buffers.SaveInPlaceOperation::get_SavePath()
+	IL_0016:  call string string::Format(string, object)
+	IL_001b:  ldc.i4.3 
+	IL_001c:  callvirt instance bool class [Bless.Util]Bless.Util.ProgressCallback::Invoke(object, valuetype [Bless.Util]Bless.Util.ProgressAction)
+	IL_0021:  pop 
+	IL_0022:  ldarg.0 
+	IL_0023:  ldfld class [Bless.Util]Bless.Util.ProgressCallback [Bless.Util]Bless.Util.ThreadedAsyncOperation::progressCallback
+	IL_0028:  ldarg.0 
+	IL_0029:  ldfld int64 Bless.Buffers.SaveInPlaceOperation::bytesSaved
+	IL_002e:  conv.r8 
+	IL_002f:  ldarg.0 
+	IL_0030:  ldfld class Bless.Buffers.ByteBuffer Bless.Buffers.SaveInPlaceOperation::byteBuffer
+	IL_0035:  callvirt instance int64 class Bless.Buffers.BaseBuffer::get_Size()
+	IL_003a:  conv.r8 
+	IL_003b:  div 
+	IL_003c:  box [mscorlib]System.Double
+	IL_0041:  ldc.i4.0 
+	IL_0042:  callvirt instance bool class [Bless.Util]Bless.Util.ProgressCallback::Invoke(object, valuetype [Bless.Util]Bless.Util.ProgressAction)
+	IL_0047:  ret 
+    } // end of method SaveInPlaceOperation::StartProgress
 
-    // method line 73
-    .method public virtual hidebysig newslot abstract 
-           instance default void Insert (int64 pos, unsigned int8[] data, int64 index, int64 length)  cil managed 
+    // method line 58
+    .method family virtual hidebysig 
+           instance default bool UpdateProgress ()  cil managed 
     {
-        // Method begins at RVA 0x0
-    } // end of method IBuffer::Insert
+        // Method begins at RVA 0x2ee0
+	// Code size 38 (0x26)
+	.maxstack 8
+	IL_0000:  ldarg.0 
+	IL_0001:  ldfld class [Bless.Util]Bless.Util.ProgressCallback [Bless.Util]Bless.Util.ThreadedAsyncOperation::progressCallback
+	IL_0006:  ldarg.0 
+	IL_0007:  ldfld int64 Bless.Buffers.SaveInPlaceOperation::bytesSaved
+	IL_000c:  conv.r8 
+	IL_000d:  ldarg.0 
+	IL_000e:  ldfld class Bless.Buffers.ByteBuffer Bless.Buffers.SaveInPlaceOperation::byteBuffer
+	IL_0013:  callvirt instance int64 class Bless.Buffers.BaseBuffer::get_Size()
+	IL_0018:  conv.r8 
+	IL_0019:  div 
+	IL_001a:  box [mscorlib]System.Double
+	IL_001f:  ldc.i4.2 
+	IL_0020:  callvirt instance bool class [Bless.Util]Bless.Util.ProgressCallback::Invoke(object, valuetype [Bless.Util]Bless.Util.ProgressAction)
+	IL_0025:  ret 
+    } // end of method SaveInPlaceOperation::UpdateProgress
 
-    // method line 74
-    .method public virtual hidebysig newslot abstract 
-           instance default int64 Read (unsigned int8[] data, int64 index, int64 pos, int64 len)  cil managed 
+    // method line 59
+    .method family virtual hidebysig 
+           instance default bool EndProgress ()  cil managed 
     {
-        // Method begins at RVA 0x0
-    } // end of method IBuffer::Read
+        // Method begins at RVA 0x2f07
+	// Code size 38 (0x26)
+	.maxstack 8
+	IL_0000:  ldarg.0 
+	IL_0001:  ldfld class [Bless.Util]Bless.Util.ProgressCallback [Bless.Util]Bless.Util.ThreadedAsyncOperation::progressCallback
+	IL_0006:  ldarg.0 
+	IL_0007:  ldfld int64 Bless.Buffers.SaveInPlaceOperation::bytesSaved
+	IL_000c:  conv.r8 
+	IL_000d:  ldarg.0 
+	IL_000e:  ldfld class Bless.Buffers.ByteBuffer Bless.Buffers.SaveInPlaceOperation::byteBuffer
+	IL_0013:  callvirt instance int64 class Bless.Buffers.BaseBuffer::get_Size()
+	IL_0018:  conv.r8 
+	IL_0019:  div 
+	IL_001a:  box [mscorlib]System.Double
+	IL_001f:  ldc.i4.5 
+	IL_0020:  callvirt instance bool class [Bless.Util]Bless.Util.ProgressCallback::Invoke(object, valuetype [Bless.Util]Bless.Util.ProgressAction)
+	IL_0025:  ret 
+    } // end of method SaveInPlaceOperation::EndProgress
 
-    // method line 75
-    .method public virtual hidebysig newslot abstract 
-           instance default void Append (unsigned int8[] data, int64 index, int64 length)  cil managed 
+    // method line 60
+    .method family virtual hidebysig 
+           instance default void DoOperation ()  cil managed 
     {
-        // Method begins at RVA 0x0
-    } // end of method IBuffer::Append
+        // Method begins at RVA 0x2f30
+	// Code size 538 (0x21a)
+	.maxstack 6
+	.locals init (
+		class Bless.Buffers.SegmentCollection	V_0,
+		object	V_1,
+		bool	V_2,
+		unsigned int8[]	V_3,
+		class [Bless.Util]Bless.Util.List`1/Node<class Bless.Buffers.Segment>	V_4,
+		int64	V_5,
+		class Bless.Buffers.Segment	V_6,
+		int64	V_7,
+		int64	V_8,
+		int32	V_9,
+		int64	V_10)
+	IL_0000:  ldarg.0 
+	IL_0001:  ldc.i4.0 
+	IL_0002:  stfld valuetype Bless.Buffers.SaveInPlaceOperation/SaveInPlaceStage Bless.Buffers.SaveInPlaceOperation::stageReached
+	IL_0007:  ldarg.0 
+	IL_0008:  ldarg.0 
+	IL_0009:  ldfld string Bless.Buffers.SaveInPlaceOperation::savePath
+	IL_000e:  ldc.i4.3 
+	IL_000f:  ldc.i4.2 
+	IL_0010:  ldc.i4.3 
+	IL_0011:  newobj instance void class [mscorlib]System.IO.FileStream::'.ctor'(string, valuetype [mscorlib]System.IO.FileMode, valuetype [mscorlib]System.IO.FileAccess, valuetype [mscorlib]System.IO.FileShare)
+	IL_0016:  stfld class [mscorlib]System.IO.FileStream Bless.Buffers.SaveInPlaceOperation::fs
+	IL_001b:  ldarg.0 
+	IL_001c:  ldfld class Bless.Buffers.ByteBuffer Bless.Buffers.SaveInPlaceOperation::byteBuffer
+	IL_0021:  ldfld class Bless.Buffers.SegmentCollection Bless.Buffers.ByteBuffer::segCol
+	IL_0026:  stloc.0 
+	IL_0027:  ldarg.0 
+	IL_0028:  ldfld bool [Bless.Util]Bless.Util.ThreadedAsyncOperation::cancelled
+	IL_002d:  brtrue IL_0085
 
-    // method line 76
-    .method public virtual hidebysig newslot abstract 
-           instance default void InsertBuffer (int64 pos, class Bless.Buffers.IBuffer buf, int64 index, int64 length)  cil managed 
-    {
-        // Method begins at RVA 0x0
-    } // end of method IBuffer::InsertBuffer
+	IL_0032:  ldarg.0 
+	IL_0033:  ldfld class Bless.Buffers.ByteBuffer Bless.Buffers.SaveInPlaceOperation::byteBuffer
+	IL_0038:  ldfld object Bless.Buffers.ByteBuffer::LockObj
+	IL_003d:  stloc.1 
+	IL_003e:  ldc.i4.0 
+	IL_003f:  stloc.2 
+	.try { // 0
+	  IL_0040:  ldloc.1 
+	  IL_0041:  ldloca.s 2
+	  IL_0043:  call void class [mscorlib]System.Threading.Monitor::Enter(object, [out] bool&)
+	  IL_0048:  ldarg.0 
+	  IL_0049:  ldfld class Bless.Buffers.ByteBuffer Bless.Buffers.SaveInPlaceOperation::byteBuffer
+	  IL_004e:  callvirt instance void class Bless.Buffers.ByteBuffer::MakePrivateCopyOfUndoRedo()
+	  IL_0053:  ldarg.0 
+	  IL_0054:  ldfld class Bless.Buffers.ByteBuffer Bless.Buffers.SaveInPlaceOperation::byteBuffer
+	  IL_0059:  ldc.i4.1 
+	  IL_005a:  callvirt instance void class Bless.Buffers.ByteBuffer::set_FileOperationsAllowed(bool)
+	  IL_005f:  ldarg.0 
+	  IL_0060:  ldfld class Bless.Buffers.ByteBuffer Bless.Buffers.SaveInPlaceOperation::byteBuffer
+	  IL_0065:  callvirt instance void class Bless.Buffers.ByteBuffer::CloseFile()
+	  IL_006a:  ldarg.0 
+	  IL_006b:  ldfld class Bless.Buffers.ByteBuffer Bless.Buffers.SaveInPlaceOperation::byteBuffer
+	  IL_0070:  ldc.i4.0 
+	  IL_0071:  callvirt instance void class Bless.Buffers.ByteBuffer::set_FileOperationsAllowed(bool)
+	  IL_0076:  leave IL_0085
 
-    // method line 77
-    .method public virtual hidebysig newslot abstract 
-           instance default void AppendBuffer (class Bless.Buffers.IBuffer buf, int64 index, int64 length)  cil managed 
-    {
-        // Method begins at RVA 0x0
-    } // end of method IBuffer::AppendBuffer
+	} // end .try 0
+	finally  { // 0
+	  IL_007b:  ldloc.2 
+	  IL_007c:  brfalse.s IL_0084
 
-    // method line 78
-    .method public virtual hidebysig newslot abstract specialname 
-           instance default void set_Item (int64 index, unsigned int8 'value')  cil managed 
-    {
-        // Method begins at RVA 0x0
-    } // end of method IBuffer::set_Item
+	  IL_007e:  ldloc.1 
+	  IL_007f:  call void class [mscorlib]System.Threading.Monitor::Exit(object)
+	  IL_0084:  endfinally 
+	} // end handler 0
+	IL_0085:  ldarg.0 
+	IL_0086:  ldc.i4.1 
+	IL_0087:  stfld valuetype Bless.Buffers.SaveInPlaceOperation/SaveInPlaceStage Bless.Buffers.SaveInPlaceOperation::stageReached
+	IL_008c:  ldc.i4 65535
+	IL_0091:  newarr [mscorlib]System.Byte
+	IL_0096:  stloc.3 
+	IL_0097:  ldloc.0 
+	IL_0098:  callvirt instance class [Bless.Util]Bless.Util.List`1<class Bless.Buffers.Segment> class Bless.Buffers.SegmentCollection::get_List()
+	IL_009d:  callvirt instance class [Bless.Util]Bless.Util.List`1/Node<!0> class [Bless.Util]Bless.Util.List`1<class Bless.Buffers.Segment>::get_First()
+	IL_00a2:  stloc.s 4
+	IL_00a4:  ldc.i4.0 
+	IL_00a5:  conv.i8 
+	IL_00a6:  stloc.s 5
+	IL_00a8:  br IL_01f5
 
-    // method line 79
-    .method public virtual hidebysig newslot abstract specialname 
-           instance default unsigned int8 get_Item (int64 index)  cil managed 
-    {
-        // Method begins at RVA 0x0
-    } // end of method IBuffer::get_Item
+	IL_00ad:  ldloc.s 4
+	IL_00af:  ldfld !0 class [Bless.Util]Bless.Util.List`1/Node<class Bless.Buffers.Segment>::data
+	IL_00b4:  stloc.s 6
+	IL_00b6:  ldloc.s 6
+	IL_00b8:  callvirt instance class Bless.Buffers.IBuffer class Bless.Buffers.Segment::get_Buffer()
+	IL_00bd:  callvirt instance class [mscorlib]System.Type object::GetType()
+	IL_00c2:  ldtoken Bless.Buffers.FileBuffer
+	IL_00c7:  call class [mscorlib]System.Type class [mscorlib]System.Type::GetTypeFromHandle(valuetype [mscorlib]System.RuntimeTypeHandle)
+	IL_00cc:  call bool class [mscorlib]System.Type::op_Equality(class [mscorlib]System.Type, class [mscorlib]System.Type)
+	IL_00d1:  brfalse IL_00f0
 
-    // method line 80
-    .method public virtual hidebysig newslot abstract specialname 
-           instance default int64 get_Size ()  cil managed 
-    {
-        // Method begins at RVA 0x0
-    } // end of method IBuffer::get_Size
+	IL_00d6:  ldloc.s 5
+	IL_00d8:  ldloc.s 6
+	IL_00da:  callvirt instance int64 class Bless.Buffers.Segment::get_Size()
+	IL_00df:  add 
+	IL_00e0:  stloc.s 5
+	IL_00e2:  ldloc.s 4
+	IL_00e4:  ldfld class [Bless.Util]Bless.Util.List`1/Node<!0> class [Bless.Util]Bless.Util.List`1/Node<class Bless.Buffers.Segment>::next
+	IL_00e9:  stloc.s 4
+	IL_00eb:  br IL_01f5
 
-	.property instance unsigned int8 Item (int64)
-	{
-		.get instance default unsigned int8 Bless.Buffers.IBuffer::get_Item (int64 index) 
-		.set instance default void Bless.Buffers.IBuffer::set_Item (int64 index, unsigned int8 'value') 
-	}
-	.property instance int64 Size ()
-	{
-		.get instance default int64 Bless.Buffers.IBuffer::get_Size () 
-	}
-  } // end of class Bless.Buffers.IBuffer
-}
+	IL_00f0:  ldloc.s 6
+	IL_00f2:  callvirt instance int64 class Bless.Buffers.Segment::get_Size()
+	IL_00f7:  stloc.s 7
+	IL_00f9:  ldloc.s 7
+	IL_00fb:  ldc.i4 65535
+	IL_0100:  conv.i8 
+	IL_0101:  div 
+	IL_0102:  stloc.s 8
+	IL_0104:  ldloc.s 7
+	IL_0106:  ldc.i4 65535
+	IL_010b:  conv.i8 
+	IL_010c:  rem 
+	IL_010d:  conv.i4 
+	IL_010e:  stloc.s 9
+	IL_0110:  ldarg.0 
+	IL_0111:  ldfld class [mscorlib]System.IO.FileStream Bless.Buffers.SaveInPlaceOperation::fs
+	IL_0116:  ldloc.s 5
+	IL_0118:  ldc.i4.0 
+	IL_0119:  callvirt instance int64 class [mscorlib]System.IO.Stream::Seek(int64, valuetype [mscorlib]System.IO.SeekOrigin)
+	IL_011e:  pop 
+	IL_011f:  ldarg.0 
+	IL_0120:  ldloc.s 5
+	IL_0122:  stfld int64 Bless.Buffers.SaveInPlaceOperation::bytesSaved
+	IL_0127:  ldc.i4.0 
+	IL_0128:  conv.i8 
+	IL_0129:  stloc.s 10
+	IL_012b:  br IL_0192
 
-.namespace Bless.Buffers
-{
-  .class public auto ansi beforefieldinit BaseBuffer
-  	extends [mscorlib]System.Object
-  	implements Bless.Buffers.IBuffer  {
-    .custom instance void class [mscorlib]System.Reflection.DefaultMemberAttribute::'.ctor'(string) =  (01 00 04 49 74 65 6D 00 00 ) // ...Item..
+	IL_0130:  ldloc.s 6
+	IL_0132:  callvirt instance class Bless.Buffers.IBuffer class Bless.Buffers.Segment::get_Buffer()
+	IL_0137:  ldloc.3 
+	IL_0138:  ldc.i4.0 
+	IL_0139:  conv.i8 
+	IL_013a:  ldloc.s 6
+	IL_013c:  callvirt instance int64 class Bless.Buffers.Segment::get_Start()
+	IL_0141:  ldloc.s 10
+	IL_0143:  ldc.i4 65535
+	IL_0148:  conv.i8 
+	IL_0149:  mul 
+	IL_014a:  add 
+	IL_014b:  ldc.i4 65535
+	IL_0150:  conv.i8 
+	IL_0151:  callvirt instance int64 class Bless.Buffers.IBuffer::Read(unsigned int8[], int64, int64, int64)
+	IL_0156:  pop 
+	IL_0157:  ldarg.0 
+	IL_0158:  ldfld class [mscorlib]System.IO.FileStream Bless.Buffers.SaveInPlaceOperation::fs
+	IL_015d:  ldloc.3 
+	IL_015e:  ldc.i4.0 
+	IL_015f:  ldc.i4 65535
+	IL_0164:  callvirt instance void class [mscorlib]System.IO.Stream::Write(unsigned int8[], int32, int32)
+	IL_0169:  ldarg.0 
+	IL_016a:  ldloc.s 10
+	IL_016c:  ldc.i4.1 
+	IL_016d:  conv.i8 
+	IL_016e:  add 
+	IL_016f:  ldc.i4 65535
+	IL_0174:  conv.i8 
+	IL_0175:  mul 
+	IL_0176:  stfld int64 Bless.Buffers.SaveInPlaceOperation::bytesSaved
+	IL_017b:  ldarg.0 
+	IL_017c:  ldfld bool [Bless.Util]Bless.Util.ThreadedAsyncOperation::cancelled
+	IL_0181:  brfalse IL_018b
 
+	IL_0186:  br IL_019b
 
-    // method line 81
-    .method public hidebysig specialname rtspecialname 
-           instance default void '.ctor' ()  cil managed 
-    {
-        // Method begins at RVA 0x2d88
-	// Code size 7 (0x7)
-	.maxstack 8
-	IL_0000:  ldarg.0 
-	IL_0001:  call instance void object::'.ctor'()
-	IL_0006:  ret 
-    } // end of method BaseBuffer::.ctor
+	IL_018b:  ldloc.s 10
+	IL_018d:  ldc.i4.1 
+	IL_018e:  conv.i8 
+	IL_018f:  add 
+	IL_0190:  stloc.s 10
+	IL_0192:  ldloc.s 10
+	IL_0194:  ldloc.s 8
+	IL_0196:  blt IL_0130
 
-    // method line 82
-    .method public virtual hidebysig newslot 
-           instance default void Insert (int64 pos, unsigned int8[] data, int64 index, int64 length)  cil managed 
-    {
-        // Method begins at RVA 0x2d90
-	// Code size 6 (0x6)
-	.maxstack 8
-	IL_0000:  newobj instance void class [mscorlib]System.NotImplementedException::'.ctor'()
-	IL_0005:  throw 
-    } // end of method BaseBuffer::Insert
+	IL_019b:  ldloc.s 9
+	IL_019d:  brfalse IL_01e0
 
-    // method line 83
-    .method public virtual hidebysig newslot 
-           instance default int64 Read (unsigned int8[] data, int64 index, int64 pos, int64 len)  cil managed 
-    {
-        // Method begins at RVA 0x2d97
-	// Code size 6 (0x6)
-	.maxstack 8
-	IL_0000:  newobj instance void class [mscorlib]System.NotImplementedException::'.ctor'()
-	IL_0005:  throw 
-    } // end of method BaseBuffer::Read
+	IL_01a2:  ldarg.0 
+	IL_01a3:  ldfld bool [Bless.Util]Bless.Util.ThreadedAsyncOperation::cancelled
+	IL_01a8:  brtrue IL_01e0
 
-    // method line 84
-    .method public virtual hidebysig newslot 
-           instance default void Append (unsigned int8[] data, int64 index, int64 length)  cil managed 
-    {
-        // Method begins at RVA 0x2d9e
-	// Code size 6 (0x6)
-	.maxstack 8
-	IL_0000:  newobj instance void class [mscorlib]System.NotImplementedException::'.ctor'()
-	IL_0005:  throw 
-    } // end of method BaseBuffer::Append
+	IL_01ad:  ldloc.s 6
+	IL_01af:  callvirt instance class Bless.Buffers.IBuffer class Bless.Buffers.Segment::get_Buffer()
+	IL_01b4:  ldloc.3 
+	IL_01b5:  ldc.i4.0 
+	IL_01b6:  conv.i8 
+	IL_01b7:  ldloc.s 6
+	IL_01b9:  callvirt instance int64 class Bless.Buffers.Segment::get_Start()
+	IL_01be:  ldloc.s 10
+	IL_01c0:  ldc.i4 65535
+	IL_01c5:  conv.i8 
+	IL_01c6:  mul 
+	IL_01c7:  add 
+	IL_01c8:  ldloc.s 9
+	IL_01ca:  conv.i8 
+	IL_01cb:  callvirt instance int64 class Bless.Buffers.IBuffer::Read(unsigned int8[], int64, int64, int64)
+	IL_01d0:  pop 
+	IL_01d1:  ldarg.0 
+	IL_01d2:  ldfld class [mscorlib]System.IO.FileStream Bless.Buffers.SaveInPlaceOperation::fs
+	IL_01d7:  ldloc.3 
+	IL_01d8:  ldc.i4.0 
+	IL_01d9:  ldloc.s 9
+	IL_01db:  callvirt instance void class [mscorlib]System.IO.Stream::Write(unsigned int8[], int32, int32)
+	IL_01e0:  ldloc.s 5
+	IL_01e2:  ldloc.s 6
+	IL_01e4:  callvirt instance int64 class Bless.Buffers.Segment::get_Size()
+	IL_01e9:  add 
+	IL_01ea:  stloc.s 5
+	IL_01ec:  ldloc.s 4
+	IL_01ee:  ldfld class [Bless.Util]Bless.Util.List`1/Node<!0> class [Bless.Util]Bless.Util.List`1/Node<class Bless.Buffers.Segment>::next
+	IL_01f3:  stloc.s 4
+	IL_01f5:  ldloc.s 4
+	IL_01f7:  brfalse IL_0207
 
-    // method line 85
-    .method public virtual hidebysig newslot 
-           instance default void InsertBuffer (int64 pos, class Bless.Buffers.IBuffer buf, int64 index, int64 length)  cil managed 
-    {
-        // Method begins at RVA 0x2da5
-	// Code size 6 (0x6)
-	.maxstack 8
-	IL_0000:  newobj instance void class [mscorlib]System.NotImplementedException::'.ctor'()
-	IL_0005:  throw 
-    } // end of method BaseBuffer::InsertBuffer
+	IL_01fc:  ldarg.0 
+	IL_01fd:  ldfld bool [Bless.Util]Bless.Util.ThreadedAsyncOperation::cancelled
+	IL_0202:  brfalse IL_00ad
 
-    // method line 86
-    .method public virtual hidebysig newslot 
-           instance default void AppendBuffer (class Bless.Buffers.IBuffer buf, int64 index, int64 length)  cil managed 
-    {
-        // Method begins at RVA 0x2dac
-	// Code size 6 (0x6)
-	.maxstack 8
-	IL_0000:  newobj instance void class [mscorlib]System.NotImplementedException::'.ctor'()
-	IL_0005:  throw 
-    } // end of method BaseBuffer::AppendBuffer
+	IL_0207:  ldarg.0 
+	IL_0208:  ldfld class [mscorlib]System.IO.FileStream Bless.Buffers.SaveInPlaceOperation::fs
+	IL_020d:  callvirt instance void class [mscorlib]System.IO.Stream::Close()
+	IL_0212:  ldarg.0 
+	IL_0213:  ldnull 
+	IL_0214:  stfld class [mscorlib]System.IO.FileStream Bless.Buffers.SaveInPlaceOperation::fs
+	IL_0219:  ret 
+    } // end of method SaveInPlaceOperation::DoOperation
 
-    // method line 87
-    .method public virtual hidebysig newslot specialname 
-           instance default void set_Item (int64 index, unsigned int8 'value')  cil managed 
+    // method line 61
+    .method family virtual hidebysig 
+           instance default void EndOperation ()  cil managed 
     {
-        // Method begins at RVA 0x2db3
-	// Code size 6 (0x6)
+        // Method begins at RVA 0x3168
+	// Code size 30 (0x1e)
 	.maxstack 8
-	IL_0000:  newobj instance void class [mscorlib]System.NotImplementedException::'.ctor'()
-	IL_0005:  throw 
-    } // end of method BaseBuffer::set_Item
+	IL_0000:  ldarg.0 
+	IL_0001:  ldfld class [mscorlib]System.IO.FileStream Bless.Buffers.SaveInPlaceOperation::fs
+	IL_0006:  brfalse IL_001d
 
-    // method line 88
-    .method public virtual hidebysig newslot specialname 
-           instance default unsigned int8 get_Item (int64 index)  cil managed 
+	IL_000b:  ldarg.0 
+	IL_000c:  ldfld class [mscorlib]System.IO.FileStream Bless.Buffers.SaveInPlaceOperation::fs
+	IL_0011:  callvirt instance void class [mscorlib]System.IO.Stream::Close()
+	IL_0016:  ldarg.0 
+	IL_0017:  ldnull 
+	IL_0018:  stfld class [mscorlib]System.IO.FileStream Bless.Buffers.SaveInPlaceOperation::fs
+	IL_001d:  ret 
+    } // end of method SaveInPlaceOperation::EndOperation
+
+    // method line 62
+    .method private final virtual hidebysig newslot strict 
+           instance default valuetype [Bless.Util]Bless.Util.ThreadedAsyncOperation/OperationResult Bless.Buffers.ISaveState.get_Result ()  cil managed 
     {
-        // Method begins at RVA 0x2dba
-	// Code size 6 (0x6)
+        // Method begins at RVA 0x3187
+	.override Could not decode method override class Bless.Buffers.ISaveState::get_Result due to (null)
+	// Code size 7 (0x7)
 	.maxstack 8
-	IL_0000:  newobj instance void class [mscorlib]System.NotImplementedException::'.ctor'()
-	IL_0005:  throw 
-    } // end of method BaseBuffer::get_Item
+	IL_0000:  ldarg.0 
+	IL_0001:  call instance valuetype [Bless.Util]Bless.Util.ThreadedAsyncOperation/OperationResult class [Bless.Util]Bless.Util.ThreadedAsyncOperation::get_Result()
+	IL_0006:  ret 
+    } // end of method SaveInPlaceOperation::Bless.Buffers.ISaveState.get_Result
 
-    // method line 89
-    .method public virtual hidebysig newslot specialname 
-           instance default int64 get_Size ()  cil managed 
+    // method line 63
+    .method private final virtual hidebysig newslot strict 
+           instance default class [mscorlib]System.Exception Bless.Buffers.ISaveState.get_ThreadException ()  cil managed 
     {
-        // Method begins at RVA 0x2dc1
-	// Code size 6 (0x6)
+        // Method begins at RVA 0x318f
+	.override Could not decode method override class Bless.Buffers.ISaveState::get_ThreadException due to (null)
+	// Code size 7 (0x7)
 	.maxstack 8
-	IL_0000:  newobj instance void class [mscorlib]System.NotImplementedException::'.ctor'()
-	IL_0005:  throw 
-    } // end of method BaseBuffer::get_Size
+	IL_0000:  ldarg.0 
+	IL_0001:  call instance class [mscorlib]System.Exception class [Bless.Util]Bless.Util.ThreadedAsyncOperation::get_ThreadException()
+	IL_0006:  ret 
+    } // end of method SaveInPlaceOperation::Bless.Buffers.ISaveState.get_ThreadException
 
-	.property instance unsigned int8 Item (int64)
+	.property instance class Bless.Buffers.ByteBuffer Buffer ()
 	{
-		.get instance default unsigned int8 Bless.Buffers.BaseBuffer::get_Item (int64 index) 
-		.set instance default void Bless.Buffers.BaseBuffer::set_Item (int64 index, unsigned int8 'value') 
+		.get instance default class Bless.Buffers.ByteBuffer Bless.Buffers.SaveInPlaceOperation::get_Buffer () 
 	}
-	.property instance int64 Size ()
+	.property instance string SavePath ()
 	{
-		.get instance default int64 Bless.Buffers.BaseBuffer::get_Size () 
+		.get instance default string Bless.Buffers.SaveInPlaceOperation::get_SavePath () 
+		.set instance default void Bless.Buffers.SaveInPlaceOperation::set_SavePath (string 'value') 
 	}
-  } // end of class Bless.Buffers.BaseBuffer
+	.property instance int64 BytesSaved ()
+	{
+		.get instance default int64 Bless.Buffers.SaveInPlaceOperation::get_BytesSaved () 
+	}
+	.property instance valuetype Bless.Buffers.SaveInPlaceOperation/SaveInPlaceStage StageReached ()
+	{
+		.get instance default valuetype Bless.Buffers.SaveInPlaceOperation/SaveInPlaceStage Bless.Buffers.SaveInPlaceOperation::get_StageReached () 
+	}
+  .class nested public auto ansi sealed SaveInPlaceStage
+  	extends [mscorlib]System.Enum
+  {
+    .field  public specialname rtspecialname  int32 value__
+    .field public static literal  valuetype Bless.Buffers.SaveInPlaceOperation/SaveInPlaceStage BeforeClose = int32(0x00000000)
+    .field public static literal  valuetype Bless.Buffers.SaveInPlaceOperation/SaveInPlaceStage BeforeWrite = int32(0x00000001)
+
+  } // end of class SaveInPlaceStage
+
+  } // end of class Bless.Buffers.SaveInPlaceOperation
 }
 
 .namespace Bless.Buffers
@@ -2343,11 +2571,11 @@
     .field  private  class [mscorlib]System.Threading.AutoResetEvent saveFinishedEvent
     .field  private  bool useGLibIdle
 
-    // method line 90
+    // method line 64
     .method public hidebysig specialname rtspecialname 
            instance default void '.ctor' ()  cil managed 
     {
-        // Method begins at RVA 0x2dc8
+        // Method begins at RVA 0x3198
 	// Code size 179 (0xb3)
 	.maxstack 4
 	IL_0000:  ldarg.0 
@@ -2411,11 +2639,11 @@
 	IL_00b2:  ret 
     } // end of method ByteBuffer::.ctor
 
-    // method line 91
+    // method line 65
     .method public hidebysig specialname rtspecialname 
            instance default void '.ctor' (string filename)  cil managed 
     {
-        // Method begins at RVA 0x2e87
+        // Method begins at RVA 0x3257
 	// Code size 26 (0x1a)
 	.maxstack 8
 	IL_0000:  ldarg.0 
@@ -2430,11 +2658,11 @@
 	IL_0019:  ret 
     } // end of method ByteBuffer::.ctor
 
-    // method line 92
+    // method line 66
     .method public hidebysig specialname 
            instance default void add_Changed (class Bless.Buffers.ByteBuffer/ChangedHandler 'value')  cil managed 
     {
-        // Method begins at RVA 0x2ea4
+        // Method begins at RVA 0x3274
 	// Code size 42 (0x2a)
 	.maxstack 3
 	.locals init (
@@ -2461,11 +2689,11 @@
 	IL_0029:  ret 
     } // end of method ByteBuffer::add_Changed
 
-    // method line 93
+    // method line 67
     .method public hidebysig specialname 
            instance default void remove_Changed (class Bless.Buffers.ByteBuffer/ChangedHandler 'value')  cil managed 
     {
-        // Method begins at RVA 0x2edc
+        // Method begins at RVA 0x32ac
 	// Code size 42 (0x2a)
 	.maxstack 3
 	.locals init (
@@ -2492,11 +2720,11 @@
 	IL_0029:  ret 
     } // end of method ByteBuffer::remove_Changed
 
-    // method line 94
+    // method line 68
     .method public hidebysig specialname 
            instance default void add_FileChanged (class Bless.Buffers.ByteBuffer/ChangedHandler 'value')  cil managed 
     {
-        // Method begins at RVA 0x2f14
+        // Method begins at RVA 0x32e4
 	// Code size 42 (0x2a)
 	.maxstack 3
 	.locals init (
@@ -2523,11 +2751,11 @@
 	IL_0029:  ret 
     } // end of method ByteBuffer::add_FileChanged
 
-    // method line 95
+    // method line 69
     .method public hidebysig specialname 
            instance default void remove_FileChanged (class Bless.Buffers.ByteBuffer/ChangedHandler 'value')  cil managed 
     {
-        // Method begins at RVA 0x2f4c
+        // Method begins at RVA 0x331c
 	// Code size 42 (0x2a)
 	.maxstack 3
 	.locals init (
@@ -2554,11 +2782,11 @@
 	IL_0029:  ret 
     } // end of method ByteBuffer::remove_FileChanged
 
-    // method line 96
+    // method line 70
     .method public hidebysig specialname 
            instance default void add_PermissionsChanged (class Bless.Buffers.ByteBuffer/ChangedHandler 'value')  cil managed 
     {
-        // Method begins at RVA 0x2f84
+        // Method begins at RVA 0x3354
 	// Code size 42 (0x2a)
 	.maxstack 3
 	.locals init (
@@ -2585,11 +2813,11 @@
 	IL_0029:  ret 
     } // end of method ByteBuffer::add_PermissionsChanged
 
-    // method line 97
+    // method line 71
     .method public hidebysig specialname 
            instance default void remove_PermissionsChanged (class Bless.Buffers.ByteBuffer/ChangedHandler 'value')  cil managed 
     {
-        // Method begins at RVA 0x2fbc
+        // Method begins at RVA 0x338c
 	// Code size 42 (0x2a)
 	.maxstack 3
 	.locals init (
@@ -2616,11 +2844,11 @@
 	IL_0029:  ret 
     } // end of method ByteBuffer::remove_PermissionsChanged
 
-    // method line 98
+    // method line 72
     .method public hidebysig 
            instance default void EmitChanged ()  cil managed 
     {
-        // Method begins at RVA 0x2ff2
+        // Method begins at RVA 0x33c2
 	// Code size 35 (0x23)
 	.maxstack 8
 	IL_0000:  ldarg.0 
@@ -2638,11 +2866,11 @@
 	IL_0022:  ret 
     } // end of method ByteBuffer::EmitChanged
 
-    // method line 99
+    // method line 73
     .method public hidebysig 
            instance default void EmitFileChanged ()  cil managed 
     {
-        // Method begins at RVA 0x3016
+        // Method begins at RVA 0x33e6
 	// Code size 35 (0x23)
 	.maxstack 8
 	IL_0000:  ldarg.0 
@@ -2660,11 +2888,11 @@
 	IL_0022:  ret 
     } // end of method ByteBuffer::EmitFileChanged
 
-    // method line 100
+    // method line 74
     .method public hidebysig 
            instance default void EmitPermissionsChanged ()  cil managed 
     {
-        // Method begins at RVA 0x303a
+        // Method begins at RVA 0x340a
 	// Code size 35 (0x23)
 	.maxstack 8
 	IL_0000:  ldarg.0 
@@ -2682,11 +2910,11 @@
 	IL_0022:  ret 
     } // end of method ByteBuffer::EmitPermissionsChanged
 
-    // method line 101
+    // method line 75
     .method public static hidebysig 
            default class Bless.Buffers.ByteBuffer FromFile (string filename)  cil managed 
     {
-        // Method begins at RVA 0x3060
+        // Method begins at RVA 0x3430
 	// Code size 27 (0x1b)
 	.maxstack 2
 	.locals init (
@@ -2704,11 +2932,11 @@
 	IL_001a:  ret 
     } // end of method ByteBuffer::FromFile
 
-    // method line 102
+    // method line 76
     .method public hidebysig 
            instance default void BeginActionChaining ()  cil managed 
     {
-        // Method begins at RVA 0x3087
+        // Method begins at RVA 0x3457
 	// Code size 33 (0x21)
 	.maxstack 8
 	IL_0000:  ldarg.0 
@@ -2726,11 +2954,11 @@
 	IL_0020:  ret 
     } // end of method ByteBuffer::BeginActionChaining
 
-    // method line 103
+    // method line 77
     .method public hidebysig 
            instance default void EndActionChaining ()  cil managed 
     {
-        // Method begins at RVA 0x30a9
+        // Method begins at RVA 0x3479
 	// Code size 28 (0x1c)
 	.maxstack 8
 	IL_0000:  ldarg.0 
@@ -2747,11 +2975,11 @@
 	IL_001b:  ret 
     } // end of method ByteBuffer::EndActionChaining
 
-    // method line 104
+    // method line 78
     .method private hidebysig 
            instance default bool HandleChaining (class Bless.Buffers.ByteBufferAction action)  cil managed 
     {
-        // Method begins at RVA 0x30c6
+        // Method begins at RVA 0x3496
 	// Code size 57 (0x39)
 	.maxstack 8
 	IL_0000:  ldarg.0 
@@ -2779,11 +3007,11 @@
 	IL_0038:  ret 
     } // end of method ByteBuffer::HandleChaining
 
-    // method line 105
+    // method line 79
     .method private hidebysig 
            instance default void AddUndoAction (class Bless.Buffers.ByteBufferAction action)  cil managed 
     {
-        // Method begins at RVA 0x3100
+        // Method begins at RVA 0x34d0
 	// Code size 71 (0x47)
 	.maxstack 2
 	IL_0000:  ldarg.0 
@@ -2814,11 +3042,11 @@
 	IL_0046:  ret 
     } // end of method ByteBuffer::AddUndoAction
 
-    // method line 106
+    // method line 80
     .method private hidebysig 
            instance default void RedoDequeDispose ()  cil managed 
     {
-        // Method begins at RVA 0x3153
+        // Method begins at RVA 0x3523
 	// Code size 12 (0xc)
 	.maxstack 8
 	IL_0000:  ldarg.0 
@@ -2827,11 +3055,11 @@
 	IL_000b:  ret 
     } // end of method ByteBuffer::RedoDequeDispose
 
-    // method line 107
+    // method line 81
     .method public virtual hidebysig 
            instance default void Append (unsigned int8[] data, int64 index, int64 length)  cil managed 
     {
-        // Method begins at RVA 0x3160
+        // Method begins at RVA 0x3530
 	// Code size 112 (0x70)
 	.maxstack 4
 	.locals init (
@@ -2893,11 +3121,11 @@
 	IL_006f:  ret 
     } // end of method ByteBuffer::Append
 
-    // method line 108
+    // method line 82
     .method public virtual hidebysig 
            instance default void Insert (int64 pos, unsigned int8[] data, int64 index, int64 length)  cil managed 
     {
-        // Method begins at RVA 0x31ec
+        // Method begins at RVA 0x35bc
 	// Code size 141 (0x8d)
 	.maxstack 5
 	.locals init (
@@ -2972,11 +3200,11 @@
 	IL_008c:  ret 
     } // end of method ByteBuffer::Insert
 
-    // method line 109
+    // method line 83
     .method public hidebysig 
            instance default void Delete (int64 pos1, int64 pos2)  cil managed 
     {
-        // Method begins at RVA 0x3298
+        // Method begins at RVA 0x3668
 	// Code size 111 (0x6f)
 	.maxstack 3
 	.locals init (
@@ -3037,11 +3265,11 @@
 	IL_006e:  ret 
     } // end of method ByteBuffer::Delete
 
-    // method line 110
+    // method line 84
     .method public hidebysig 
            instance default void Replace (int64 pos1, int64 pos2, unsigned int8[] data, int64 index, int64 length)  cil managed 
     {
-        // Method begins at RVA 0x3324
+        // Method begins at RVA 0x36f4
 	// Code size 133 (0x85)
 	.maxstack 6
 	.locals init (
@@ -3118,11 +3346,11 @@
 	IL_0084:  ret 
     } // end of method ByteBuffer::Replace
 
-    // method line 111
+    // method line 85
     .method public hidebysig 
            instance default void Replace (int64 pos1, int64 pos2, unsigned int8[] data)  cil managed 
     {
-        // Method begins at RVA 0x33c8
+        // Method begins at RVA 0x3798
 	// Code size 16 (0x10)
 	.maxstack 8
 	IL_0000:  ldarg.0 
@@ -3139,11 +3367,11 @@
 	IL_000f:  ret 
     } // end of method ByteBuffer::Replace
 
-    // method line 112
+    // method line 86
     .method public hidebysig 
            instance default void Undo ()  cil managed 
     {
-        // Method begins at RVA 0x33dc
+        // Method begins at RVA 0x37ac
 	// Code size 102 (0x66)
 	.maxstack 2
 	.locals init (
@@ -3197,11 +3425,11 @@
 	IL_0065:  ret 
     } // end of method ByteBuffer::Undo
 
-    // method line 113
+    // method line 87
     .method public hidebysig 
            instance default void Redo ()  cil managed 
     {
-        // Method begins at RVA 0x3460
+        // Method begins at RVA 0x3830
 	// Code size 97 (0x61)
 	.maxstack 2
 	.locals init (
@@ -3254,11 +3482,11 @@
 	IL_0060:  ret 
     } // end of method ByteBuffer::Redo
 
-    // method line 114
+    // method line 88
     .method public hidebysig 
            instance default class [mscorlib]System.IAsyncResult BeginSaveAs (string filename, class [Bless.Util]Bless.Util.ProgressCallback progressCallback, class [mscorlib]System.AsyncCallback ac)  cil managed 
     {
-        // Method begins at RVA 0x34e0
+        // Method begins at RVA 0x38b0
 	// Code size 190 (0xbe)
 	.maxstack 5
 	.locals init (
@@ -3349,11 +3577,11 @@
 	IL_00bd:  ret 
     } // end of method ByteBuffer::BeginSaveAs
 
-    // method line 115
+    // method line 89
     .method private hidebysig 
            instance default void SaveAsAsyncCallback (class [mscorlib]System.IAsyncResult ar)  cil managed 
     {
-        // Method begins at RVA 0x35bc
+        // Method begins at RVA 0x398c
 	// Code size 280 (0x118)
 	.maxstack 2
 	.locals init (
@@ -3476,11 +3704,11 @@
 	IL_0117:  ret 
     } // end of method ByteBuffer::SaveAsAsyncCallback
 
-    // method line 116
+    // method line 90
     .method public hidebysig 
            instance default class [mscorlib]System.IAsyncResult BeginSave (class [Bless.Util]Bless.Util.ProgressCallback progressCallback, class [mscorlib]System.AsyncCallback ac)  cil managed 
     {
-        // Method begins at RVA 0x3714
+        // Method begins at RVA 0x3ae4
 	// Code size 303 (0x12f)
 	.maxstack 5
 	.locals init (
@@ -3611,11 +3839,11 @@
 	IL_012e:  ret 
     } // end of method ByteBuffer::BeginSave
 
-    // method line 117
+    // method line 91
     .method private hidebysig 
            instance default void SaveAsyncCallback (class [mscorlib]System.IAsyncResult ar)  cil managed 
     {
-        // Method begins at RVA 0x386c
+        // Method begins at RVA 0x3c3c
 	// Code size 498 (0x1f2)
 	.maxstack 2
 	.locals init (
@@ -3810,11 +4038,11 @@
 	IL_01f1:  ret 
     } // end of method ByteBuffer::SaveAsyncCallback
 
-    // method line 118
+    // method line 92
     .method private hidebysig 
            instance default void SaveInPlaceAsyncCallback (class [mscorlib]System.IAsyncResult ar)  cil managed 
     {
-        // Method begins at RVA 0x3a88
+        // Method begins at RVA 0x3e58
 	// Code size 242 (0xf2)
 	.maxstack 2
 	.locals init (
@@ -3921,11 +4149,11 @@
 	IL_00f1:  ret 
     } // end of method ByteBuffer::SaveInPlaceAsyncCallback
 
-    // method line 119
+    // method line 93
     .method public hidebysig 
            instance default void Revert ()  cil managed 
     {
-        // Method begins at RVA 0x3b98
+        // Method begins at RVA 0x3f68
 	// Code size 150 (0x96)
 	.maxstack 2
 	.locals init (
@@ -3996,11 +4224,11 @@
 	IL_0095:  ret 
     } // end of method ByteBuffer::Revert
 
-    // method line 120
+    // method line 94
     .method public hidebysig 
            instance default unsigned int8[] RangeToByteArray (class [Bless.Util]Bless.Util.IRange range)  cil managed 
     {
-        // Method begins at RVA 0x3c4c
+        // Method begins at RVA 0x401c
 	// Code size 73 (0x49)
 	.maxstack 5
 	.locals init (
@@ -4048,11 +4276,11 @@
 	IL_0048:  ret 
     } // end of method ByteBuffer::RangeToByteArray
 
-    // method line 121
+    // method line 95
     .method public hidebysig 
            instance default class Bless.Buffers.SegmentCollection RangeToSegmentCollection (class [Bless.Util]Bless.Util.Range range)  cil managed 
     {
-        // Method begins at RVA 0x3ca1
+        // Method begins at RVA 0x4071
 	// Code size 39 (0x27)
 	.maxstack 8
 	IL_0000:  ldarg.1 
@@ -4073,11 +4301,11 @@
 	IL_0026:  ret 
     } // end of method ByteBuffer::RangeToSegmentCollection
 
-    // method line 122
+    // method line 96
     .method private hidebysig 
            instance default void LoadWithFile (string filename)  cil managed 
     {
-        // Method begins at RVA 0x3ccc
+        // Method begins at RVA 0x409c
 	// Code size 120 (0x78)
 	.maxstack 4
 	.locals init (
@@ -4126,11 +4354,11 @@
 	IL_0077:  ret 
     } // end of method ByteBuffer::LoadWithFile
 
-    // method line 123
+    // method line 97
     .method assembly hidebysig 
            instance default void MakePrivateCopyOfUndoRedo ()  cil managed 
     {
-        // Method begins at RVA 0x3d50
+        // Method begins at RVA 0x4120
 	// Code size 501 (0x1f5)
 	.maxstack 2
 	.locals init (
@@ -4341,11 +4569,11 @@
 	IL_01f4:  ret 
     } // end of method ByteBuffer::MakePrivateCopyOfUndoRedo
 
-    // method line 124
+    // method line 98
     .method private hidebysig 
            instance default void SetupFSW ()  cil managed 
     {
-        // Method begins at RVA 0x3fa0
+        // Method begins at RVA 0x4370
 	// Code size 143 (0x8f)
 	.maxstack 3
 	IL_0000:  ldarg.0 
@@ -4392,11 +4620,11 @@
 	IL_008e:  ret 
     } // end of method ByteBuffer::SetupFSW
 
-    // method line 125
+    // method line 99
     .method private hidebysig 
            instance default void OnFileChanged (object source, class [System]System.IO.FileSystemEventArgs e)  cil managed 
     {
-        // Method begins at RVA 0x403b
+        // Method begins at RVA 0x440b
 	// Code size 7 (0x7)
 	.maxstack 8
 	IL_0000:  ldarg.0 
@@ -4404,21 +4632,21 @@
 	IL_0006:  ret 
     } // end of method ByteBuffer::OnFileChanged
 
-    // method line 126
+    // method line 100
     .method public virtual hidebysig specialname 
            instance default void set_Item (int64 index, unsigned int8 'value')  cil managed 
     {
-        // Method begins at RVA 0x4043
+        // Method begins at RVA 0x4413
 	// Code size 1 (0x1)
 	.maxstack 8
 	IL_0000:  ret 
     } // end of method ByteBuffer::set_Item
 
-    // method line 127
+    // method line 101
     .method public virtual hidebysig specialname 
            instance default unsigned int8 get_Item (int64 index)  cil managed 
     {
-        // Method begins at RVA 0x4048
+        // Method begins at RVA 0x4418
 	// Code size 150 (0x96)
 	.maxstack 4
 	.locals init (
@@ -4499,11 +4727,11 @@
 	IL_0095:  ret 
     } // end of method ByteBuffer::get_Item
 
-    // method line 128
+    // method line 102
     .method public hidebysig 
            instance default void CloseFile ()  cil managed 
     {
-        // Method begins at RVA 0x4108
+        // Method begins at RVA 0x44d8
 	// Code size 98 (0x62)
 	.maxstack 2
 	.locals init (
@@ -4555,11 +4783,11 @@
 	IL_0061:  ret 
     } // end of method ByteBuffer::CloseFile
 
-    // method line 129
+    // method line 103
     .method public virtual hidebysig specialname 
            instance default int64 get_Size ()  cil managed 
     {
-        // Method begins at RVA 0x4188
+        // Method begins at RVA 0x4558
 	// Code size 7 (0x7)
 	.maxstack 8
 	IL_0000:  ldarg.0 
@@ -4567,11 +4795,11 @@
 	IL_0006:  ret 
     } // end of method ByteBuffer::get_Size
 
-    // method line 130
+    // method line 104
     .method public hidebysig specialname 
            instance default bool get_HasFile ()  cil managed 
     {
-        // Method begins at RVA 0x4190
+        // Method begins at RVA 0x4560
 	// Code size 13 (0xd)
 	.maxstack 8
 	IL_0000:  ldarg.0 
@@ -4583,11 +4811,11 @@
 	IL_000c:  ret 
     } // end of method ByteBuffer::get_HasFile
 
-    // method line 131
+    // method line 105
     .method public hidebysig specialname 
            instance default string get_Filename ()  cil managed 
     {
-        // Method begins at RVA 0x419e
+        // Method begins at RVA 0x456e
 	// Code size 30 (0x1e)
 	.maxstack 8
 	IL_0000:  ldarg.0 
@@ -4603,11 +4831,11 @@
 	IL_001d:  ret 
     } // end of method ByteBuffer::get_Filename
 
-    // method line 132
+    // method line 106
     .method public hidebysig specialname 
            instance default bool get_HasChanged ()  cil managed 
     {
-        // Method begins at RVA 0x41c0
+        // Method begins at RVA 0x4590
 	// Code size 81 (0x51)
 	.maxstack 2
 	IL_0000:  ldarg.0 
@@ -4648,11 +4876,11 @@
 	IL_0050:  ret 
     } // end of method ByteBuffer::get_HasChanged
 
-    // method line 133
+    // method line 107
     .method public hidebysig specialname 
            instance default bool get_CanUndo ()  cil managed 
     {
-        // Method begins at RVA 0x421d
+        // Method begins at RVA 0x45ed
 	// Code size 15 (0xf)
 	.maxstack 8
 	IL_0000:  ldarg.0 
@@ -4663,11 +4891,11 @@
 	IL_000e:  ret 
     } // end of method ByteBuffer::get_CanUndo
 
-    // method line 134
+    // method line 108
     .method public hidebysig specialname 
            instance default bool get_CanRedo ()  cil managed 
     {
-        // Method begins at RVA 0x422d
+        // Method begins at RVA 0x45fd
 	// Code size 15 (0xf)
 	.maxstack 8
 	IL_0000:  ldarg.0 
@@ -4678,11 +4906,11 @@
 	IL_000e:  ret 
     } // end of method ByteBuffer::get_CanRedo
 
-    // method line 135
+    // method line 109
     .method public hidebysig specialname 
            instance default bool get_ActionChaining ()  cil managed 
     {
-        // Method begins at RVA 0x423d
+        // Method begins at RVA 0x460d
 	// Code size 7 (0x7)
 	.maxstack 8
 	IL_0000:  ldarg.0 
@@ -4690,11 +4918,11 @@
 	IL_0006:  ret 
     } // end of method ByteBuffer::get_ActionChaining
 
-    // method line 136
+    // method line 110
     .method public hidebysig specialname 
            instance default bool get_EmitEvents ()  cil managed 
     {
-        // Method begins at RVA 0x4245
+        // Method begins at RVA 0x4615
 	// Code size 7 (0x7)
 	.maxstack 8
 	IL_0000:  ldarg.0 
@@ -4702,11 +4930,11 @@
 	IL_0006:  ret 
     } // end of method ByteBuffer::get_EmitEvents
 
-    // method line 137
+    // method line 111
     .method public hidebysig specialname 
            instance default void set_EmitEvents (bool 'value')  cil managed 
     {
-        // Method begins at RVA 0x424d
+        // Method begins at RVA 0x461d
 	// Code size 8 (0x8)
 	.maxstack 8
 	IL_0000:  ldarg.0 
@@ -4715,11 +4943,11 @@
 	IL_0007:  ret 
     } // end of method ByteBuffer::set_EmitEvents
 
-    // method line 138
+    // method line 112
     .method public hidebysig specialname 
            instance default bool get_ReadAllowed ()  cil managed 
     {
-        // Method begins at RVA 0x4256
+        // Method begins at RVA 0x4626
 	// Code size 7 (0x7)
 	.maxstack 8
 	IL_0000:  ldarg.0 
@@ -4727,11 +4955,11 @@
 	IL_0006:  ret 
     } // end of method ByteBuffer::get_ReadAllowed
 
-    // method line 139
+    // method line 113
     .method public hidebysig specialname 
            instance default void set_ReadAllowed (bool 'value')  cil managed 
     {
-        // Method begins at RVA 0x425e
+        // Method begins at RVA 0x462e
 	// Code size 14 (0xe)
 	.maxstack 8
 	IL_0000:  ldarg.0 
@@ -4742,11 +4970,11 @@
 	IL_000d:  ret 
     } // end of method ByteBuffer::set_ReadAllowed
 
-    // method line 140
+    // method line 114
     .method public hidebysig specialname 
            instance default bool get_ModifyAllowed ()  cil managed 
     {
-        // Method begins at RVA 0x426d
+        // Method begins at RVA 0x463d
 	// Code size 7 (0x7)
 	.maxstack 8
 	IL_0000:  ldarg.0 
@@ -4754,11 +4982,11 @@
 	IL_0006:  ret 
     } // end of method ByteBuffer::get_ModifyAllowed
 
-    // method line 141
+    // method line 115
     .method public hidebysig specialname 
            instance default void set_ModifyAllowed (bool 'value')  cil managed 
     {
-        // Method begins at RVA 0x4275
+        // Method begins at RVA 0x4645
 	// Code size 14 (0xe)
 	.maxstack 8
 	IL_0000:  ldarg.0 
@@ -4769,11 +4997,11 @@
 	IL_000d:  ret 
     } // end of method ByteBuffer::set_ModifyAllowed
 
-    // method line 142
+    // method line 116
     .method public hidebysig specialname 
            instance default bool get_FileOperationsAllowed ()  cil managed 
     {
-        // Method begins at RVA 0x4284
+        // Method begins at RVA 0x4654
 	// Code size 7 (0x7)
 	.maxstack 8
 	IL_0000:  ldarg.0 
@@ -4781,11 +5009,11 @@
 	IL_0006:  ret 
     } // end of method ByteBuffer::get_FileOperationsAllowed
 
-    // method line 143
+    // method line 117
     .method public hidebysig specialname 
            instance default void set_FileOperationsAllowed (bool 'value')  cil managed 
     {
-        // Method begins at RVA 0x428c
+        // Method begins at RVA 0x465c
 	// Code size 14 (0xe)
 	.maxstack 8
 	IL_0000:  ldarg.0 
@@ -4796,11 +5024,11 @@
 	IL_000d:  ret 
     } // end of method ByteBuffer::set_FileOperationsAllowed
 
-    // method line 144
+    // method line 118
     .method public hidebysig specialname 
            instance default bool get_IsResizable ()  cil managed 
     {
-        // Method begins at RVA 0x429b
+        // Method begins at RVA 0x466b
 	// Code size 25 (0x19)
 	.maxstack 8
 	IL_0000:  ldarg.0 
@@ -4815,11 +5043,11 @@
 	IL_0018:  ret 
     } // end of method ByteBuffer::get_IsResizable
 
-    // method line 145
+    // method line 119
     .method public hidebysig specialname 
            instance default bool get_UseGLibIdle ()  cil managed 
     {
-        // Method begins at RVA 0x42b5
+        // Method begins at RVA 0x4685
 	// Code size 7 (0x7)
 	.maxstack 8
 	IL_0000:  ldarg.0 
@@ -4827,11 +5055,11 @@
 	IL_0006:  ret 
     } // end of method ByteBuffer::get_UseGLibIdle
 
-    // method line 146
+    // method line 120
     .method public hidebysig specialname 
            instance default void set_UseGLibIdle (bool 'value')  cil managed 
     {
-        // Method begins at RVA 0x42bd
+        // Method begins at RVA 0x468d
 	// Code size 8 (0x8)
 	.maxstack 8
 	IL_0000:  ldarg.0 
@@ -4840,11 +5068,11 @@
 	IL_0007:  ret 
     } // end of method ByteBuffer::set_UseGLibIdle
 
-    // method line 147
+    // method line 121
     .method public hidebysig specialname 
            instance default int32 get_MaxUndoActions ()  cil managed 
     {
-        // Method begins at RVA 0x42c6
+        // Method begins at RVA 0x4696
 	// Code size 7 (0x7)
 	.maxstack 8
 	IL_0000:  ldarg.0 
@@ -4852,11 +5080,11 @@
 	IL_0006:  ret 
     } // end of method ByteBuffer::get_MaxUndoActions
 
-    // method line 148
+    // method line 122
     .method public hidebysig specialname 
            instance default void set_MaxUndoActions (int32 'value')  cil managed 
     {
-        // Method begins at RVA 0x42d0
+        // Method begins at RVA 0x46a0
 	// Code size 88 (0x58)
 	.maxstack 2
 	IL_0000:  ldarg.0 
@@ -4893,11 +5121,11 @@
 	IL_0057:  ret 
     } // end of method ByteBuffer::set_MaxUndoActions
 
-    // method line 149
+    // method line 123
     .method public hidebysig specialname 
            instance default string get_TempDir ()  cil managed 
     {
-        // Method begins at RVA 0x4334
+        // Method begins at RVA 0x4704
 	// Code size 7 (0x7)
 	.maxstack 8
 	IL_0000:  ldarg.0 
@@ -4905,11 +5133,11 @@
 	IL_0006:  ret 
     } // end of method ByteBuffer::get_TempDir
 
-    // method line 150
+    // method line 124
     .method public hidebysig specialname 
            instance default void set_TempDir (string 'value')  cil managed 
     {
-        // Method begins at RVA 0x433c
+        // Method begins at RVA 0x470c
 	// Code size 34 (0x22)
 	.maxstack 8
 	IL_0000:  ldarg.0 
@@ -4926,11 +5154,11 @@
 	IL_0021:  ret 
     } // end of method ByteBuffer::set_TempDir
 
-    // method line 151
+    // method line 125
     .method public hidebysig specialname 
            instance default class [Bless.Util]Bless.Util.Range get_Range ()  cil managed 
     {
-        // Method begins at RVA 0x4360
+        // Method begins at RVA 0x4730
 	// Code size 44 (0x2c)
 	.maxstack 3
 	.locals init (
@@ -4958,11 +5186,11 @@
 	IL_002b:  ret 
     } // end of method ByteBuffer::get_Range
 
-    // method line 152
+    // method line 126
     .method assembly hidebysig 
            instance default void Display (string s)  cil managed 
     {
-        // Method begins at RVA 0x4398
+        // Method begins at RVA 0x4768
 	// Code size 23 (0x17)
 	.maxstack 8
 	IL_0000:  ldarg.1 
@@ -4974,11 +5202,11 @@
 	IL_0016:  ret 
     } // end of method ByteBuffer::Display
 
-    // method line 153
+    // method line 127
     .method private static hidebysig specialname rtspecialname 
            default void '.cctor' ()  cil managed 
     {
-        // Method begins at RVA 0x43b0
+        // Method begins at RVA 0x4780
 	// Code size 7 (0x7)
 	.maxstack 8
 	IL_0000:  ldc.i4.1 
@@ -5081,7 +5309,7 @@
   	extends [mscorlib]System.MulticastDelegate
   {
 
-    // method line 154
+    // method line 128
     .method public hidebysig specialname rtspecialname 
            instance default void '.ctor' (object 'object', native int 'method')  runtime managed 
     {
@@ -5089,7 +5317,7 @@
           // Disassembly of native methods is not supported
     } // end of method ChangedHandler::.ctor
 
-    // method line 155
+    // method line 129
     .method public virtual hidebysig newslot 
            instance default void Invoke (class Bless.Buffers.ByteBuffer bb)  runtime managed 
     {
@@ -5097,7 +5325,7 @@
           // Disassembly of native methods is not supported
     } // end of method ChangedHandler::Invoke
 
-    // method line 156
+    // method line 130
     .method public virtual hidebysig newslot 
            instance default class [mscorlib]System.IAsyncResult BeginInvoke (class Bless.Buffers.ByteBuffer bb, class [mscorlib]System.AsyncCallback callback, object 'object')  runtime managed 
     {
@@ -5105,7 +5333,7 @@
           // Disassembly of native methods is not supported
     } // end of method ChangedHandler::BeginInvoke
 
-    // method line 157
+    // method line 131
     .method public virtual hidebysig newslot 
            instance default void EndInvoke (class [mscorlib]System.IAsyncResult result)  runtime managed 
     {
@@ -5120,2028 +5348,1800 @@
 
 .namespace Bless.Buffers
 {
-  .class public auto ansi beforefieldinit SegmentCollection
-  	extends [mscorlib]System.Object
-  {
-    .field  private  class [Bless.Util]Bless.Util.List`1<class Bless.Buffers.Segment> list
-    .field  private  class [Bless.Util]Bless.Util.List`1/Node<class Bless.Buffers.Segment> cachedNode
-    .field  private  int64 cachedMapping
-
-    // method line 158
-    .method public hidebysig specialname rtspecialname 
-           instance default void '.ctor' ()  cil managed 
-    {
-        // Method begins at RVA 0x43b8
-	// Code size 18 (0x12)
-	.maxstack 8
-	IL_0000:  ldarg.0 
-	IL_0001:  call instance void object::'.ctor'()
-	IL_0006:  ldarg.0 
-	IL_0007:  newobj instance void class [Bless.Util]Bless.Util.List`1<class Bless.Buffers.Segment>::'.ctor'()
-	IL_000c:  stfld class [Bless.Util]Bless.Util.List`1<class Bless.Buffers.Segment> Bless.Buffers.SegmentCollection::list
-	IL_0011:  ret 
-    } // end of method SegmentCollection::.ctor
-
-    // method line 159
-    .method public hidebysig specialname 
-           instance default class [Bless.Util]Bless.Util.List`1<class Bless.Buffers.Segment> get_List ()  cil managed 
-    {
-        // Method begins at RVA 0x43cb
-	// Code size 7 (0x7)
-	.maxstack 8
-	IL_0000:  ldarg.0 
-	IL_0001:  ldfld class [Bless.Util]Bless.Util.List`1<class Bless.Buffers.Segment> Bless.Buffers.SegmentCollection::list
-	IL_0006:  ret 
-    } // end of method SegmentCollection::get_List
-
-    // method line 160
-    .method private hidebysig 
-           instance default void InvalidateCache ()  cil managed 
-    {
-        // Method begins at RVA 0x43d3
-	// Code size 16 (0x10)
-	.maxstack 8
-	IL_0000:  ldarg.0 
-	IL_0001:  ldnull 
-	IL_0002:  stfld class [Bless.Util]Bless.Util.List`1/Node<class Bless.Buffers.Segment> Bless.Buffers.SegmentCollection::cachedNode
-	IL_0007:  ldarg.0 
-	IL_0008:  ldc.i4.0 
-	IL_0009:  conv.i8 
-	IL_000a:  stfld int64 Bless.Buffers.SegmentCollection::cachedMapping
-	IL_000f:  ret 
-    } // end of method SegmentCollection::InvalidateCache
-
-    // method line 161
-    .method private hidebysig 
-           instance default void SetCache (class [Bless.Util]Bless.Util.List`1/Node<class Bless.Buffers.Segment> n, int64 map)  cil managed 
-    {
-        // Method begins at RVA 0x43e4
-	// Code size 15 (0xf)
-	.maxstack 8
-	IL_0000:  ldarg.0 
-	IL_0001:  ldarg.1 
-	IL_0002:  stfld class [Bless.Util]Bless.Util.List`1/Node<class Bless.Buffers.Segment> Bless.Buffers.SegmentCollection::cachedNode
-	IL_0007:  ldarg.0 
-	IL_0008:  ldarg.2 
-	IL_0009:  stfld int64 Bless.Buffers.SegmentCollection::cachedMapping
-	IL_000e:  ret 
-    } // end of method SegmentCollection::SetCache
-
-    // method line 162
-    .method public hidebysig 
-           instance default void Append (class Bless.Buffers.Segment s)  cil managed 
-    {
-        // Method begins at RVA 0x43f4
-	// Code size 100 (0x64)
-	.maxstack 3
-	.locals init (
-		class [Bless.Util]Bless.Util.List`1/Node<class Bless.Buffers.Segment>	V_0,
-		class Bless.Buffers.Segment	V_1)
-	IL_0000:  ldarg.0 
-	IL_0001:  ldfld class [Bless.Util]Bless.Util.List`1<class Bless.Buffers.Segment> Bless.Buffers.SegmentCollection::list
-	IL_0006:  callvirt instance class [Bless.Util]Bless.Util.List`1/Node<!0> class [Bless.Util]Bless.Util.List`1<class Bless.Buffers.Segment>::get_Last()
-	IL_000b:  stloc.0 
-	IL_000c:  ldloc.0 
-	IL_000d:  brfalse IL_0056
-
-	IL_0012:  ldloc.0 
-	IL_0013:  ldfld !0 class [Bless.Util]Bless.Util.List`1/Node<class Bless.Buffers.Segment>::data
-	IL_0018:  brfalse IL_0056
-
-	IL_001d:  ldloc.0 
-	IL_001e:  ldfld !0 class [Bless.Util]Bless.Util.List`1/Node<class Bless.Buffers.Segment>::data
-	IL_0023:  stloc.1 
-	IL_0024:  ldarg.1 
-	IL_0025:  callvirt instance class Bless.Buffers.IBuffer class Bless.Buffers.Segment::get_Buffer()
-	IL_002a:  ldloc.1 
-	IL_002b:  callvirt instance class Bless.Buffers.IBuffer class Bless.Buffers.Segment::get_Buffer()
-	IL_0030:  bne.un IL_0056
-
-	IL_0035:  ldarg.1 
-	IL_0036:  callvirt instance int64 class Bless.Buffers.Segment::get_Start()
-	IL_003b:  ldloc.1 
-	IL_003c:  callvirt instance int64 class Bless.Buffers.Segment::get_End()
-	IL_0041:  ldc.i4.1 
-	IL_0042:  conv.i8 
-	IL_0043:  add 
-	IL_0044:  bne.un IL_0056
-
-	IL_0049:  ldloc.1 
-	IL_004a:  ldarg.1 
-	IL_004b:  callvirt instance int64 class Bless.Buffers.Segment::get_End()
-	IL_0050:  callvirt instance void class Bless.Buffers.Segment::set_End(int64)
-	IL_0055:  ret 
-	IL_0056:  ldarg.0 
-	IL_0057:  ldfld class [Bless.Util]Bless.Util.List`1<class Bless.Buffers.Segment> Bless.Buffers.SegmentCollection::list
-	IL_005c:  ldarg.1 
-	IL_005d:  callvirt instance class [Bless.Util]Bless.Util.List`1/Node<!0> class [Bless.Util]Bless.Util.List`1<class Bless.Buffers.Segment>::Append(!0)
-	IL_0062:  pop 
-	IL_0063:  ret 
-    } // end of method SegmentCollection::Append
-
-    // method line 163
-    .method private hidebysig 
-           instance default class [Bless.Util]Bless.Util.List`1/Node<class Bless.Buffers.Segment> InsertAfter (class [Bless.Util]Bless.Util.List`1/Node<class Bless.Buffers.Segment> n, class Bless.Buffers.Segment s)  cil managed 
-    {
-        // Method begins at RVA 0x4464
-	// Code size 89 (0x59)
-	.maxstack 3
-	.locals init (
-		class Bless.Buffers.Segment	V_0)
-	IL_0000:  ldarg.1 
-	IL_0001:  brfalse IL_004b
-
-	IL_0006:  ldarg.1 
-	IL_0007:  ldfld !0 class [Bless.Util]Bless.Util.List`1/Node<class Bless.Buffers.Segment>::data
-	IL_000c:  brfalse IL_004b
-
-	IL_0011:  ldarg.1 
-	IL_0012:  ldfld !0 class [Bless.Util]Bless.Util.List`1/Node<class Bless.Buffers.Segment>::data
-	IL_0017:  stloc.0 
-	IL_0018:  ldarg.2 
-	IL_0019:  callvirt instance class Bless.Buffers.IBuffer class Bless.Buffers.Segment::get_Buffer()
-	IL_001e:  ldloc.0 
-	IL_001f:  callvirt instance class Bless.Buffers.IBuffer class Bless.Buffers.Segment::get_Buffer()
-	IL_0024:  bne.un IL_004b
-
-	IL_0029:  ldarg.2 
-	IL_002a:  callvirt instance int64 class Bless.Buffers.Segment::get_Start()
-	IL_002f:  ldloc.0 
-	IL_0030:  callvirt instance int64 class Bless.Buffers.Segment::get_End()
-	IL_0035:  ldc.i4.1 
-	IL_0036:  conv.i8 
-	IL_0037:  add 
-	IL_0038:  bne.un IL_004b
-
-	IL_003d:  ldloc.0 
-	IL_003e:  ldarg.2 
-	IL_003f:  callvirt instance int64 class Bless.Buffers.Segment::get_End()
-	IL_0044:  callvirt instance void class Bless.Buffers.Segment::set_End(int64)
-	IL_0049:  ldarg.1 
-	IL_004a:  ret 
-	IL_004b:  ldarg.0 
-	IL_004c:  ldfld class [Bless.Util]Bless.Util.List`1<class Bless.Buffers.Segment> Bless.Buffers.SegmentCollection::list
-	IL_0051:  ldarg.1 
-	IL_0052:  ldarg.2 
-	IL_0053:  callvirt instance class [Bless.Util]Bless.Util.List`1/Node<!0> class [Bless.Util]Bless.Util.List`1<class Bless.Buffers.Segment>::InsertAfter(class [Bless.Util]Bless.Util.List`1/Node<!0>, !0)
-	IL_0058:  ret 
-    } // end of method SegmentCollection::InsertAfter
-
-    // method line 164
-    .method private hidebysig 
-           instance default class [Bless.Util]Bless.Util.List`1/Node<class Bless.Buffers.Segment> InsertBefore (class [Bless.Util]Bless.Util.List`1/Node<class Bless.Buffers.Segment> n, class Bless.Buffers.Segment s)  cil managed 
-    {
-        // Method begins at RVA 0x44cc
-	// Code size 89 (0x59)
-	.maxstack 3
-	.locals init (
-		class Bless.Buffers.Segment	V_0)
-	IL_0000:  ldarg.1 
-	IL_0001:  brfalse IL_004b
-
-	IL_0006:  ldarg.1 
-	IL_0007:  ldfld !0 class [Bless.Util]Bless.Util.List`1/Node<class Bless.Buffers.Segment>::data
-	IL_000c:  brfalse IL_004b
-
-	IL_0011:  ldarg.1 
-	IL_0012:  ldfld !0 class [Bless.Util]Bless.Util.List`1/Node<class Bless.Buffers.Segment>::data
-	IL_0017:  stloc.0 
-	IL_0018:  ldarg.2 
-	IL_0019:  callvirt instance class Bless.Buffers.IBuffer class Bless.Buffers.Segment::get_Buffer()
-	IL_001e:  ldloc.0 
-	IL_001f:  callvirt instance class Bless.Buffers.IBuffer class Bless.Buffers.Segment::get_Buffer()
-	IL_0024:  bne.un IL_004b
-
-	IL_0029:  ldarg.2 
-	IL_002a:  callvirt instance int64 class Bless.Buffers.Segment::get_End()
-	IL_002f:  ldc.i4.1 
-	IL_0030:  conv.i8 
-	IL_0031:  add 
-	IL_0032:  ldloc.0 
-	IL_0033:  callvirt instance int64 class Bless.Buffers.Segment::get_Start()
-	IL_0038:  bne.un IL_004b
-
-	IL_003d:  ldloc.0 
-	IL_003e:  ldarg.2 
-	IL_003f:  callvirt instance int64 class Bless.Buffers.Segment::get_Start()
-	IL_0044:  callvirt instance void class Bless.Buffers.Segment::set_Start(int64)
-	IL_0049:  ldarg.1 
-	IL_004a:  ret 
-	IL_004b:  ldarg.0 
-	IL_004c:  ldfld class [Bless.Util]Bless.Util.List`1<class Bless.Buffers.Segment> Bless.Buffers.SegmentCollection::list
-	IL_0051:  ldarg.1 
-	IL_0052:  ldarg.2 
-	IL_0053:  callvirt instance class [Bless.Util]Bless.Util.List`1/Node<!0> class [Bless.Util]Bless.Util.List`1<class Bless.Buffers.Segment>::InsertBefore(class [Bless.Util]Bless.Util.List`1/Node<!0>, !0)
-	IL_0058:  ret 
-    } // end of method SegmentCollection::InsertBefore
+  .class private auto ansi abstract beforefieldinit ByteBufferAction
+  	extends [mscorlib]System.Object
+  {
 
-    // method line 165
-    .method public hidebysig 
-           instance default class Bless.Buffers.Segment FindSegment (int64 offset, [out] int64& OutMapping, [out] class [Bless.Util]Bless.Util.List`1/Node<class Bless.Buffers.Segment>& OutNode)  cil managed 
+    // method line 132
+    .method family hidebysig specialname rtspecialname 
+           instance default void '.ctor' ()  cil managed 
     {
-        // Method begins at RVA 0x4534
-	// Code size 258 (0x102)
-	.maxstack 3
-	.locals init (
-		class Bless.Buffers.Segment	V_0,
-		int64	V_1,
-		class [Bless.Util]Bless.Util.List`1/Node<class Bless.Buffers.Segment>	V_2)
-	IL_0000:  ldarg.2 
-	IL_0001:  ldc.i4.0 
-	IL_0002:  conv.i8 
-	IL_0003:  stind.i8 
-	IL_0004:  ldarg.3 
-	IL_0005:  ldnull 
-	IL_0006:  stind.ref 
-	IL_0007:  ldarg.0 
-	IL_0008:  ldfld class [Bless.Util]Bless.Util.List`1/Node<class Bless.Buffers.Segment> Bless.Buffers.SegmentCollection::cachedNode
-	IL_000d:  brtrue IL_0037
+        // Method begins at RVA 0x4788
+	// Code size 7 (0x7)
+	.maxstack 8
+	IL_0000:  ldarg.0 
+	IL_0001:  call instance void object::'.ctor'()
+	IL_0006:  ret 
+    } // end of method ByteBufferAction::.ctor
 
-	IL_0012:  ldarg.0 
-	IL_0013:  ldfld class [Bless.Util]Bless.Util.List`1<class Bless.Buffers.Segment> Bless.Buffers.SegmentCollection::list
-	IL_0018:  callvirt instance class [Bless.Util]Bless.Util.List`1/Node<!0> class [Bless.Util]Bless.Util.List`1<class Bless.Buffers.Segment>::get_First()
-	IL_001d:  brtrue IL_0024
+    // method line 133
+    .method public virtual hidebysig newslot abstract 
+           instance default void Do ()  cil managed 
+    {
+        // Method begins at RVA 0x0
+    } // end of method ByteBufferAction::Do
 
-	IL_0022:  ldnull 
-	IL_0023:  ret 
-	IL_0024:  ldarg.0 
-	IL_0025:  ldarg.0 
-	IL_0026:  ldfld class [Bless.Util]Bless.Util.List`1<class Bless.Buffers.Segment> Bless.Buffers.SegmentCollection::list
-	IL_002b:  callvirt instance class [Bless.Util]Bless.Util.List`1/Node<!0> class [Bless.Util]Bless.Util.List`1<class Bless.Buffers.Segment>::get_First()
-	IL_0030:  ldc.i4.0 
-	IL_0031:  conv.i8 
-	IL_0032:  call instance void class Bless.Buffers.SegmentCollection::SetCache(class [Bless.Util]Bless.Util.List`1/Node<class Bless.Buffers.Segment>, int64)
-	IL_0037:  ldarg.0 
-	IL_0038:  ldfld class [Bless.Util]Bless.Util.List`1/Node<class Bless.Buffers.Segment> Bless.Buffers.SegmentCollection::cachedNode
-	IL_003d:  ldfld !0 class [Bless.Util]Bless.Util.List`1/Node<class Bless.Buffers.Segment>::data
-	IL_0042:  stloc.0 
-	IL_0043:  ldarg.0 
-	IL_0044:  ldfld int64 Bless.Buffers.SegmentCollection::cachedMapping
-	IL_0049:  stloc.1 
-	IL_004a:  ldarg.0 
-	IL_004b:  ldfld class [Bless.Util]Bless.Util.List`1/Node<class Bless.Buffers.Segment> Bless.Buffers.SegmentCollection::cachedNode
-	IL_0050:  stloc.2 
-	IL_0051:  ldloc.0 
-	IL_0052:  ldarg.1 
-	IL_0053:  ldloc.1 
-	IL_0054:  callvirt instance bool class Bless.Buffers.Segment::Contains(int64, int64)
-	IL_0059:  brfalse IL_0066
+    // method line 134
+    .method public virtual hidebysig newslot abstract 
+           instance default void Undo ()  cil managed 
+    {
+        // Method begins at RVA 0x0
+    } // end of method ByteBufferAction::Undo
 
-	IL_005e:  ldarg.2 
-	IL_005f:  ldloc.1 
-	IL_0060:  stind.i8 
-	IL_0061:  ldarg.3 
-	IL_0062:  ldloc.2 
-	IL_0063:  stind.ref 
-	IL_0064:  ldloc.0 
-	IL_0065:  ret 
-	IL_0066:  ldarg.1 
-	IL_0067:  ldloc.1 
-	IL_0068:  bge IL_00b6
+    // method line 135
+    .method public virtual hidebysig newslot 
+           instance default void MakePrivateCopyOfData ()  cil managed 
+    {
+        // Method begins at RVA 0x4790
+	// Code size 1 (0x1)
+	.maxstack 8
+	IL_0000:  ret 
+    } // end of method ByteBufferAction::MakePrivateCopyOfData
 
-	IL_006d:  br IL_00a6
+    // method line 136
+    .method public virtual hidebysig newslot 
+           instance default int64 GetPrivateCopySize ()  cil managed 
+    {
+        // Method begins at RVA 0x4792
+	// Code size 3 (0x3)
+	.maxstack 8
+	IL_0000:  ldc.i4.0 
+	IL_0001:  conv.i8 
+	IL_0002:  ret 
+    } // end of method ByteBufferAction::GetPrivateCopySize
 
-	IL_0072:  ldloc.2 
-	IL_0073:  ldfld class [Bless.Util]Bless.Util.List`1/Node<!0> class [Bless.Util]Bless.Util.List`1/Node<class Bless.Buffers.Segment>::prev
-	IL_0078:  stloc.2 
-	IL_0079:  ldloc.2 
-	IL_007a:  ldfld !0 class [Bless.Util]Bless.Util.List`1/Node<class Bless.Buffers.Segment>::data
-	IL_007f:  stloc.0 
-	IL_0080:  ldloc.1 
-	IL_0081:  ldloc.0 
-	IL_0082:  callvirt instance int64 class Bless.Buffers.Segment::get_Size()
-	IL_0087:  sub 
-	IL_0088:  stloc.1 
-	IL_0089:  ldloc.0 
-	IL_008a:  ldarg.1 
-	IL_008b:  ldloc.1 
-	IL_008c:  callvirt instance bool class Bless.Buffers.Segment::Contains(int64, int64)
-	IL_0091:  brfalse IL_00a6
+  } // end of class Bless.Buffers.ByteBufferAction
+}
 
-	IL_0096:  ldarg.0 
-	IL_0097:  ldloc.2 
-	IL_0098:  ldloc.1 
-	IL_0099:  call instance void class Bless.Buffers.SegmentCollection::SetCache(class [Bless.Util]Bless.Util.List`1/Node<class Bless.Buffers.Segment>, int64)
-	IL_009e:  ldarg.2 
-	IL_009f:  ldloc.1 
-	IL_00a0:  stind.i8 
-	IL_00a1:  ldarg.3 
-	IL_00a2:  ldloc.2 
-	IL_00a3:  stind.ref 
-	IL_00a4:  ldloc.0 
-	IL_00a5:  ret 
-	IL_00a6:  ldloc.2 
-	IL_00a7:  ldfld class [Bless.Util]Bless.Util.List`1/Node<!0> class [Bless.Util]Bless.Util.List`1/Node<class Bless.Buffers.Segment>::prev
-	IL_00ac:  brtrue IL_0072
+.namespace Bless.Buffers
+{
+  .class private auto ansi beforefieldinit AppendAction
+  	extends Bless.Buffers.ByteBufferAction
+  {
+    .field  private  class Bless.Buffers.Segment seg
+    .field  private  class Bless.Buffers.ByteBuffer byteBuf
 
-	IL_00b1:  br IL_00fa
+    // method line 137
+    .method public hidebysig specialname rtspecialname 
+           instance default void '.ctor' (unsigned int8[] d, int64 index, int64 length, class Bless.Buffers.ByteBuffer bb)  cil managed 
+    {
+        // Method begins at RVA 0x4798
+	// Code size 79 (0x4f)
+	.maxstack 5
+	.locals init (
+		class Bless.Buffers.SimpleBuffer	V_0)
+	IL_0000:  ldarg.0 
+	IL_0001:  call instance void class Bless.Buffers.ByteBufferAction::'.ctor'()
+	IL_0006:  ldarg.0 
+	IL_0007:  ldarg.s 4
+	IL_0009:  stfld class Bless.Buffers.ByteBuffer Bless.Buffers.AppendAction::byteBuf
+	IL_000e:  ldarg.1 
+	IL_000f:  ldlen 
+	IL_0010:  conv.i4 
+	IL_0011:  brtrue IL_0022
 
-	IL_00b6:  br IL_00ef
+	IL_0016:  ldarg.0 
+	IL_0017:  ldnull 
+	IL_0018:  stfld class Bless.Buffers.Segment Bless.Buffers.AppendAction::seg
+	IL_001d:  br IL_004e
 
-	IL_00bb:  ldloc.1 
-	IL_00bc:  ldloc.0 
-	IL_00bd:  callvirt instance int64 class Bless.Buffers.Segment::get_Size()
-	IL_00c2:  add 
-	IL_00c3:  stloc.1 
-	IL_00c4:  ldloc.2 
-	IL_00c5:  ldfld class [Bless.Util]Bless.Util.List`1/Node<!0> class [Bless.Util]Bless.Util.List`1/Node<class Bless.Buffers.Segment>::next
-	IL_00ca:  stloc.2 
-	IL_00cb:  ldloc.2 
-	IL_00cc:  ldfld !0 class [Bless.Util]Bless.Util.List`1/Node<class Bless.Buffers.Segment>::data
-	IL_00d1:  stloc.0 
-	IL_00d2:  ldloc.0 
-	IL_00d3:  ldarg.1 
-	IL_00d4:  ldloc.1 
-	IL_00d5:  callvirt instance bool class Bless.Buffers.Segment::Contains(int64, int64)
-	IL_00da:  brfalse IL_00ef
+	IL_0022:  newobj instance void class Bless.Buffers.SimpleBuffer::'.ctor'()
+	IL_0027:  stloc.0 
+	IL_0028:  ldarg.0 
+	IL_0029:  ldloc.0 
+	IL_002a:  ldloc.0 
+	IL_002b:  callvirt instance int64 class Bless.Buffers.BaseBuffer::get_Size()
+	IL_0030:  ldloc.0 
+	IL_0031:  callvirt instance int64 class Bless.Buffers.BaseBuffer::get_Size()
+	IL_0036:  ldarg.3 
+	IL_0037:  add 
+	IL_0038:  ldc.i4.1 
+	IL_0039:  conv.i8 
+	IL_003a:  sub 
+	IL_003b:  newobj instance void class Bless.Buffers.Segment::'.ctor'(class Bless.Buffers.IBuffer, int64, int64)
+	IL_0040:  stfld class Bless.Buffers.Segment Bless.Buffers.AppendAction::seg
+	IL_0045:  ldloc.0 
+	IL_0046:  ldarg.1 
+	IL_0047:  ldarg.2 
+	IL_0048:  ldarg.3 
+	IL_0049:  callvirt instance void class Bless.Buffers.BaseBuffer::Append(unsigned int8[], int64, int64)
+	IL_004e:  ret 
+    } // end of method AppendAction::.ctor
 
-	IL_00df:  ldarg.0 
-	IL_00e0:  ldloc.2 
-	IL_00e1:  ldloc.1 
-	IL_00e2:  call instance void class Bless.Buffers.SegmentCollection::SetCache(class [Bless.Util]Bless.Util.List`1/Node<class Bless.Buffers.Segment>, int64)
-	IL_00e7:  ldarg.2 
-	IL_00e8:  ldloc.1 
-	IL_00e9:  stind.i8 
-	IL_00ea:  ldarg.3 
-	IL_00eb:  ldloc.2 
-	IL_00ec:  stind.ref 
-	IL_00ed:  ldloc.0 
-	IL_00ee:  ret 
-	IL_00ef:  ldloc.2 
-	IL_00f0:  ldfld class [Bless.Util]Bless.Util.List`1/Node<!0> class [Bless.Util]Bless.Util.List`1/Node<class Bless.Buffers.Segment>::next
-	IL_00f5:  brtrue IL_00bb
+    // method line 138
+    .method public virtual hidebysig 
+           instance default void Do ()  cil managed 
+    {
+        // Method begins at RVA 0x47f4
+	// Code size 96 (0x60)
+	.maxstack 4
+	IL_0000:  ldarg.0 
+	IL_0001:  ldfld class Bless.Buffers.Segment Bless.Buffers.AppendAction::seg
+	IL_0006:  brtrue IL_000c
 
-	IL_00fa:  ldarg.2 
-	IL_00fb:  ldloc.1 
-	IL_00fc:  stind.i8 
-	IL_00fd:  ldarg.3 
-	IL_00fe:  ldloc.2 
-	IL_00ff:  stind.ref 
-	IL_0100:  ldnull 
-	IL_0101:  ret 
-    } // end of method SegmentCollection::FindSegment
+	IL_000b:  ret 
+	IL_000c:  ldarg.0 
+	IL_000d:  ldfld class Bless.Buffers.ByteBuffer Bless.Buffers.AppendAction::byteBuf
+	IL_0012:  ldfld class Bless.Buffers.SegmentCollection Bless.Buffers.ByteBuffer::segCol
+	IL_0017:  ldarg.0 
+	IL_0018:  ldfld class Bless.Buffers.Segment Bless.Buffers.AppendAction::seg
+	IL_001d:  callvirt instance class Bless.Buffers.IBuffer class Bless.Buffers.Segment::get_Buffer()
+	IL_0022:  ldarg.0 
+	IL_0023:  ldfld class Bless.Buffers.Segment Bless.Buffers.AppendAction::seg
+	IL_0028:  callvirt instance int64 class Bless.Buffers.Segment::get_Start()
+	IL_002d:  ldarg.0 
+	IL_002e:  ldfld class Bless.Buffers.Segment Bless.Buffers.AppendAction::seg
+	IL_0033:  callvirt instance int64 class Bless.Buffers.Segment::get_End()
+	IL_0038:  newobj instance void class Bless.Buffers.Segment::'.ctor'(class Bless.Buffers.IBuffer, int64, int64)
+	IL_003d:  callvirt instance void class Bless.Buffers.SegmentCollection::Append(class Bless.Buffers.Segment)
+	IL_0042:  ldarg.0 
+	IL_0043:  ldfld class Bless.Buffers.ByteBuffer Bless.Buffers.AppendAction::byteBuf
+	IL_0048:  dup 
+	IL_0049:  ldfld int64 Bless.Buffers.ByteBuffer::size
+	IL_004e:  ldarg.0 
+	IL_004f:  ldfld class Bless.Buffers.Segment Bless.Buffers.AppendAction::seg
+	IL_0054:  callvirt instance int64 class Bless.Buffers.Segment::get_Size()
+	IL_0059:  add 
+	IL_005a:  stfld int64 Bless.Buffers.ByteBuffer::size
+	IL_005f:  ret 
+    } // end of method AppendAction::Do
 
-    // method line 166
-    .method public hidebysig 
-           instance default void Insert (class Bless.Buffers.SegmentCollection sc, int64 offset)  cil managed 
+    // method line 139
+    .method public virtual hidebysig 
+           instance default void Undo ()  cil managed 
     {
-        // Method begins at RVA 0x4644
-	// Code size 319 (0x13f)
+        // Method begins at RVA 0x4860
+	// Code size 96 (0x60)
 	.maxstack 4
-	.locals init (
-		int64	V_0,
-		class [Bless.Util]Bless.Util.List`1/Node<class Bless.Buffers.Segment>	V_1,
-		class Bless.Buffers.Segment	V_2,
-		class [Bless.Util]Bless.Util.List`1<class Bless.Buffers.Segment>	V_3,
-		int32	V_4,
-		class [Bless.Util]Bless.Util.List`1/Node<class Bless.Buffers.Segment>	V_5,
-		int32	V_6,
-		class [Bless.Util]Bless.Util.List`1<class Bless.Buffers.Segment>	V_7,
-		int32	V_8,
-		class [Bless.Util]Bless.Util.List`1/Node<class Bless.Buffers.Segment>	V_9,
-		int32	V_10,
-		class Bless.Buffers.Segment	V_11,
-		class [Bless.Util]Bless.Util.List`1<class Bless.Buffers.Segment>	V_12,
-		int32	V_13,
-		class [Bless.Util]Bless.Util.List`1/Node<class Bless.Buffers.Segment>	V_14,
-		int32	V_15)
 	IL_0000:  ldarg.0 
-	IL_0001:  ldarg.2 
-	IL_0002:  ldloca.s 0
-	IL_0004:  ldloca.s 1
-	IL_0006:  call instance class Bless.Buffers.Segment class Bless.Buffers.SegmentCollection::FindSegment(int64, [out] int64&, [out] class [Bless.Util]Bless.Util.List`1/Node<class Bless.Buffers.Segment>&)
-	IL_000b:  stloc.2 
-	IL_000c:  ldloc.2 
-	IL_000d:  brtrue IL_007e
-
-	IL_0012:  ldloc.1 
-	IL_0013:  brtrue IL_0020
+	IL_0001:  ldfld class Bless.Buffers.Segment Bless.Buffers.AppendAction::seg
+	IL_0006:  brtrue IL_000c
 
-	IL_0018:  ldarg.2 
-	IL_0019:  ldc.i4.0 
-	IL_001a:  conv.i8 
-	IL_001b:  beq IL_0039
+	IL_000b:  ret 
+	IL_000c:  ldarg.0 
+	IL_000d:  ldfld class Bless.Buffers.ByteBuffer Bless.Buffers.AppendAction::byteBuf
+	IL_0012:  dup 
+	IL_0013:  ldfld int64 Bless.Buffers.ByteBuffer::size
+	IL_0018:  ldarg.0 
+	IL_0019:  ldfld class Bless.Buffers.Segment Bless.Buffers.AppendAction::seg
+	IL_001e:  callvirt instance int64 class Bless.Buffers.Segment::get_Size()
+	IL_0023:  sub 
+	IL_0024:  stfld int64 Bless.Buffers.ByteBuffer::size
+	IL_0029:  ldarg.0 
+	IL_002a:  ldfld class Bless.Buffers.ByteBuffer Bless.Buffers.AppendAction::byteBuf
+	IL_002f:  ldfld class Bless.Buffers.SegmentCollection Bless.Buffers.ByteBuffer::segCol
+	IL_0034:  ldarg.0 
+	IL_0035:  ldfld class Bless.Buffers.ByteBuffer Bless.Buffers.AppendAction::byteBuf
+	IL_003a:  ldfld int64 Bless.Buffers.ByteBuffer::size
+	IL_003f:  ldarg.0 
+	IL_0040:  ldfld class Bless.Buffers.ByteBuffer Bless.Buffers.AppendAction::byteBuf
+	IL_0045:  ldfld int64 Bless.Buffers.ByteBuffer::size
+	IL_004a:  ldarg.0 
+	IL_004b:  ldfld class Bless.Buffers.Segment Bless.Buffers.AppendAction::seg
+	IL_0050:  callvirt instance int64 class Bless.Buffers.Segment::get_Size()
+	IL_0055:  add 
+	IL_0056:  ldc.i4.1 
+	IL_0057:  conv.i8 
+	IL_0058:  sub 
+	IL_0059:  callvirt instance class Bless.Buffers.SegmentCollection class Bless.Buffers.SegmentCollection::DeleteRange(int64, int64)
+	IL_005e:  pop 
+	IL_005f:  ret 
+    } // end of method AppendAction::Undo
 
-	IL_0020:  ldloc.1 
-	IL_0021:  brfalse IL_007d
+  } // end of class Bless.Buffers.AppendAction
+}
 
-	IL_0026:  ldarg.2 
-	IL_0027:  ldloc.0 
-	IL_0028:  ldloc.1 
-	IL_0029:  ldfld !0 class [Bless.Util]Bless.Util.List`1/Node<class Bless.Buffers.Segment>::data
-	IL_002e:  callvirt instance int64 class Bless.Buffers.Segment::get_Size()
-	IL_0033:  add 
-	IL_0034:  bne.un IL_007d
+.namespace Bless.Buffers
+{
+  .class private auto ansi beforefieldinit InsertAction
+  	extends Bless.Buffers.ByteBufferAction
+  {
+    .field  private  class Bless.Buffers.Segment seg
+    .field  private  int64 pos
+    .field  private  class Bless.Buffers.ByteBuffer byteBuf
 
-	IL_0039:  ldarg.1 
-	IL_003a:  callvirt instance class [Bless.Util]Bless.Util.List`1<class Bless.Buffers.Segment> class Bless.Buffers.SegmentCollection::get_List()
-	IL_003f:  stloc.3 
-	IL_0040:  ldloc.3 
-	IL_0041:  callvirt instance int32 class [Bless.Util]Bless.Util.List`1<class Bless.Buffers.Segment>::get_Count()
-	IL_0046:  stloc.s 4
-	IL_0048:  ldloc.3 
-	IL_0049:  callvirt instance class [Bless.Util]Bless.Util.List`1/Node<!0> class [Bless.Util]Bless.Util.List`1<class Bless.Buffers.Segment>::get_First()
-	IL_004e:  stloc.s 5
-	IL_0050:  ldc.i4.0 
-	IL_0051:  stloc.s 6
-	IL_0053:  br IL_0074
+    // method line 140
+    .method public hidebysig specialname rtspecialname 
+           instance default void '.ctor' (int64 p, unsigned int8[] d, int64 index, int64 length, class Bless.Buffers.ByteBuffer bb)  cil managed 
+    {
+        // Method begins at RVA 0x48cc
+	// Code size 89 (0x59)
+	.maxstack 5
+	.locals init (
+		class Bless.Buffers.SimpleBuffer	V_0)
+	IL_0000:  ldarg.0 
+	IL_0001:  call instance void class Bless.Buffers.ByteBufferAction::'.ctor'()
+	IL_0006:  ldarg.0 
+	IL_0007:  ldarg.s 5
+	IL_0009:  stfld class Bless.Buffers.ByteBuffer Bless.Buffers.InsertAction::byteBuf
+	IL_000e:  ldarg.0 
+	IL_000f:  ldarg.1 
+	IL_0010:  stfld int64 Bless.Buffers.InsertAction::pos
+	IL_0015:  ldarg.s 4
+	IL_0017:  ldc.i4.0 
+	IL_0018:  conv.i8 
+	IL_0019:  bne.un IL_002a
 
-	IL_0058:  ldarg.0 
-	IL_0059:  ldloc.s 5
-	IL_005b:  ldfld !0 class [Bless.Util]Bless.Util.List`1/Node<class Bless.Buffers.Segment>::data
-	IL_0060:  call instance void class Bless.Buffers.SegmentCollection::Append(class Bless.Buffers.Segment)
-	IL_0065:  ldloc.s 5
-	IL_0067:  ldfld class [Bless.Util]Bless.Util.List`1/Node<!0> class [Bless.Util]Bless.Util.List`1/Node<class Bless.Buffers.Segment>::next
-	IL_006c:  stloc.s 5
-	IL_006e:  ldloc.s 6
-	IL_0070:  ldc.i4.1 
-	IL_0071:  add 
-	IL_0072:  stloc.s 6
-	IL_0074:  ldloc.s 6
-	IL_0076:  ldloc.s 4
-	IL_0078:  blt IL_0058
+	IL_001e:  ldarg.0 
+	IL_001f:  ldnull 
+	IL_0020:  stfld class Bless.Buffers.Segment Bless.Buffers.InsertAction::seg
+	IL_0025:  br IL_0058
 
-	IL_007d:  ret 
-	IL_007e:  ldloc.0 
-	IL_007f:  ldarg.2 
-	IL_0080:  bne.un IL_00db
+	IL_002a:  newobj instance void class Bless.Buffers.SimpleBuffer::'.ctor'()
+	IL_002f:  stloc.0 
+	IL_0030:  ldarg.0 
+	IL_0031:  ldloc.0 
+	IL_0032:  ldloc.0 
+	IL_0033:  callvirt instance int64 class Bless.Buffers.BaseBuffer::get_Size()
+	IL_0038:  ldloc.0 
+	IL_0039:  callvirt instance int64 class Bless.Buffers.BaseBuffer::get_Size()
+	IL_003e:  ldarg.s 4
+	IL_0040:  add 
+	IL_0041:  ldc.i4.1 
+	IL_0042:  conv.i8 
+	IL_0043:  sub 
+	IL_0044:  newobj instance void class Bless.Buffers.Segment::'.ctor'(class Bless.Buffers.IBuffer, int64, int64)
+	IL_0049:  stfld class Bless.Buffers.Segment Bless.Buffers.InsertAction::seg
+	IL_004e:  ldloc.0 
+	IL_004f:  ldarg.2 
+	IL_0050:  ldarg.3 
+	IL_0051:  ldarg.s 4
+	IL_0053:  callvirt instance void class Bless.Buffers.BaseBuffer::Append(unsigned int8[], int64, int64)
+	IL_0058:  ret 
+    } // end of method InsertAction::.ctor
 
-	IL_0085:  ldarg.1 
-	IL_0086:  callvirt instance class [Bless.Util]Bless.Util.List`1<class Bless.Buffers.Segment> class Bless.Buffers.SegmentCollection::get_List()
-	IL_008b:  stloc.s 7
-	IL_008d:  ldloc.s 7
-	IL_008f:  callvirt instance int32 class [Bless.Util]Bless.Util.List`1<class Bless.Buffers.Segment>::get_Count()
-	IL_0094:  stloc.s 8
-	IL_0096:  ldloc.s 7
-	IL_0098:  callvirt instance class [Bless.Util]Bless.Util.List`1/Node<!0> class [Bless.Util]Bless.Util.List`1<class Bless.Buffers.Segment>::get_Last()
-	IL_009d:  stloc.s 9
-	IL_009f:  ldc.i4.0 
-	IL_00a0:  stloc.s 10
-	IL_00a2:  br IL_00c5
+    // method line 141
+    .method public virtual hidebysig 
+           instance default void Do ()  cil managed 
+    {
+        // Method begins at RVA 0x4934
+	// Code size 115 (0x73)
+	.maxstack 4
+	.locals init (
+		class Bless.Buffers.SegmentCollection	V_0)
+	IL_0000:  ldarg.0 
+	IL_0001:  ldfld class Bless.Buffers.Segment Bless.Buffers.InsertAction::seg
+	IL_0006:  brtrue IL_000c
 
-	IL_00a7:  ldarg.0 
-	IL_00a8:  ldloc.1 
-	IL_00a9:  ldloc.s 9
-	IL_00ab:  ldfld !0 class [Bless.Util]Bless.Util.List`1/Node<class Bless.Buffers.Segment>::data
-	IL_00b0:  call instance class [Bless.Util]Bless.Util.List`1/Node<class Bless.Buffers.Segment> class Bless.Buffers.SegmentCollection::InsertBefore(class [Bless.Util]Bless.Util.List`1/Node<class Bless.Buffers.Segment>, class Bless.Buffers.Segment)
-	IL_00b5:  stloc.1 
-	IL_00b6:  ldloc.s 9
-	IL_00b8:  ldfld class [Bless.Util]Bless.Util.List`1/Node<!0> class [Bless.Util]Bless.Util.List`1/Node<class Bless.Buffers.Segment>::prev
-	IL_00bd:  stloc.s 9
-	IL_00bf:  ldloc.s 10
-	IL_00c1:  ldc.i4.1 
-	IL_00c2:  add 
-	IL_00c3:  stloc.s 10
-	IL_00c5:  ldloc.s 10
-	IL_00c7:  ldloc.s 8
-	IL_00c9:  blt IL_00a7
+	IL_000b:  ret 
+	IL_000c:  newobj instance void class Bless.Buffers.SegmentCollection::'.ctor'()
+	IL_0011:  stloc.0 
+	IL_0012:  ldloc.0 
+	IL_0013:  ldarg.0 
+	IL_0014:  ldfld class Bless.Buffers.Segment Bless.Buffers.InsertAction::seg
+	IL_0019:  callvirt instance class Bless.Buffers.IBuffer class Bless.Buffers.Segment::get_Buffer()
+	IL_001e:  ldarg.0 
+	IL_001f:  ldfld class Bless.Buffers.Segment Bless.Buffers.InsertAction::seg
+	IL_0024:  callvirt instance int64 class Bless.Buffers.Segment::get_Start()
+	IL_0029:  ldarg.0 
+	IL_002a:  ldfld class Bless.Buffers.Segment Bless.Buffers.InsertAction::seg
+	IL_002f:  callvirt instance int64 class Bless.Buffers.Segment::get_End()
+	IL_0034:  newobj instance void class Bless.Buffers.Segment::'.ctor'(class Bless.Buffers.IBuffer, int64, int64)
+	IL_0039:  callvirt instance void class Bless.Buffers.SegmentCollection::Append(class Bless.Buffers.Segment)
+	IL_003e:  ldarg.0 
+	IL_003f:  ldfld class Bless.Buffers.ByteBuffer Bless.Buffers.InsertAction::byteBuf
+	IL_0044:  ldfld class Bless.Buffers.SegmentCollection Bless.Buffers.ByteBuffer::segCol
+	IL_0049:  ldloc.0 
+	IL_004a:  ldarg.0 
+	IL_004b:  ldfld int64 Bless.Buffers.InsertAction::pos
+	IL_0050:  callvirt instance void class Bless.Buffers.SegmentCollection::Insert(class Bless.Buffers.SegmentCollection, int64)
+	IL_0055:  ldarg.0 
+	IL_0056:  ldfld class Bless.Buffers.ByteBuffer Bless.Buffers.InsertAction::byteBuf
+	IL_005b:  dup 
+	IL_005c:  ldfld int64 Bless.Buffers.ByteBuffer::size
+	IL_0061:  ldarg.0 
+	IL_0062:  ldfld class Bless.Buffers.Segment Bless.Buffers.InsertAction::seg
+	IL_0067:  callvirt instance int64 class Bless.Buffers.Segment::get_Size()
+	IL_006c:  add 
+	IL_006d:  stfld int64 Bless.Buffers.ByteBuffer::size
+	IL_0072:  ret 
+    } // end of method InsertAction::Do
 
-	IL_00ce:  ldarg.0 
-	IL_00cf:  ldloc.1 
-	IL_00d0:  ldloc.0 
-	IL_00d1:  call instance void class Bless.Buffers.SegmentCollection::SetCache(class [Bless.Util]Bless.Util.List`1/Node<class Bless.Buffers.Segment>, int64)
-	IL_00d6:  br IL_013e
+    // method line 142
+    .method public virtual hidebysig 
+           instance default void Undo ()  cil managed 
+    {
+        // Method begins at RVA 0x49b4
+	// Code size 86 (0x56)
+	.maxstack 4
+	IL_0000:  ldarg.0 
+	IL_0001:  ldfld class Bless.Buffers.Segment Bless.Buffers.InsertAction::seg
+	IL_0006:  brtrue IL_000c
 
-	IL_00db:  ldloc.2 
-	IL_00dc:  ldarg.2 
-	IL_00dd:  ldloc.0 
-	IL_00de:  sub 
-	IL_00df:  callvirt instance class Bless.Buffers.Segment class Bless.Buffers.Segment::SplitAt(int64)
-	IL_00e4:  stloc.s 11
-	IL_00e6:  ldarg.0 
-	IL_00e7:  ldfld class [Bless.Util]Bless.Util.List`1<class Bless.Buffers.Segment> Bless.Buffers.SegmentCollection::list
-	IL_00ec:  ldloc.1 
-	IL_00ed:  ldloc.s 11
-	IL_00ef:  callvirt instance class [Bless.Util]Bless.Util.List`1/Node<!0> class [Bless.Util]Bless.Util.List`1<class Bless.Buffers.Segment>::InsertAfter(class [Bless.Util]Bless.Util.List`1/Node<!0>, !0)
-	IL_00f4:  pop 
-	IL_00f5:  ldarg.1 
-	IL_00f6:  callvirt instance class [Bless.Util]Bless.Util.List`1<class Bless.Buffers.Segment> class Bless.Buffers.SegmentCollection::get_List()
-	IL_00fb:  stloc.s 12
-	IL_00fd:  ldloc.s 12
-	IL_00ff:  callvirt instance int32 class [Bless.Util]Bless.Util.List`1<class Bless.Buffers.Segment>::get_Count()
-	IL_0104:  stloc.s 13
-	IL_0106:  ldloc.s 12
-	IL_0108:  callvirt instance class [Bless.Util]Bless.Util.List`1/Node<!0> class [Bless.Util]Bless.Util.List`1<class Bless.Buffers.Segment>::get_First()
-	IL_010d:  stloc.s 14
-	IL_010f:  ldc.i4.0 
-	IL_0110:  stloc.s 15
-	IL_0112:  br IL_0135
+	IL_000b:  ret 
+	IL_000c:  ldarg.0 
+	IL_000d:  ldfld class Bless.Buffers.ByteBuffer Bless.Buffers.InsertAction::byteBuf
+	IL_0012:  ldfld class Bless.Buffers.SegmentCollection Bless.Buffers.ByteBuffer::segCol
+	IL_0017:  ldarg.0 
+	IL_0018:  ldfld int64 Bless.Buffers.InsertAction::pos
+	IL_001d:  ldarg.0 
+	IL_001e:  ldfld int64 Bless.Buffers.InsertAction::pos
+	IL_0023:  ldarg.0 
+	IL_0024:  ldfld class Bless.Buffers.Segment Bless.Buffers.InsertAction::seg
+	IL_0029:  callvirt instance int64 class Bless.Buffers.Segment::get_Size()
+	IL_002e:  add 
+	IL_002f:  ldc.i4.1 
+	IL_0030:  conv.i8 
+	IL_0031:  sub 
+	IL_0032:  callvirt instance class Bless.Buffers.SegmentCollection class Bless.Buffers.SegmentCollection::DeleteRange(int64, int64)
+	IL_0037:  pop 
+	IL_0038:  ldarg.0 
+	IL_0039:  ldfld class Bless.Buffers.ByteBuffer Bless.Buffers.InsertAction::byteBuf
+	IL_003e:  dup 
+	IL_003f:  ldfld int64 Bless.Buffers.ByteBuffer::size
+	IL_0044:  ldarg.0 
+	IL_0045:  ldfld class Bless.Buffers.Segment Bless.Buffers.InsertAction::seg
+	IL_004a:  callvirt instance int64 class Bless.Buffers.Segment::get_Size()
+	IL_004f:  sub 
+	IL_0050:  stfld int64 Bless.Buffers.ByteBuffer::size
+	IL_0055:  ret 
+    } // end of method InsertAction::Undo
 
-	IL_0117:  ldarg.0 
-	IL_0118:  ldloc.1 
-	IL_0119:  ldloc.s 14
-	IL_011b:  ldfld !0 class [Bless.Util]Bless.Util.List`1/Node<class Bless.Buffers.Segment>::data
-	IL_0120:  call instance class [Bless.Util]Bless.Util.List`1/Node<class Bless.Buffers.Segment> class Bless.Buffers.SegmentCollection::InsertAfter(class [Bless.Util]Bless.Util.List`1/Node<class Bless.Buffers.Segment>, class Bless.Buffers.Segment)
-	IL_0125:  stloc.1 
-	IL_0126:  ldloc.s 14
-	IL_0128:  ldfld class [Bless.Util]Bless.Util.List`1/Node<!0> class [Bless.Util]Bless.Util.List`1/Node<class Bless.Buffers.Segment>::next
-	IL_012d:  stloc.s 14
-	IL_012f:  ldloc.s 15
-	IL_0131:  ldc.i4.1 
-	IL_0132:  add 
-	IL_0133:  stloc.s 15
-	IL_0135:  ldloc.s 15
-	IL_0137:  ldloc.s 13
-	IL_0139:  blt IL_0117
+  } // end of class Bless.Buffers.InsertAction
+}
 
-	IL_013e:  ret 
-    } // end of method SegmentCollection::Insert
+.namespace Bless.Buffers
+{
+  .class private auto ansi beforefieldinit DeleteAction
+  	extends Bless.Buffers.ByteBufferAction
+  {
+    .field  private  class Bless.Buffers.SegmentCollection del
+    .field  private  int64 pos1
+    .field  private  int64 pos2
+    .field  private  class Bless.Buffers.ByteBuffer byteBuf
 
-    // method line 167
-    .method public hidebysig 
-           instance default class Bless.Buffers.SegmentCollection DeleteRange (int64 pos1, int64 pos2)  cil managed 
+    // method line 143
+    .method public hidebysig specialname rtspecialname 
+           instance default void '.ctor' (int64 p1, int64 p2, class Bless.Buffers.ByteBuffer bb)  cil managed 
     {
-        // Method begins at RVA 0x4790
-	// Code size 492 (0x1ec)
-	.maxstack 4
-	.locals init (
-		int64	V_0,
-		int64	V_1,
-		class [Bless.Util]Bless.Util.List`1/Node<class Bless.Buffers.Segment>	V_2,
-		class [Bless.Util]Bless.Util.List`1/Node<class Bless.Buffers.Segment>	V_3,
-		class Bless.Buffers.Segment	V_4,
-		class Bless.Buffers.Segment	V_5,
-		bool	V_6,
-		class Bless.Buffers.Segment	V_7,
-		class Bless.Buffers.Segment	V_8,
-		class Bless.Buffers.Segment	V_9,
-		class Bless.Buffers.SegmentCollection	V_10,
-		class Bless.Buffers.Segment	V_11,
-		class [Bless.Util]Bless.Util.List`1/Node<class Bless.Buffers.Segment>	V_12,
-		class Bless.Buffers.Segment	V_13,
-		class Bless.Buffers.Segment	V_14,
-		class Bless.Buffers.SegmentCollection	V_15,
-		class [Bless.Util]Bless.Util.List`1/Node<class Bless.Buffers.Segment>	V_16)
+        // Method begins at RVA 0x4a16
+	// Code size 28 (0x1c)
+	.maxstack 8
 	IL_0000:  ldarg.0 
-	IL_0001:  ldarg.2 
-	IL_0002:  ldloca.s 1
-	IL_0004:  ldloca.s 3
-	IL_0006:  call instance class Bless.Buffers.Segment class Bless.Buffers.SegmentCollection::FindSegment(int64, [out] int64&, [out] class [Bless.Util]Bless.Util.List`1/Node<class Bless.Buffers.Segment>&)
-	IL_000b:  stloc.s 4
+	IL_0001:  call instance void class Bless.Buffers.ByteBufferAction::'.ctor'()
+	IL_0006:  ldarg.0 
+	IL_0007:  ldarg.3 
+	IL_0008:  stfld class Bless.Buffers.ByteBuffer Bless.Buffers.DeleteAction::byteBuf
 	IL_000d:  ldarg.0 
 	IL_000e:  ldarg.1 
-	IL_000f:  ldloca.s 0
-	IL_0011:  ldloca.s 2
-	IL_0013:  call instance class Bless.Buffers.Segment class Bless.Buffers.SegmentCollection::FindSegment(int64, [out] int64&, [out] class [Bless.Util]Bless.Util.List`1/Node<class Bless.Buffers.Segment>&)
-	IL_0018:  stloc.s 5
-	IL_001a:  ldloc.s 5
-	IL_001c:  brfalse IL_0028
-
-	IL_0021:  ldloc.s 4
-	IL_0023:  brtrue IL_002a
+	IL_000f:  stfld int64 Bless.Buffers.DeleteAction::pos1
+	IL_0014:  ldarg.0 
+	IL_0015:  ldarg.2 
+	IL_0016:  stfld int64 Bless.Buffers.DeleteAction::pos2
+	IL_001b:  ret 
+    } // end of method DeleteAction::.ctor
 
-	IL_0028:  ldnull 
-	IL_0029:  ret 
-	IL_002a:  ldloc.2 
-	IL_002b:  ldloc.3 
-	IL_002c:  call bool object::ReferenceEquals(object, object)
-	IL_0031:  brfalse IL_00f3
+    // method line 144
+    .method public virtual hidebysig 
+           instance default void Do ()  cil managed 
+    {
+        // Method begins at RVA 0x4a34
+	// Code size 69 (0x45)
+	.maxstack 4
+	IL_0000:  ldarg.0 
+	IL_0001:  ldarg.0 
+	IL_0002:  ldfld class Bless.Buffers.ByteBuffer Bless.Buffers.DeleteAction::byteBuf
+	IL_0007:  ldfld class Bless.Buffers.SegmentCollection Bless.Buffers.ByteBuffer::segCol
+	IL_000c:  ldarg.0 
+	IL_000d:  ldfld int64 Bless.Buffers.DeleteAction::pos1
+	IL_0012:  ldarg.0 
+	IL_0013:  ldfld int64 Bless.Buffers.DeleteAction::pos2
+	IL_0018:  callvirt instance class Bless.Buffers.SegmentCollection class Bless.Buffers.SegmentCollection::DeleteRange(int64, int64)
+	IL_001d:  stfld class Bless.Buffers.SegmentCollection Bless.Buffers.DeleteAction::del
+	IL_0022:  ldarg.0 
+	IL_0023:  ldfld class Bless.Buffers.ByteBuffer Bless.Buffers.DeleteAction::byteBuf
+	IL_0028:  dup 
+	IL_0029:  ldfld int64 Bless.Buffers.ByteBuffer::size
+	IL_002e:  ldarg.0 
+	IL_002f:  ldfld int64 Bless.Buffers.DeleteAction::pos2
+	IL_0034:  ldarg.0 
+	IL_0035:  ldfld int64 Bless.Buffers.DeleteAction::pos1
+	IL_003a:  sub 
+	IL_003b:  ldc.i4.1 
+	IL_003c:  conv.i8 
+	IL_003d:  add 
+	IL_003e:  sub 
+	IL_003f:  stfld int64 Bless.Buffers.ByteBuffer::size
+	IL_0044:  ret 
+    } // end of method DeleteAction::Do
 
-	IL_0036:  ldc.i4.0 
-	IL_0037:  stloc.s 6
-	IL_0039:  ldloc.s 5
-	IL_003b:  ldarg.1 
-	IL_003c:  ldloc.0 
-	IL_003d:  sub 
-	IL_003e:  callvirt instance class Bless.Buffers.Segment class Bless.Buffers.Segment::SplitAt(int64)
-	IL_0043:  stloc.s 7
-	IL_0045:  ldloc.s 7
-	IL_0047:  brtrue IL_0053
+    // method line 145
+    .method public virtual hidebysig 
+           instance default void Undo ()  cil managed 
+    {
+        // Method begins at RVA 0x4a85
+	// Code size 63 (0x3f)
+	.maxstack 8
+	IL_0000:  ldarg.0 
+	IL_0001:  ldfld class Bless.Buffers.ByteBuffer Bless.Buffers.DeleteAction::byteBuf
+	IL_0006:  ldfld class Bless.Buffers.SegmentCollection Bless.Buffers.ByteBuffer::segCol
+	IL_000b:  ldarg.0 
+	IL_000c:  ldfld class Bless.Buffers.SegmentCollection Bless.Buffers.DeleteAction::del
+	IL_0011:  ldarg.0 
+	IL_0012:  ldfld int64 Bless.Buffers.DeleteAction::pos1
+	IL_0017:  callvirt instance void class Bless.Buffers.SegmentCollection::Insert(class Bless.Buffers.SegmentCollection, int64)
+	IL_001c:  ldarg.0 
+	IL_001d:  ldfld class Bless.Buffers.ByteBuffer Bless.Buffers.DeleteAction::byteBuf
+	IL_0022:  dup 
+	IL_0023:  ldfld int64 Bless.Buffers.ByteBuffer::size
+	IL_0028:  ldarg.0 
+	IL_0029:  ldfld int64 Bless.Buffers.DeleteAction::pos2
+	IL_002e:  ldarg.0 
+	IL_002f:  ldfld int64 Bless.Buffers.DeleteAction::pos1
+	IL_0034:  sub 
+	IL_0035:  ldc.i4.1 
+	IL_0036:  conv.i8 
+	IL_0037:  add 
+	IL_0038:  add 
+	IL_0039:  stfld int64 Bless.Buffers.ByteBuffer::size
+	IL_003e:  ret 
+    } // end of method DeleteAction::Undo
 
-	IL_004c:  ldloc.s 5
-	IL_004e:  stloc.s 7
-	IL_0050:  ldc.i4.1 
-	IL_0051:  stloc.s 6
-	IL_0053:  ldloc.s 7
-	IL_0055:  ldarg.2 
-	IL_0056:  ldarg.1 
-	IL_0057:  sub 
-	IL_0058:  ldc.i4.1 
-	IL_0059:  conv.i8 
-	IL_005a:  add 
-	IL_005b:  callvirt instance class Bless.Buffers.Segment class Bless.Buffers.Segment::SplitAt(int64)
-	IL_0060:  stloc.s 8
-	IL_0062:  ldloc.s 8
-	IL_0064:  brfalse IL_0078
+    // method line 146
+    .method public virtual hidebysig 
+           instance default void MakePrivateCopyOfData ()  cil managed 
+    {
+        // Method begins at RVA 0x4ac8
+	// Code size 96 (0x60)
+	.maxstack 2
+	.locals init (
+		class Bless.Buffers.Segment	V_0,
+		class [mscorlib]System.Collections.Generic.IEnumerator`1<class Bless.Buffers.Segment>	V_1)
+	IL_0000:  ldarg.0 
+	IL_0001:  ldfld class Bless.Buffers.SegmentCollection Bless.Buffers.DeleteAction::del
+	IL_0006:  callvirt instance class [Bless.Util]Bless.Util.List`1<class Bless.Buffers.Segment> class Bless.Buffers.SegmentCollection::get_List()
+	IL_000b:  callvirt instance class [mscorlib]System.Collections.Generic.IEnumerator`1<!0> class [Bless.Util]Bless.Util.List`1<class Bless.Buffers.Segment>::GetEnumerator()
+	IL_0010:  stloc.1 
+	.try { // 0
+	  IL_0011:  br IL_0042
 
-	IL_0069:  ldarg.0 
-	IL_006a:  ldfld class [Bless.Util]Bless.Util.List`1<class Bless.Buffers.Segment> Bless.Buffers.SegmentCollection::list
-	IL_006f:  ldloc.2 
-	IL_0070:  ldloc.s 8
-	IL_0072:  callvirt instance class [Bless.Util]Bless.Util.List`1/Node<!0> class [Bless.Util]Bless.Util.List`1<class Bless.Buffers.Segment>::InsertAfter(class [Bless.Util]Bless.Util.List`1/Node<!0>, !0)
-	IL_0077:  pop 
-	IL_0078:  ldloc.s 6
-	IL_007a:  brfalse IL_00e0
+	  IL_0016:  ldloc.1 
+	  IL_0017:  callvirt instance !0 class [mscorlib]System.Collections.Generic.IEnumerator`1<class Bless.Buffers.Segment>::get_Current()
+	  IL_001c:  stloc.0 
+	  IL_001d:  ldloc.0 
+	  IL_001e:  callvirt instance class Bless.Buffers.IBuffer class Bless.Buffers.Segment::get_Buffer()
+	  IL_0023:  callvirt instance class [mscorlib]System.Type object::GetType()
+	  IL_0028:  ldtoken Bless.Buffers.FileBuffer
+	  IL_002d:  call class [mscorlib]System.Type class [mscorlib]System.Type::GetTypeFromHandle(valuetype [mscorlib]System.RuntimeTypeHandle)
+	  IL_0032:  call bool class [mscorlib]System.Type::op_Equality(class [mscorlib]System.Type, class [mscorlib]System.Type)
+	  IL_0037:  brfalse IL_0042
 
-	IL_007f:  ldloc.2 
-	IL_0080:  ldfld class [Bless.Util]Bless.Util.List`1/Node<!0> class [Bless.Util]Bless.Util.List`1/Node<class Bless.Buffers.Segment>::next
-	IL_0085:  brfalse IL_009c
+	  IL_003c:  ldloc.0 
+	  IL_003d:  callvirt instance void class Bless.Buffers.Segment::MakePrivateCopyOfData()
+	  IL_0042:  ldloc.1 
+	  IL_0043:  callvirt instance bool class [mscorlib]System.Collections.IEnumerator::MoveNext()
+	  IL_0048:  brtrue IL_0016
 
-	IL_008a:  ldarg.0 
-	IL_008b:  ldloc.2 
-	IL_008c:  ldfld class [Bless.Util]Bless.Util.List`1/Node<!0> class [Bless.Util]Bless.Util.List`1/Node<class Bless.Buffers.Segment>::next
-	IL_0091:  ldloc.0 
-	IL_0092:  call instance void class Bless.Buffers.SegmentCollection::SetCache(class [Bless.Util]Bless.Util.List`1/Node<class Bless.Buffers.Segment>, int64)
-	IL_0097:  br IL_00d4
+	  IL_004d:  leave IL_005f
 
-	IL_009c:  ldloc.2 
-	IL_009d:  ldfld class [Bless.Util]Bless.Util.List`1/Node<!0> class [Bless.Util]Bless.Util.List`1/Node<class Bless.Buffers.Segment>::prev
-	IL_00a2:  brfalse IL_00ce
+	} // end .try 0
+	finally  { // 0
+	  IL_0052:  ldloc.1 
+	  IL_0053:  brfalse IL_005e
 
-	IL_00a7:  ldloc.2 
-	IL_00a8:  ldfld class [Bless.Util]Bless.Util.List`1/Node<!0> class [Bless.Util]Bless.Util.List`1/Node<class Bless.Buffers.Segment>::prev
-	IL_00ad:  ldfld !0 class [Bless.Util]Bless.Util.List`1/Node<class Bless.Buffers.Segment>::data
-	IL_00b2:  stloc.s 9
-	IL_00b4:  ldarg.0 
-	IL_00b5:  ldloc.2 
-	IL_00b6:  ldfld class [Bless.Util]Bless.Util.List`1/Node<!0> class [Bless.Util]Bless.Util.List`1/Node<class Bless.Buffers.Segment>::prev
-	IL_00bb:  ldloc.0 
-	IL_00bc:  ldloc.s 9
-	IL_00be:  callvirt instance int64 class Bless.Buffers.Segment::get_Size()
-	IL_00c3:  sub 
-	IL_00c4:  call instance void class Bless.Buffers.SegmentCollection::SetCache(class [Bless.Util]Bless.Util.List`1/Node<class Bless.Buffers.Segment>, int64)
-	IL_00c9:  br IL_00d4
+	  IL_0058:  ldloc.1 
+	  IL_0059:  callvirt instance void class [mscorlib]System.IDisposable::Dispose()
+	  IL_005e:  endfinally 
+	} // end handler 0
+	IL_005f:  ret 
+    } // end of method DeleteAction::MakePrivateCopyOfData
 
-	IL_00ce:  ldarg.0 
-	IL_00cf:  call instance void class Bless.Buffers.SegmentCollection::InvalidateCache()
-	IL_00d4:  ldarg.0 
-	IL_00d5:  ldfld class [Bless.Util]Bless.Util.List`1<class Bless.Buffers.Segment> Bless.Buffers.SegmentCollection::list
-	IL_00da:  ldloc.2 
-	IL_00db:  callvirt instance void class [Bless.Util]Bless.Util.List`1<class Bless.Buffers.Segment>::Remove(class [Bless.Util]Bless.Util.List`1/Node<!0>)
-	IL_00e0:  newobj instance void class Bless.Buffers.SegmentCollection::'.ctor'()
-	IL_00e5:  stloc.s 10
-	IL_00e7:  ldloc.s 10
-	IL_00e9:  ldloc.s 7
-	IL_00eb:  callvirt instance void class Bless.Buffers.SegmentCollection::Append(class Bless.Buffers.Segment)
-	IL_00f0:  ldloc.s 10
-	IL_00f2:  ret 
-	IL_00f3:  ldloc.s 4
-	IL_00f5:  ldarg.2 
-	IL_00f6:  ldloc.1 
-	IL_00f7:  sub 
-	IL_00f8:  ldc.i4.1 
-	IL_00f9:  conv.i8 
-	IL_00fa:  add 
-	IL_00fb:  callvirt instance class Bless.Buffers.Segment class Bless.Buffers.Segment::SplitAt(int64)
-	IL_0100:  stloc.s 11
-	IL_0102:  ldloc.s 11
-	IL_0104:  brtrue IL_0112
+    // method line 147
+    .method public virtual hidebysig 
+           instance default int64 GetPrivateCopySize ()  cil managed 
+    {
+        // Method begins at RVA 0x4b44
+	// Code size 103 (0x67)
+	.maxstack 2
+	.locals init (
+		int64	V_0,
+		class Bless.Buffers.Segment	V_1,
+		class [mscorlib]System.Collections.Generic.IEnumerator`1<class Bless.Buffers.Segment>	V_2)
+	IL_0000:  ldc.i4.0 
+	IL_0001:  conv.i8 
+	IL_0002:  stloc.0 
+	IL_0003:  ldarg.0 
+	IL_0004:  ldfld class Bless.Buffers.SegmentCollection Bless.Buffers.DeleteAction::del
+	IL_0009:  callvirt instance class [Bless.Util]Bless.Util.List`1<class Bless.Buffers.Segment> class Bless.Buffers.SegmentCollection::get_List()
+	IL_000e:  callvirt instance class [mscorlib]System.Collections.Generic.IEnumerator`1<!0> class [Bless.Util]Bless.Util.List`1<class Bless.Buffers.Segment>::GetEnumerator()
+	IL_0013:  stloc.2 
+	.try { // 0
+	  IL_0014:  br IL_0048
 
-	IL_0109:  ldloc.s 4
-	IL_010b:  stloc.s 11
-	IL_010d:  br IL_0121
+	  IL_0019:  ldloc.2 
+	  IL_001a:  callvirt instance !0 class [mscorlib]System.Collections.Generic.IEnumerator`1<class Bless.Buffers.Segment>::get_Current()
+	  IL_001f:  stloc.1 
+	  IL_0020:  ldloc.1 
+	  IL_0021:  callvirt instance class Bless.Buffers.IBuffer class Bless.Buffers.Segment::get_Buffer()
+	  IL_0026:  callvirt instance class [mscorlib]System.Type object::GetType()
+	  IL_002b:  ldtoken Bless.Buffers.FileBuffer
+	  IL_0030:  call class [mscorlib]System.Type class [mscorlib]System.Type::GetTypeFromHandle(valuetype [mscorlib]System.RuntimeTypeHandle)
+	  IL_0035:  call bool class [mscorlib]System.Type::op_Equality(class [mscorlib]System.Type, class [mscorlib]System.Type)
+	  IL_003a:  brfalse IL_0048
 
-	IL_0112:  ldarg.0 
-	IL_0113:  ldfld class [Bless.Util]Bless.Util.List`1<class Bless.Buffers.Segment> Bless.Buffers.SegmentCollection::list
-	IL_0118:  ldloc.3 
-	IL_0119:  ldloc.s 11
-	IL_011b:  callvirt instance class [Bless.Util]Bless.Util.List`1/Node<!0> class [Bless.Util]Bless.Util.List`1<class Bless.Buffers.Segment>::InsertAfter(class [Bless.Util]Bless.Util.List`1/Node<!0>, !0)
-	IL_0120:  pop 
-	IL_0121:  ldloc.2 
-	IL_0122:  ldfld class [Bless.Util]Bless.Util.List`1/Node<!0> class [Bless.Util]Bless.Util.List`1/Node<class Bless.Buffers.Segment>::next
-	IL_0127:  stloc.s 12
-	IL_0129:  ldloc.s 5
-	IL_012b:  ldarg.1 
-	IL_012c:  ldloc.0 
-	IL_012d:  sub 
-	IL_012e:  callvirt instance class Bless.Buffers.Segment class Bless.Buffers.Segment::SplitAt(int64)
-	IL_0133:  stloc.s 13
-	IL_0135:  ldloc.s 13
-	IL_0137:  brtrue IL_0184
+	  IL_003f:  ldloc.0 
+	  IL_0040:  ldloc.1 
+	  IL_0041:  callvirt instance int64 class Bless.Buffers.Segment::get_Size()
+	  IL_0046:  add 
+	  IL_0047:  stloc.0 
+	  IL_0048:  ldloc.2 
+	  IL_0049:  callvirt instance bool class [mscorlib]System.Collections.IEnumerator::MoveNext()
+	  IL_004e:  brtrue IL_0019
 
-	IL_013c:  ldloc.s 5
-	IL_013e:  stloc.s 13
-	IL_0140:  ldloc.2 
-	IL_0141:  ldfld class [Bless.Util]Bless.Util.List`1/Node<!0> class [Bless.Util]Bless.Util.List`1/Node<class Bless.Buffers.Segment>::prev
-	IL_0146:  brfalse IL_0172
+	  IL_0053:  leave IL_0065
 
-	IL_014b:  ldloc.2 
-	IL_014c:  ldfld class [Bless.Util]Bless.Util.List`1/Node<!0> class [Bless.Util]Bless.Util.List`1/Node<class Bless.Buffers.Segment>::prev
-	IL_0151:  ldfld !0 class [Bless.Util]Bless.Util.List`1/Node<class Bless.Buffers.Segment>::data
-	IL_0156:  stloc.s 14
-	IL_0158:  ldarg.0 
-	IL_0159:  ldloc.2 
-	IL_015a:  ldfld class [Bless.Util]Bless.Util.List`1/Node<!0> class [Bless.Util]Bless.Util.List`1/Node<class Bless.Buffers.Segment>::prev
-	IL_015f:  ldloc.0 
-	IL_0160:  ldloc.s 14
-	IL_0162:  callvirt instance int64 class Bless.Buffers.Segment::get_Size()
-	IL_0167:  sub 
-	IL_0168:  call instance void class Bless.Buffers.SegmentCollection::SetCache(class [Bless.Util]Bless.Util.List`1/Node<class Bless.Buffers.Segment>, int64)
-	IL_016d:  br IL_0178
+	} // end .try 0
+	finally  { // 0
+	  IL_0058:  ldloc.2 
+	  IL_0059:  brfalse IL_0064
 
-	IL_0172:  ldarg.0 
-	IL_0173:  call instance void class Bless.Buffers.SegmentCollection::InvalidateCache()
-	IL_0178:  ldarg.0 
-	IL_0179:  ldfld class [Bless.Util]Bless.Util.List`1<class Bless.Buffers.Segment> Bless.Buffers.SegmentCollection::list
-	IL_017e:  ldloc.2 
-	IL_017f:  callvirt instance void class [Bless.Util]Bless.Util.List`1<class Bless.Buffers.Segment>::Remove(class [Bless.Util]Bless.Util.List`1/Node<!0>)
-	IL_0184:  newobj instance void class Bless.Buffers.SegmentCollection::'.ctor'()
-	IL_0189:  stloc.s 15
-	IL_018b:  ldloc.s 15
-	IL_018d:  ldloc.s 13
-	IL_018f:  callvirt instance void class Bless.Buffers.SegmentCollection::Append(class Bless.Buffers.Segment)
-	IL_0194:  br IL_01c1
+	  IL_005e:  ldloc.2 
+	  IL_005f:  callvirt instance void class [mscorlib]System.IDisposable::Dispose()
+	  IL_0064:  endfinally 
+	} // end handler 0
+	IL_0065:  ldloc.0 
+	IL_0066:  ret 
+    } // end of method DeleteAction::GetPrivateCopySize
 
-	IL_0199:  ldloc.s 15
-	IL_019b:  ldloc.s 12
-	IL_019d:  ldfld !0 class [Bless.Util]Bless.Util.List`1/Node<class Bless.Buffers.Segment>::data
-	IL_01a2:  callvirt instance void class Bless.Buffers.SegmentCollection::Append(class Bless.Buffers.Segment)
-	IL_01a7:  ldloc.s 12
-	IL_01a9:  stloc.s 16
-	IL_01ab:  ldloc.s 12
-	IL_01ad:  ldfld class [Bless.Util]Bless.Util.List`1/Node<!0> class [Bless.Util]Bless.Util.List`1/Node<class Bless.Buffers.Segment>::next
-	IL_01b2:  stloc.s 12
-	IL_01b4:  ldarg.0 
-	IL_01b5:  ldfld class [Bless.Util]Bless.Util.List`1<class Bless.Buffers.Segment> Bless.Buffers.SegmentCollection::list
-	IL_01ba:  ldloc.s 16
-	IL_01bc:  callvirt instance void class [Bless.Util]Bless.Util.List`1<class Bless.Buffers.Segment>::Remove(class [Bless.Util]Bless.Util.List`1/Node<!0>)
-	IL_01c1:  ldloc.s 12
-	IL_01c3:  ldloc.3 
-	IL_01c4:  call bool object::ReferenceEquals(object, object)
-	IL_01c9:  brfalse IL_0199
+  } // end of class Bless.Buffers.DeleteAction
+}
 
-	IL_01ce:  ldarg.0 
-	IL_01cf:  ldfld class [Bless.Util]Bless.Util.List`1<class Bless.Buffers.Segment> Bless.Buffers.SegmentCollection::list
-	IL_01d4:  ldloc.s 12
-	IL_01d6:  callvirt instance void class [Bless.Util]Bless.Util.List`1<class Bless.Buffers.Segment>::Remove(class [Bless.Util]Bless.Util.List`1/Node<!0>)
-	IL_01db:  ldloc.s 15
-	IL_01dd:  ldloc.s 12
-	IL_01df:  ldfld !0 class [Bless.Util]Bless.Util.List`1/Node<class Bless.Buffers.Segment>::data
-	IL_01e4:  callvirt instance void class Bless.Buffers.SegmentCollection::Append(class Bless.Buffers.Segment)
-	IL_01e9:  ldloc.s 15
-	IL_01eb:  ret 
-    } // end of method SegmentCollection::DeleteRange
+.namespace Bless.Buffers
+{
+  .class private auto ansi beforefieldinit ReplaceAction
+  	extends Bless.Buffers.ByteBufferAction
+  {
+    .field  private  class Bless.Buffers.DeleteAction del
+    .field  private  class Bless.Buffers.InsertAction ins
 
-    // method line 168
-    .method public hidebysig 
-           instance default class Bless.Buffers.SegmentCollection GetRange (int64 pos1, int64 pos2)  cil managed 
+    // method line 148
+    .method public hidebysig specialname rtspecialname 
+           instance default void '.ctor' (int64 p1, int64 p2, unsigned int8[] d, int64 index, int64 length, class Bless.Buffers.ByteBuffer bb)  cil managed 
     {
-        // Method begins at RVA 0x4988
-	// Code size 284 (0x11c)
-	.maxstack 4
-	.locals init (
-		int64	V_0,
-		int64	V_1,
-		class [Bless.Util]Bless.Util.List`1/Node<class Bless.Buffers.Segment>	V_2,
-		class [Bless.Util]Bless.Util.List`1/Node<class Bless.Buffers.Segment>	V_3,
-		class Bless.Buffers.Segment	V_4,
-		class Bless.Buffers.Segment	V_5,
-		class Bless.Buffers.SegmentCollection	V_6,
-		class Bless.Buffers.Segment	V_7,
-		class Bless.Buffers.Segment	V_8,
-		class Bless.Buffers.Segment	V_9,
-		class Bless.Buffers.SegmentCollection	V_10,
-		class [Bless.Util]Bless.Util.List`1/Node<class Bless.Buffers.Segment>	V_11)
+        // Method begins at RVA 0x4bc8
+	// Code size 41 (0x29)
+	.maxstack 8
 	IL_0000:  ldarg.0 
-	IL_0001:  ldarg.2 
-	IL_0002:  ldloca.s 1
-	IL_0004:  ldloca.s 3
-	IL_0006:  call instance class Bless.Buffers.Segment class Bless.Buffers.SegmentCollection::FindSegment(int64, [out] int64&, [out] class [Bless.Util]Bless.Util.List`1/Node<class Bless.Buffers.Segment>&)
-	IL_000b:  stloc.s 4
-	IL_000d:  ldarg.0 
-	IL_000e:  ldarg.1 
-	IL_000f:  ldloca.s 0
-	IL_0011:  ldloca.s 2
-	IL_0013:  call instance class Bless.Buffers.Segment class Bless.Buffers.SegmentCollection::FindSegment(int64, [out] int64&, [out] class [Bless.Util]Bless.Util.List`1/Node<class Bless.Buffers.Segment>&)
-	IL_0018:  stloc.s 5
-	IL_001a:  ldloc.s 5
-	IL_001c:  brfalse IL_0028
-
-	IL_0021:  ldloc.s 4
-	IL_0023:  brtrue IL_002a
+	IL_0001:  call instance void class Bless.Buffers.ByteBufferAction::'.ctor'()
+	IL_0006:  ldarg.0 
+	IL_0007:  ldarg.1 
+	IL_0008:  ldarg.2 
+	IL_0009:  ldarg.s 6
+	IL_000b:  newobj instance void class Bless.Buffers.DeleteAction::'.ctor'(int64, int64, class Bless.Buffers.ByteBuffer)
+	IL_0010:  stfld class Bless.Buffers.DeleteAction Bless.Buffers.ReplaceAction::del
+	IL_0015:  ldarg.0 
+	IL_0016:  ldarg.1 
+	IL_0017:  ldarg.3 
+	IL_0018:  ldarg.s 4
+	IL_001a:  ldarg.s 5
+	IL_001c:  ldarg.s 6
+	IL_001e:  newobj instance void class Bless.Buffers.InsertAction::'.ctor'(int64, unsigned int8[], int64, int64, class Bless.Buffers.ByteBuffer)
+	IL_0023:  stfld class Bless.Buffers.InsertAction Bless.Buffers.ReplaceAction::ins
+	IL_0028:  ret 
+    } // end of method ReplaceAction::.ctor
 
-	IL_0028:  ldnull 
-	IL_0029:  ret 
-	IL_002a:  ldloc.2 
-	IL_002b:  ldloc.3 
-	IL_002c:  call bool object::ReferenceEquals(object, object)
-	IL_0031:  brfalse IL_006d
+    // method line 149
+    .method public virtual hidebysig 
+           instance default void Do ()  cil managed 
+    {
+        // Method begins at RVA 0x4bf2
+	// Code size 23 (0x17)
+	.maxstack 8
+	IL_0000:  ldarg.0 
+	IL_0001:  ldfld class Bless.Buffers.DeleteAction Bless.Buffers.ReplaceAction::del
+	IL_0006:  callvirt instance void class Bless.Buffers.ByteBufferAction::Do()
+	IL_000b:  ldarg.0 
+	IL_000c:  ldfld class Bless.Buffers.InsertAction Bless.Buffers.ReplaceAction::ins
+	IL_0011:  callvirt instance void class Bless.Buffers.ByteBufferAction::Do()
+	IL_0016:  ret 
+    } // end of method ReplaceAction::Do
 
-	IL_0036:  newobj instance void class Bless.Buffers.SegmentCollection::'.ctor'()
-	IL_003b:  stloc.s 6
-	IL_003d:  ldloc.s 5
-	IL_003f:  callvirt instance class Bless.Buffers.IBuffer class Bless.Buffers.Segment::get_Buffer()
-	IL_0044:  ldarg.1 
-	IL_0045:  ldloc.0 
-	IL_0046:  sub 
-	IL_0047:  ldloc.s 5
-	IL_0049:  callvirt instance int64 class Bless.Buffers.Segment::get_Start()
-	IL_004e:  add 
-	IL_004f:  ldarg.2 
-	IL_0050:  ldloc.0 
-	IL_0051:  sub 
-	IL_0052:  ldloc.s 5
-	IL_0054:  callvirt instance int64 class Bless.Buffers.Segment::get_Start()
-	IL_0059:  add 
-	IL_005a:  newobj instance void class Bless.Buffers.Segment::'.ctor'(class Bless.Buffers.IBuffer, int64, int64)
-	IL_005f:  stloc.s 7
-	IL_0061:  ldloc.s 6
-	IL_0063:  ldloc.s 7
-	IL_0065:  callvirt instance void class Bless.Buffers.SegmentCollection::Append(class Bless.Buffers.Segment)
-	IL_006a:  ldloc.s 6
-	IL_006c:  ret 
-	IL_006d:  ldloc.s 4
-	IL_006f:  callvirt instance class Bless.Buffers.IBuffer class Bless.Buffers.Segment::get_Buffer()
-	IL_0074:  ldloc.s 4
-	IL_0076:  callvirt instance int64 class Bless.Buffers.Segment::get_Start()
-	IL_007b:  ldarg.2 
-	IL_007c:  ldloc.1 
-	IL_007d:  sub 
-	IL_007e:  ldloc.s 4
-	IL_0080:  callvirt instance int64 class Bless.Buffers.Segment::get_Start()
-	IL_0085:  add 
-	IL_0086:  newobj instance void class Bless.Buffers.Segment::'.ctor'(class Bless.Buffers.IBuffer, int64, int64)
-	IL_008b:  stloc.s 8
-	IL_008d:  ldloc.s 5
-	IL_008f:  callvirt instance class Bless.Buffers.IBuffer class Bless.Buffers.Segment::get_Buffer()
-	IL_0094:  ldarg.1 
-	IL_0095:  ldloc.0 
-	IL_0096:  sub 
-	IL_0097:  ldloc.s 5
-	IL_0099:  callvirt instance int64 class Bless.Buffers.Segment::get_Start()
-	IL_009e:  add 
-	IL_009f:  ldloc.s 5
-	IL_00a1:  callvirt instance int64 class Bless.Buffers.Segment::get_End()
-	IL_00a6:  newobj instance void class Bless.Buffers.Segment::'.ctor'(class Bless.Buffers.IBuffer, int64, int64)
-	IL_00ab:  stloc.s 9
-	IL_00ad:  newobj instance void class Bless.Buffers.SegmentCollection::'.ctor'()
-	IL_00b2:  stloc.s 10
-	IL_00b4:  ldloc.s 10
-	IL_00b6:  ldloc.s 9
-	IL_00b8:  callvirt instance void class Bless.Buffers.SegmentCollection::Append(class Bless.Buffers.Segment)
-	IL_00bd:  ldloc.2 
-	IL_00be:  ldfld class [Bless.Util]Bless.Util.List`1/Node<!0> class [Bless.Util]Bless.Util.List`1/Node<class Bless.Buffers.Segment>::next
-	IL_00c3:  stloc.s 11
-	IL_00c5:  br IL_0103
+    // method line 150
+    .method public virtual hidebysig 
+           instance default void Undo ()  cil managed 
+    {
+        // Method begins at RVA 0x4c0a
+	// Code size 23 (0x17)
+	.maxstack 8
+	IL_0000:  ldarg.0 
+	IL_0001:  ldfld class Bless.Buffers.InsertAction Bless.Buffers.ReplaceAction::ins
+	IL_0006:  callvirt instance void class Bless.Buffers.ByteBufferAction::Undo()
+	IL_000b:  ldarg.0 
+	IL_000c:  ldfld class Bless.Buffers.DeleteAction Bless.Buffers.ReplaceAction::del
+	IL_0011:  callvirt instance void class Bless.Buffers.ByteBufferAction::Undo()
+	IL_0016:  ret 
+    } // end of method ReplaceAction::Undo
 
-	IL_00ca:  ldloc.s 10
-	IL_00cc:  ldloc.s 11
-	IL_00ce:  ldfld !0 class [Bless.Util]Bless.Util.List`1/Node<class Bless.Buffers.Segment>::data
-	IL_00d3:  callvirt instance class Bless.Buffers.IBuffer class Bless.Buffers.Segment::get_Buffer()
-	IL_00d8:  ldloc.s 11
-	IL_00da:  ldfld !0 class [Bless.Util]Bless.Util.List`1/Node<class Bless.Buffers.Segment>::data
-	IL_00df:  callvirt instance int64 class Bless.Buffers.Segment::get_Start()
-	IL_00e4:  ldloc.s 11
-	IL_00e6:  ldfld !0 class [Bless.Util]Bless.Util.List`1/Node<class Bless.Buffers.Segment>::data
-	IL_00eb:  callvirt instance int64 class Bless.Buffers.Segment::get_End()
-	IL_00f0:  newobj instance void class Bless.Buffers.Segment::'.ctor'(class Bless.Buffers.IBuffer, int64, int64)
-	IL_00f5:  callvirt instance void class Bless.Buffers.SegmentCollection::Append(class Bless.Buffers.Segment)
-	IL_00fa:  ldloc.s 11
-	IL_00fc:  ldfld class [Bless.Util]Bless.Util.List`1/Node<!0> class [Bless.Util]Bless.Util.List`1/Node<class Bless.Buffers.Segment>::next
-	IL_0101:  stloc.s 11
-	IL_0103:  ldloc.s 11
-	IL_0105:  ldloc.3 
-	IL_0106:  call bool object::ReferenceEquals(object, object)
-	IL_010b:  brfalse IL_00ca
+    // method line 151
+    .method public virtual hidebysig 
+           instance default void MakePrivateCopyOfData ()  cil managed 
+    {
+        // Method begins at RVA 0x4c22
+	// Code size 12 (0xc)
+	.maxstack 8
+	IL_0000:  ldarg.0 
+	IL_0001:  ldfld class Bless.Buffers.DeleteAction Bless.Buffers.ReplaceAction::del
+	IL_0006:  callvirt instance void class Bless.Buffers.ByteBufferAction::MakePrivateCopyOfData()
+	IL_000b:  ret 
+    } // end of method ReplaceAction::MakePrivateCopyOfData
 
-	IL_0110:  ldloc.s 10
-	IL_0112:  ldloc.s 8
-	IL_0114:  callvirt instance void class Bless.Buffers.SegmentCollection::Append(class Bless.Buffers.Segment)
-	IL_0119:  ldloc.s 10
-	IL_011b:  ret 
-    } // end of method SegmentCollection::GetRange
+    // method line 152
+    .method public virtual hidebysig 
+           instance default int64 GetPrivateCopySize ()  cil managed 
+    {
+        // Method begins at RVA 0x4c2f
+	// Code size 12 (0xc)
+	.maxstack 8
+	IL_0000:  ldarg.0 
+	IL_0001:  ldfld class Bless.Buffers.DeleteAction Bless.Buffers.ReplaceAction::del
+	IL_0006:  callvirt instance int64 class Bless.Buffers.ByteBufferAction::GetPrivateCopySize()
+	IL_000b:  ret 
+    } // end of method ReplaceAction::GetPrivateCopySize
 
-	.property instance class [Bless.Util]Bless.Util.List`1<class Bless.Buffers.Segment> List ()
-	{
-		.get instance default class [Bless.Util]Bless.Util.List`1<class Bless.Buffers.Segment> Bless.Buffers.SegmentCollection::get_List () 
-	}
-  } // end of class Bless.Buffers.SegmentCollection
+  } // end of class Bless.Buffers.ReplaceAction
 }
 
 .namespace Bless.Buffers
 {
-  .class public auto ansi beforefieldinit SimpleBuffer
-  	extends Bless.Buffers.BaseBuffer
+  .class private auto ansi beforefieldinit MultiAction
+  	extends Bless.Buffers.ByteBufferAction
   {
-    .custom instance void class [mscorlib]System.Reflection.DefaultMemberAttribute::'.ctor'(string) =  (01 00 04 49 74 65 6D 00 00 ) // ...Item..
-
-    .field  private  unsigned int8[] data
+    .field  private  class [mscorlib]System.Collections.Generic.List`1<class Bless.Buffers.ByteBufferAction> list
 
-    // method line 169
+    // method line 153
     .method public hidebysig specialname rtspecialname 
            instance default void '.ctor' ()  cil managed 
     {
-        // Method begins at RVA 0x4ab0
-	// Code size 19 (0x13)
+        // Method begins at RVA 0x4c3c
+	// Code size 18 (0x12)
 	.maxstack 8
 	IL_0000:  ldarg.0 
-	IL_0001:  call instance void class Bless.Buffers.BaseBuffer::'.ctor'()
+	IL_0001:  call instance void class Bless.Buffers.ByteBufferAction::'.ctor'()
 	IL_0006:  ldarg.0 
-	IL_0007:  ldc.i4.0 
-	IL_0008:  newarr [mscorlib]System.Byte
-	IL_000d:  stfld unsigned int8[] Bless.Buffers.SimpleBuffer::data
-	IL_0012:  ret 
-    } // end of method SimpleBuffer::.ctor
+	IL_0007:  newobj instance void class [mscorlib]System.Collections.Generic.List`1<class Bless.Buffers.ByteBufferAction>::'.ctor'()
+	IL_000c:  stfld class [mscorlib]System.Collections.Generic.List`1<class Bless.Buffers.ByteBufferAction> Bless.Buffers.MultiAction::list
+	IL_0011:  ret 
+    } // end of method MultiAction::.ctor
 
-    // method line 170
-    .method public virtual hidebysig 
-           instance default int64 Read (unsigned int8[] ba, int64 index, int64 pos, int64 len)  cil managed 
+    // method line 154
+    .method public hidebysig 
+           instance default void Add (class Bless.Buffers.ByteBufferAction action)  cil managed 
     {
-        // Method begins at RVA 0x4ac4
-	// Code size 19 (0x13)
+        // Method begins at RVA 0x4c4f
+	// Code size 13 (0xd)
 	.maxstack 8
 	IL_0000:  ldarg.0 
-	IL_0001:  ldfld unsigned int8[] Bless.Buffers.SimpleBuffer::data
-	IL_0006:  ldarg.3 
-	IL_0007:  ldarg.1 
-	IL_0008:  ldarg.2 
-	IL_0009:  ldarg.s 4
-	IL_000b:  call void class [mscorlib]System.Array::Copy(class [mscorlib]System.Array, int64, class [mscorlib]System.Array, int64, int64)
-	IL_0010:  ldarg.s 4
-	IL_0012:  ret 
-    } // end of method SimpleBuffer::Read
+	IL_0001:  ldfld class [mscorlib]System.Collections.Generic.List`1<class Bless.Buffers.ByteBufferAction> Bless.Buffers.MultiAction::list
+	IL_0006:  ldarg.1 
+	IL_0007:  callvirt instance void class [mscorlib]System.Collections.Generic.List`1<class Bless.Buffers.ByteBufferAction>::Add(!0)
+	IL_000c:  ret 
+    } // end of method MultiAction::Add
+
+    // method line 155
+    .method public virtual hidebysig 
+           instance default void Do ()  cil managed 
+    {
+        // Method begins at RVA 0x4c60
+	// Code size 46 (0x2e)
+	.maxstack 2
+	.locals init (
+		int32	V_0)
+	IL_0000:  ldc.i4.0 
+	IL_0001:  stloc.0 
+	IL_0002:  br IL_001c
+
+	IL_0007:  ldarg.0 
+	IL_0008:  ldfld class [mscorlib]System.Collections.Generic.List`1<class Bless.Buffers.ByteBufferAction> Bless.Buffers.MultiAction::list
+	IL_000d:  ldloc.0 
+	IL_000e:  callvirt instance !0 class [mscorlib]System.Collections.Generic.List`1<class Bless.Buffers.ByteBufferAction>::get_Item(int32)
+	IL_0013:  callvirt instance void class Bless.Buffers.ByteBufferAction::Do()
+	IL_0018:  ldloc.0 
+	IL_0019:  ldc.i4.1 
+	IL_001a:  add 
+	IL_001b:  stloc.0 
+	IL_001c:  ldloc.0 
+	IL_001d:  ldarg.0 
+	IL_001e:  ldfld class [mscorlib]System.Collections.Generic.List`1<class Bless.Buffers.ByteBufferAction> Bless.Buffers.MultiAction::list
+	IL_0023:  callvirt instance int32 class [mscorlib]System.Collections.Generic.List`1<class Bless.Buffers.ByteBufferAction>::get_Count()
+	IL_0028:  blt IL_0007
+
+	IL_002d:  ret 
+    } // end of method MultiAction::Do
+
+    // method line 156
+    .method public virtual hidebysig 
+           instance default void Undo ()  cil managed 
+    {
+        // Method begins at RVA 0x4c9c
+	// Code size 48 (0x30)
+	.maxstack 2
+	.locals init (
+		int32	V_0)
+	IL_0000:  ldarg.0 
+	IL_0001:  ldfld class [mscorlib]System.Collections.Generic.List`1<class Bless.Buffers.ByteBufferAction> Bless.Buffers.MultiAction::list
+	IL_0006:  callvirt instance int32 class [mscorlib]System.Collections.Generic.List`1<class Bless.Buffers.ByteBufferAction>::get_Count()
+	IL_000b:  ldc.i4.1 
+	IL_000c:  sub 
+	IL_000d:  stloc.0 
+	IL_000e:  br IL_0028
+
+	IL_0013:  ldarg.0 
+	IL_0014:  ldfld class [mscorlib]System.Collections.Generic.List`1<class Bless.Buffers.ByteBufferAction> Bless.Buffers.MultiAction::list
+	IL_0019:  ldloc.0 
+	IL_001a:  callvirt instance !0 class [mscorlib]System.Collections.Generic.List`1<class Bless.Buffers.ByteBufferAction>::get_Item(int32)
+	IL_001f:  callvirt instance void class Bless.Buffers.ByteBufferAction::Undo()
+	IL_0024:  ldloc.0 
+	IL_0025:  ldc.i4.1 
+	IL_0026:  sub 
+	IL_0027:  stloc.0 
+	IL_0028:  ldloc.0 
+	IL_0029:  ldc.i4.0 
+	IL_002a:  bge IL_0013
+
+	IL_002f:  ret 
+    } // end of method MultiAction::Undo
 
-    // method line 171
+    // method line 157
     .method public virtual hidebysig 
-           instance default void Append (unsigned int8[] d, int64 index, int64 length)  cil managed 
+           instance default void MakePrivateCopyOfData ()  cil managed 
     {
-        // Method begins at RVA 0x4ad8
-	// Code size 118 (0x76)
-	.maxstack 5
+        // Method begins at RVA 0x4cd8
+	// Code size 63 (0x3f)
+	.maxstack 1
 	.locals init (
-		unsigned int8[]	V_0)
-	IL_0000:  ldarg.3 
-	IL_0001:  ldc.i4.0 
-	IL_0002:  conv.i8 
-	IL_0003:  bne.un IL_0009
+		class Bless.Buffers.ByteBufferAction	V_0,
+		valuetype [mscorlib]System.Collections.Generic.List`1/Enumerator<class Bless.Buffers.ByteBufferAction>	V_1)
+	IL_0000:  ldarg.0 
+	IL_0001:  ldfld class [mscorlib]System.Collections.Generic.List`1<class Bless.Buffers.ByteBufferAction> Bless.Buffers.MultiAction::list
+	IL_0006:  callvirt instance valuetype [mscorlib]System.Collections.Generic.List`1/Enumerator<!0> class [mscorlib]System.Collections.Generic.List`1<class Bless.Buffers.ByteBufferAction>::GetEnumerator()
+	IL_000b:  stloc.1 
+	.try { // 0
+	  IL_000c:  br IL_001f
 
-	IL_0008:  ret 
-	IL_0009:  ldarg.0 
-	IL_000a:  ldfld unsigned int8[] Bless.Buffers.SimpleBuffer::data
-	IL_000f:  ldlen 
-	IL_0010:  conv.i4 
-	IL_0011:  ldc.i4.0 
-	IL_0012:  ble IL_0058
+	  IL_0011:  ldloca.s 1
+	  IL_0013:  call instance !0 valuetype [mscorlib]System.Collections.Generic.List`1/Enumerator<class Bless.Buffers.ByteBufferAction>::get_Current()
+	  IL_0018:  stloc.0 
+	  IL_0019:  ldloc.0 
+	  IL_001a:  callvirt instance void class Bless.Buffers.ByteBufferAction::MakePrivateCopyOfData()
+	  IL_001f:  ldloca.s 1
+	  IL_0021:  call instance bool valuetype [mscorlib]System.Collections.Generic.List`1/Enumerator<class Bless.Buffers.ByteBufferAction>::MoveNext()
+	  IL_0026:  brtrue IL_0011
 
-	IL_0017:  ldarg.0 
-	IL_0018:  ldfld unsigned int8[] Bless.Buffers.SimpleBuffer::data
-	IL_001d:  callvirt instance int64 class [mscorlib]System.Array::get_LongLength()
-	IL_0022:  ldarg.3 
-	IL_0023:  add 
-	IL_0024:  conv.ovf.i 
-	IL_0025:  newarr [mscorlib]System.Byte
-	IL_002a:  stloc.0 
-	IL_002b:  ldarg.0 
-	IL_002c:  ldfld unsigned int8[] Bless.Buffers.SimpleBuffer::data
-	IL_0031:  ldloc.0 
-	IL_0032:  ldc.i4.0 
-	IL_0033:  callvirt instance void class [mscorlib]System.Array::CopyTo(class [mscorlib]System.Array, int32)
-	IL_0038:  ldarg.1 
-	IL_0039:  ldarg.2 
-	IL_003a:  ldloc.0 
-	IL_003b:  ldarg.0 
-	IL_003c:  ldfld unsigned int8[] Bless.Buffers.SimpleBuffer::data
-	IL_0041:  callvirt instance int64 class [mscorlib]System.Array::get_LongLength()
-	IL_0046:  ldarg.3 
-	IL_0047:  call void class [mscorlib]System.Array::Copy(class [mscorlib]System.Array, int64, class [mscorlib]System.Array, int64, int64)
-	IL_004c:  ldarg.0 
-	IL_004d:  ldloc.0 
-	IL_004e:  stfld unsigned int8[] Bless.Buffers.SimpleBuffer::data
-	IL_0053:  br IL_0075
+	  IL_002b:  leave IL_003e
 
-	IL_0058:  ldarg.0 
-	IL_0059:  ldarg.3 
-	IL_005a:  conv.ovf.i 
-	IL_005b:  newarr [mscorlib]System.Byte
-	IL_0060:  stfld unsigned int8[] Bless.Buffers.SimpleBuffer::data
-	IL_0065:  ldarg.1 
-	IL_0066:  ldarg.2 
-	IL_0067:  ldarg.0 
-	IL_0068:  ldfld unsigned int8[] Bless.Buffers.SimpleBuffer::data
-	IL_006d:  ldc.i4.0 
-	IL_006e:  conv.i8 
-	IL_006f:  ldarg.3 
-	IL_0070:  call void class [mscorlib]System.Array::Copy(class [mscorlib]System.Array, int64, class [mscorlib]System.Array, int64, int64)
-	IL_0075:  ret 
-    } // end of method SimpleBuffer::Append
+	} // end .try 0
+	finally  { // 0
+	  IL_0030:  ldloca.s 1
+	  IL_0032:  constrained. valuetype [mscorlib]System.Collections.Generic.List`1/Enumerator<class Bless.Buffers.ByteBufferAction>
+	  IL_0038:  callvirt instance void class [mscorlib]System.IDisposable::Dispose()
+	  IL_003d:  endfinally 
+	} // end handler 0
+	IL_003e:  ret 
+    } // end of method MultiAction::MakePrivateCopyOfData
 
-    // method line 172
+    // method line 158
     .method public virtual hidebysig 
-           instance default void AppendBuffer (class Bless.Buffers.IBuffer buf, int64 index, int64 length)  cil managed 
+           instance default int64 GetPrivateCopySize ()  cil managed 
     {
-        // Method begins at RVA 0x4b5c
-	// Code size 120 (0x78)
-	.maxstack 5
+        // Method begins at RVA 0x4d34
+	// Code size 70 (0x46)
+	.maxstack 2
 	.locals init (
-		unsigned int8[]	V_0)
-	IL_0000:  ldarg.3 
-	IL_0001:  ldc.i4.0 
-	IL_0002:  conv.i8 
-	IL_0003:  bne.un IL_0009
+		int64	V_0,
+		class Bless.Buffers.ByteBufferAction	V_1,
+		valuetype [mscorlib]System.Collections.Generic.List`1/Enumerator<class Bless.Buffers.ByteBufferAction>	V_2)
+	IL_0000:  ldc.i4.0 
+	IL_0001:  conv.i8 
+	IL_0002:  stloc.0 
+	IL_0003:  ldarg.0 
+	IL_0004:  ldfld class [mscorlib]System.Collections.Generic.List`1<class Bless.Buffers.ByteBufferAction> Bless.Buffers.MultiAction::list
+	IL_0009:  callvirt instance valuetype [mscorlib]System.Collections.Generic.List`1/Enumerator<!0> class [mscorlib]System.Collections.Generic.List`1<class Bless.Buffers.ByteBufferAction>::GetEnumerator()
+	IL_000e:  stloc.2 
+	.try { // 0
+	  IL_000f:  br IL_0025
 
-	IL_0008:  ret 
-	IL_0009:  ldarg.0 
-	IL_000a:  ldfld unsigned int8[] Bless.Buffers.SimpleBuffer::data
-	IL_000f:  ldlen 
-	IL_0010:  conv.i4 
-	IL_0011:  ldc.i4.0 
-	IL_0012:  ble IL_0059
+	  IL_0014:  ldloca.s 2
+	  IL_0016:  call instance !0 valuetype [mscorlib]System.Collections.Generic.List`1/Enumerator<class Bless.Buffers.ByteBufferAction>::get_Current()
+	  IL_001b:  stloc.1 
+	  IL_001c:  ldloc.0 
+	  IL_001d:  ldloc.1 
+	  IL_001e:  callvirt instance int64 class Bless.Buffers.ByteBufferAction::GetPrivateCopySize()
+	  IL_0023:  add 
+	  IL_0024:  stloc.0 
+	  IL_0025:  ldloca.s 2
+	  IL_0027:  call instance bool valuetype [mscorlib]System.Collections.Generic.List`1/Enumerator<class Bless.Buffers.ByteBufferAction>::MoveNext()
+	  IL_002c:  brtrue IL_0014
 
-	IL_0017:  ldarg.0 
-	IL_0018:  ldfld unsigned int8[] Bless.Buffers.SimpleBuffer::data
-	IL_001d:  callvirt instance int64 class [mscorlib]System.Array::get_LongLength()
-	IL_0022:  ldarg.3 
-	IL_0023:  add 
-	IL_0024:  conv.ovf.i 
-	IL_0025:  newarr [mscorlib]System.Byte
-	IL_002a:  stloc.0 
-	IL_002b:  ldarg.0 
-	IL_002c:  ldfld unsigned int8[] Bless.Buffers.SimpleBuffer::data
-	IL_0031:  ldloc.0 
-	IL_0032:  ldc.i4.0 
-	IL_0033:  callvirt instance void class [mscorlib]System.Array::CopyTo(class [mscorlib]System.Array, int32)
-	IL_0038:  ldarg.1 
-	IL_0039:  ldloc.0 
-	IL_003a:  ldarg.0 
-	IL_003b:  ldfld unsigned int8[] Bless.Buffers.SimpleBuffer::data
-	IL_0040:  callvirt instance int64 class [mscorlib]System.Array::get_LongLength()
-	IL_0045:  ldarg.2 
-	IL_0046:  ldarg.3 
-	IL_0047:  callvirt instance int64 class Bless.Buffers.IBuffer::Read(unsigned int8[], int64, int64, int64)
-	IL_004c:  pop 
-	IL_004d:  ldarg.0 
-	IL_004e:  ldloc.0 
-	IL_004f:  stfld unsigned int8[] Bless.Buffers.SimpleBuffer::data
-	IL_0054:  br IL_0077
+	  IL_0031:  leave IL_0044
 
-	IL_0059:  ldarg.0 
-	IL_005a:  ldarg.3 
-	IL_005b:  conv.ovf.i 
-	IL_005c:  newarr [mscorlib]System.Byte
-	IL_0061:  stfld unsigned int8[] Bless.Buffers.SimpleBuffer::data
-	IL_0066:  ldarg.1 
-	IL_0067:  ldarg.0 
-	IL_0068:  ldfld unsigned int8[] Bless.Buffers.SimpleBuffer::data
-	IL_006d:  ldc.i4.0 
-	IL_006e:  conv.i8 
-	IL_006f:  ldarg.2 
-	IL_0070:  ldarg.3 
-	IL_0071:  callvirt instance int64 class Bless.Buffers.IBuffer::Read(unsigned int8[], int64, int64, int64)
-	IL_0076:  pop 
-	IL_0077:  ret 
-    } // end of method SimpleBuffer::AppendBuffer
+	} // end .try 0
+	finally  { // 0
+	  IL_0036:  ldloca.s 2
+	  IL_0038:  constrained. valuetype [mscorlib]System.Collections.Generic.List`1/Enumerator<class Bless.Buffers.ByteBufferAction>
+	  IL_003e:  callvirt instance void class [mscorlib]System.IDisposable::Dispose()
+	  IL_0043:  endfinally 
+	} // end handler 0
+	IL_0044:  ldloc.0 
+	IL_0045:  ret 
+    } // end of method MultiAction::GetPrivateCopySize
 
-    // method line 173
-    .method public virtual hidebysig specialname 
-           instance default void set_Item (int64 index, unsigned int8 'value')  cil managed 
+  } // end of class Bless.Buffers.MultiAction
+}
+
+.namespace Bless.Buffers
+{
+  .class public auto ansi beforefieldinit SaveAsOperation
+  	extends [Bless.Util]Bless.Util.ThreadedAsyncOperation
+  	implements Bless.Buffers.ISaveState  {
+    .field  family  class Bless.Buffers.ByteBuffer byteBuffer
+    .field  family  int64 bytesSaved
+    .field  family  string savePath
+    .field  private  class [mscorlib]System.IO.FileStream fs
+    .field  private  valuetype Bless.Buffers.SaveAsOperation/SaveAsStage stageReached
+
+    // method line 159
+    .method public hidebysig specialname rtspecialname 
+           instance default void '.ctor' (class Bless.Buffers.ByteBuffer bb, string fn, class [Bless.Util]Bless.Util.ProgressCallback pc, class [mscorlib]System.AsyncCallback ac, bool glibIdle)  cil managed 
     {
-        // Method begins at RVA 0x4be0
-	// Code size 29 (0x1d)
+        // Method begins at RVA 0x4d98
+	// Code size 41 (0x29)
 	.maxstack 8
-	IL_0000:  ldarg.1 
-	IL_0001:  ldarg.0 
-	IL_0002:  ldfld unsigned int8[] Bless.Buffers.SimpleBuffer::data
-	IL_0007:  callvirt instance int64 class [mscorlib]System.Array::get_LongLength()
-	IL_000c:  blt IL_0012
-
-	IL_0011:  ret 
+	IL_0000:  ldarg.0 
+	IL_0001:  ldarg.3 
+	IL_0002:  ldarg.s 4
+	IL_0004:  ldarg.s 5
+	IL_0006:  call instance void class [Bless.Util]Bless.Util.ThreadedAsyncOperation::'.ctor'(class [Bless.Util]Bless.Util.ProgressCallback, class [mscorlib]System.AsyncCallback, bool)
+	IL_000b:  ldarg.0 
+	IL_000c:  ldarg.1 
+	IL_000d:  stfld class Bless.Buffers.ByteBuffer Bless.Buffers.SaveAsOperation::byteBuffer
 	IL_0012:  ldarg.0 
-	IL_0013:  ldfld unsigned int8[] Bless.Buffers.SimpleBuffer::data
-	IL_0018:  ldarg.1 
-	IL_0019:  conv.ovf.i 
-	IL_001a:  ldarg.2 
-	IL_001b:  stelem.i1 
-	IL_001c:  ret 
-    } // end of method SimpleBuffer::set_Item
+	IL_0013:  ldarg.2 
+	IL_0014:  stfld string Bless.Buffers.SaveAsOperation::savePath
+	IL_0019:  ldarg.0 
+	IL_001a:  ldnull 
+	IL_001b:  stfld class [mscorlib]System.IO.FileStream Bless.Buffers.SaveAsOperation::fs
+	IL_0020:  ldarg.0 
+	IL_0021:  ldc.i4.0 
+	IL_0022:  conv.i8 
+	IL_0023:  stfld int64 Bless.Buffers.SaveAsOperation::bytesSaved
+	IL_0028:  ret 
+    } // end of method SaveAsOperation::.ctor
+
+    // method line 160
+    .method public final virtual hidebysig newslot specialname 
+           instance default class Bless.Buffers.ByteBuffer get_Buffer ()  cil managed 
+    {
+        // Method begins at RVA 0x4dc2
+	// Code size 7 (0x7)
+	.maxstack 8
+	IL_0000:  ldarg.0 
+	IL_0001:  ldfld class Bless.Buffers.ByteBuffer Bless.Buffers.SaveAsOperation::byteBuffer
+	IL_0006:  ret 
+    } // end of method SaveAsOperation::get_Buffer
+
+    // method line 161
+    .method public final virtual hidebysig newslot specialname 
+           instance default string get_SavePath ()  cil managed 
+    {
+        // Method begins at RVA 0x4dca
+	// Code size 7 (0x7)
+	.maxstack 8
+	IL_0000:  ldarg.0 
+	IL_0001:  ldfld string Bless.Buffers.SaveAsOperation::savePath
+	IL_0006:  ret 
+    } // end of method SaveAsOperation::get_SavePath
 
-    // method line 174
-    .method public virtual hidebysig specialname 
-           instance default unsigned int8 get_Item (int64 index)  cil managed 
+    // method line 162
+    .method public hidebysig specialname 
+           instance default void set_SavePath (string 'value')  cil managed 
     {
-        // Method begins at RVA 0x4bfe
-	// Code size 29 (0x1d)
+        // Method begins at RVA 0x4dd2
+	// Code size 8 (0x8)
 	.maxstack 8
-	IL_0000:  ldarg.1 
-	IL_0001:  ldarg.0 
-	IL_0002:  ldfld unsigned int8[] Bless.Buffers.SimpleBuffer::data
-	IL_0007:  callvirt instance int64 class [mscorlib]System.Array::get_LongLength()
-	IL_000c:  blt IL_0013
+	IL_0000:  ldarg.0 
+	IL_0001:  ldarg.1 
+	IL_0002:  stfld string Bless.Buffers.SaveAsOperation::savePath
+	IL_0007:  ret 
+    } // end of method SaveAsOperation::set_SavePath
 
-	IL_0011:  ldc.i4.0 
-	IL_0012:  ret 
-	IL_0013:  ldarg.0 
-	IL_0014:  ldfld unsigned int8[] Bless.Buffers.SimpleBuffer::data
-	IL_0019:  ldarg.1 
-	IL_001a:  conv.ovf.i 
-	IL_001b:  ldelem.u1 
-	IL_001c:  ret 
-    } // end of method SimpleBuffer::get_Item
+    // method line 163
+    .method public hidebysig specialname 
+           instance default int64 get_BytesSaved ()  cil managed 
+    {
+        // Method begins at RVA 0x4ddb
+	// Code size 7 (0x7)
+	.maxstack 8
+	IL_0000:  ldarg.0 
+	IL_0001:  ldfld int64 Bless.Buffers.SaveAsOperation::bytesSaved
+	IL_0006:  ret 
+    } // end of method SaveAsOperation::get_BytesSaved
 
-    // method line 175
-    .method public virtual hidebysig specialname 
-           instance default int64 get_Size ()  cil managed 
+    // method line 164
+    .method public hidebysig specialname 
+           instance default valuetype Bless.Buffers.SaveAsOperation/SaveAsStage get_StageReached ()  cil managed 
     {
-        // Method begins at RVA 0x4c1c
-	// Code size 12 (0xc)
+        // Method begins at RVA 0x4de3
+	// Code size 7 (0x7)
 	.maxstack 8
 	IL_0000:  ldarg.0 
-	IL_0001:  ldfld unsigned int8[] Bless.Buffers.SimpleBuffer::data
-	IL_0006:  callvirt instance int64 class [mscorlib]System.Array::get_LongLength()
-	IL_000b:  ret 
-    } // end of method SimpleBuffer::get_Size
+	IL_0001:  ldfld valuetype Bless.Buffers.SaveAsOperation/SaveAsStage Bless.Buffers.SaveAsOperation::stageReached
+	IL_0006:  ret 
+    } // end of method SaveAsOperation::get_StageReached
 
-	.property instance unsigned int8 Item (int64)
-	{
-		.get instance default unsigned int8 Bless.Buffers.SimpleBuffer::get_Item (int64 index) 
-		.set instance default void Bless.Buffers.SimpleBuffer::set_Item (int64 index, unsigned int8 'value') 
-	}
-	.property instance int64 Size ()
-	{
-		.get instance default int64 Bless.Buffers.SimpleBuffer::get_Size () 
-	}
-  } // end of class Bless.Buffers.SimpleBuffer
-}
+    // method line 165
+    .method family hidebysig 
+           instance default bool CheckFreeSpace (string path, int64 extraSpace)  cil managed 
+    {
+        // Method begins at RVA 0x4dec
+	// Code size 42 (0x2a)
+	.maxstack 2
+	.locals init (
+		int64	V_0,
+		bool	V_1)
+	.try { // 0
+	  IL_0000:  ldarg.1 
+	  IL_0001:  call int64 class [Bless.Util]Portable::GetAvailableDiskSpace(string)
+	  IL_0006:  stloc.0 
+	  IL_0007:  ldloc.0 
+	  IL_0008:  ldarg.2 
+	  IL_0009:  add 
+	  IL_000a:  ldarg.0 
+	  IL_000b:  ldfld class Bless.Buffers.ByteBuffer Bless.Buffers.SaveAsOperation::byteBuffer
+	  IL_0010:  callvirt instance int64 class Bless.Buffers.BaseBuffer::get_Size()
+	  IL_0015:  clt 
+	  IL_0017:  ldc.i4.0 
+	  IL_0018:  ceq 
+	  IL_001a:  stloc.1 
+	  IL_001b:  leave IL_0028
 
-.namespace Bless.Buffers
-{
-  .class public auto ansi beforefieldinit FileBuffer
-  	extends Bless.Buffers.BaseBuffer
-  {
-    .custom instance void class [mscorlib]System.Reflection.DefaultMemberAttribute::'.ctor'(string) =  (01 00 04 49 74 65 6D 00 00 ) // ...Item..
+	} // end .try 0
+	catch class [mscorlib]System.NotImplementedException { // 0
+	  IL_0020:  pop 
+	  IL_0021:  ldc.i4.1 
+	  IL_0022:  stloc.1 
+	  IL_0023:  leave IL_0028
 
-    .field private static literal  unsigned int32 BLKGETSIZE64 = int32(0x80041272)
-    .field  private  int64 winOffset
-    .field  private  int32 winOccupied
-    .field  private  unsigned int8[] window
-    .field  private  bool isResizable
-    .field  private  class [mscorlib]System.IO.BinaryReader reader
-    .field  private  int64 FileLength
-    .field private static literal  int32 default_size = int32(0x00001000)
+	} // end handler 0
+	IL_0028:  ldloc.1 
+	IL_0029:  ret 
+    } // end of method SaveAsOperation::CheckFreeSpace
 
-    // method line 176
-    .method public hidebysig specialname rtspecialname 
-           instance default void '.ctor' (string fn)  cil managed 
+    // method line 166
+    .method family virtual hidebysig 
+           instance default bool StartProgress ()  cil managed 
     {
-        // Method begins at RVA 0x4c29
-	// Code size 13 (0xd)
+        // Method begins at RVA 0x4e34
+	// Code size 72 (0x48)
+	.maxstack 3
+	IL_0000:  ldarg.0 
+	IL_0001:  ldfld class [Bless.Util]Bless.Util.ProgressCallback [Bless.Util]Bless.Util.ThreadedAsyncOperation::progressCallback
+	IL_0006:  ldstr "Saving '{0}'"
+	IL_000b:  call string class [Mono.Posix]Mono.Unix.Catalog::GetString(string)
+	IL_0010:  ldarg.0 
+	IL_0011:  call instance string class Bless.Buffers.SaveAsOperation::get_SavePath()
+	IL_0016:  call string string::Format(string, object)
+	IL_001b:  ldc.i4.3 
+	IL_001c:  callvirt instance bool class [Bless.Util]Bless.Util.ProgressCallback::Invoke(object, valuetype [Bless.Util]Bless.Util.ProgressAction)
+	IL_0021:  pop 
+	IL_0022:  ldarg.0 
+	IL_0023:  ldfld class [Bless.Util]Bless.Util.ProgressCallback [Bless.Util]Bless.Util.ThreadedAsyncOperation::progressCallback
+	IL_0028:  ldarg.0 
+	IL_0029:  ldfld int64 Bless.Buffers.SaveAsOperation::bytesSaved
+	IL_002e:  conv.r8 
+	IL_002f:  ldarg.0 
+	IL_0030:  ldfld class Bless.Buffers.ByteBuffer Bless.Buffers.SaveAsOperation::byteBuffer
+	IL_0035:  callvirt instance int64 class Bless.Buffers.BaseBuffer::get_Size()
+	IL_003a:  conv.r8 
+	IL_003b:  div 
+	IL_003c:  box [mscorlib]System.Double
+	IL_0041:  ldc.i4.0 
+	IL_0042:  callvirt instance bool class [Bless.Util]Bless.Util.ProgressCallback::Invoke(object, valuetype [Bless.Util]Bless.Util.ProgressAction)
+	IL_0047:  ret 
+    } // end of method SaveAsOperation::StartProgress
+
+    // method line 167
+    .method family virtual hidebysig 
+           instance default bool UpdateProgress ()  cil managed 
+    {
+        // Method begins at RVA 0x4e88
+	// Code size 38 (0x26)
 	.maxstack 8
 	IL_0000:  ldarg.0 
-	IL_0001:  ldarg.1 
-	IL_0002:  ldc.i4 4096
-	IL_0007:  call instance void class Bless.Buffers.FileBuffer::'.ctor'(string, int32)
-	IL_000c:  ret 
-    } // end of method FileBuffer::.ctor
+	IL_0001:  ldfld class [Bless.Util]Bless.Util.ProgressCallback [Bless.Util]Bless.Util.ThreadedAsyncOperation::progressCallback
+	IL_0006:  ldarg.0 
+	IL_0007:  ldfld int64 Bless.Buffers.SaveAsOperation::bytesSaved
+	IL_000c:  conv.r8 
+	IL_000d:  ldarg.0 
+	IL_000e:  ldfld class Bless.Buffers.ByteBuffer Bless.Buffers.SaveAsOperation::byteBuffer
+	IL_0013:  callvirt instance int64 class Bless.Buffers.BaseBuffer::get_Size()
+	IL_0018:  conv.r8 
+	IL_0019:  div 
+	IL_001a:  box [mscorlib]System.Double
+	IL_001f:  ldc.i4.2 
+	IL_0020:  callvirt instance bool class [Bless.Util]Bless.Util.ProgressCallback::Invoke(object, valuetype [Bless.Util]Bless.Util.ProgressAction)
+	IL_0025:  ret 
+    } // end of method SaveAsOperation::UpdateProgress
+
+    // method line 168
+    .method family virtual hidebysig 
+           instance default bool EndProgress ()  cil managed 
+    {
+        // Method begins at RVA 0x4eaf
+	// Code size 38 (0x26)
+	.maxstack 8
+	IL_0000:  ldarg.0 
+	IL_0001:  ldfld class [Bless.Util]Bless.Util.ProgressCallback [Bless.Util]Bless.Util.ThreadedAsyncOperation::progressCallback
+	IL_0006:  ldarg.0 
+	IL_0007:  ldfld int64 Bless.Buffers.SaveAsOperation::bytesSaved
+	IL_000c:  conv.r8 
+	IL_000d:  ldarg.0 
+	IL_000e:  ldfld class Bless.Buffers.ByteBuffer Bless.Buffers.SaveAsOperation::byteBuffer
+	IL_0013:  callvirt instance int64 class Bless.Buffers.BaseBuffer::get_Size()
+	IL_0018:  conv.r8 
+	IL_0019:  div 
+	IL_001a:  box [mscorlib]System.Double
+	IL_001f:  ldc.i4.5 
+	IL_0020:  callvirt instance bool class [Bless.Util]Bless.Util.ProgressCallback::Invoke(object, valuetype [Bless.Util]Bless.Util.ProgressAction)
+	IL_0025:  ret 
+    } // end of method SaveAsOperation::EndProgress
+
+    // method line 169
+    .method family virtual hidebysig 
+           instance default void DoOperation ()  cil managed 
+    {
+        // Method begins at RVA 0x4ed8
+	// Code size 416 (0x1a0)
+	.maxstack 6
+	.locals init (
+		string	V_0,
+		unsigned int8[]	V_1,
+		class [Bless.Util]Bless.Util.List`1/Node<class Bless.Buffers.Segment>	V_2,
+		class Bless.Buffers.Segment	V_3,
+		int64	V_4,
+		int64	V_5,
+		int32	V_6,
+		int64	V_7)
+	IL_0000:  ldarg.0 
+	IL_0001:  ldc.i4.0 
+	IL_0002:  stfld valuetype Bless.Buffers.SaveAsOperation/SaveAsStage Bless.Buffers.SaveAsOperation::stageReached
+	IL_0007:  ldarg.0 
+	IL_0008:  ldarg.0 
+	IL_0009:  ldfld string Bless.Buffers.SaveAsOperation::savePath
+	IL_000e:  call string class [mscorlib]System.IO.Path::GetDirectoryName(string)
+	IL_0013:  ldc.i4.0 
+	IL_0014:  conv.i8 
+	IL_0015:  call instance bool class Bless.Buffers.SaveAsOperation::CheckFreeSpace(string, int64)
+	IL_001a:  brtrue IL_003c
+
+	IL_001f:  ldstr "There is not enough free space on the device to save file '{0}'."
+	IL_0024:  call string class [Mono.Posix]Mono.Unix.Catalog::GetString(string)
+	IL_0029:  ldarg.0 
+	IL_002a:  ldfld string Bless.Buffers.SaveAsOperation::savePath
+	IL_002f:  call string string::Format(string, object)
+	IL_0034:  stloc.0 
+	IL_0035:  ldloc.0 
+	IL_0036:  newobj instance void class [mscorlib]System.IO.IOException::'.ctor'(string)
+	IL_003b:  throw 
+	IL_003c:  ldarg.0 
+	IL_003d:  ldarg.0 
+	IL_003e:  ldfld string Bless.Buffers.SaveAsOperation::savePath
+	IL_0043:  ldc.i4.6 
+	IL_0044:  ldc.i4.2 
+	IL_0045:  newobj instance void class [mscorlib]System.IO.FileStream::'.ctor'(string, valuetype [mscorlib]System.IO.FileMode, valuetype [mscorlib]System.IO.FileAccess)
+	IL_004a:  stfld class [mscorlib]System.IO.FileStream Bless.Buffers.SaveAsOperation::fs
+	IL_004f:  ldarg.0 
+	IL_0050:  ldfld class [mscorlib]System.IO.FileStream Bless.Buffers.SaveAsOperation::fs
+	IL_0055:  callvirt instance void class [mscorlib]System.IO.Stream::Close()
+	IL_005a:  ldarg.0 
+	IL_005b:  ldarg.0 
+	IL_005c:  ldfld string Bless.Buffers.SaveAsOperation::savePath
+	IL_0061:  ldc.i4.2 
+	IL_0062:  ldc.i4.2 
+	IL_0063:  newobj instance void class [mscorlib]System.IO.FileStream::'.ctor'(string, valuetype [mscorlib]System.IO.FileMode, valuetype [mscorlib]System.IO.FileAccess)
+	IL_0068:  stfld class [mscorlib]System.IO.FileStream Bless.Buffers.SaveAsOperation::fs
+	IL_006d:  ldarg.0 
+	IL_006e:  ldc.i4.1 
+	IL_006f:  stfld valuetype Bless.Buffers.SaveAsOperation/SaveAsStage Bless.Buffers.SaveAsOperation::stageReached
+	IL_0074:  ldc.i4 65535
+	IL_0079:  newarr [mscorlib]System.Byte
+	IL_007e:  stloc.1 
+	IL_007f:  ldarg.0 
+	IL_0080:  ldfld class Bless.Buffers.ByteBuffer Bless.Buffers.SaveAsOperation::byteBuffer
+	IL_0085:  ldfld class Bless.Buffers.SegmentCollection Bless.Buffers.ByteBuffer::segCol
+	IL_008a:  callvirt instance class [Bless.Util]Bless.Util.List`1<class Bless.Buffers.Segment> class Bless.Buffers.SegmentCollection::get_List()
+	IL_008f:  callvirt instance class [Bless.Util]Bless.Util.List`1/Node<!0> class [Bless.Util]Bless.Util.List`1<class Bless.Buffers.Segment>::get_First()
+	IL_0094:  stloc.2 
+	IL_0095:  br IL_017c
 
-    // method line 177
-    .method public hidebysig specialname rtspecialname 
-           instance default void '.ctor' (string fn, int32 size)  cil managed 
-    {
-        // Method begins at RVA 0x4c37
-	// Code size 26 (0x1a)
-	.maxstack 8
-	IL_0000:  ldarg.0 
-	IL_0001:  call instance void class Bless.Buffers.BaseBuffer::'.ctor'()
-	IL_0006:  ldarg.0 
-	IL_0007:  ldarg.2 
-	IL_0008:  newarr [mscorlib]System.Byte
-	IL_000d:  stfld unsigned int8[] Bless.Buffers.FileBuffer::window
-	IL_0012:  ldarg.0 
-	IL_0013:  ldarg.1 
-	IL_0014:  call instance void class Bless.Buffers.FileBuffer::Load(string)
-	IL_0019:  ret 
-    } // end of method FileBuffer::.ctor
+	IL_009a:  ldloc.2 
+	IL_009b:  ldfld !0 class [Bless.Util]Bless.Util.List`1/Node<class Bless.Buffers.Segment>::data
+	IL_00a0:  stloc.3 
+	IL_00a1:  ldloc.3 
+	IL_00a2:  callvirt instance int64 class Bless.Buffers.Segment::get_Size()
+	IL_00a7:  stloc.s 4
+	IL_00a9:  ldloc.s 4
+	IL_00ab:  ldc.i4 65535
+	IL_00b0:  conv.i8 
+	IL_00b1:  div 
+	IL_00b2:  stloc.s 5
+	IL_00b4:  ldloc.s 4
+	IL_00b6:  ldc.i4 65535
+	IL_00bb:  conv.i8 
+	IL_00bc:  rem 
+	IL_00bd:  conv.i4 
+	IL_00be:  stloc.s 6
+	IL_00c0:  ldc.i4.0 
+	IL_00c1:  conv.i8 
+	IL_00c2:  stloc.s 7
+	IL_00c4:  br IL_0129
 
-    // method line 178
-    .method private static hidebysig pinvokeimpl ("libc" as "ioctl" winapi lasterr )
-           default int32 ioctl (int32 fd, unsigned int32 'request', int64& size)  cil managed preservesig 
-    {
-        // Method begins at RVA 0x0
-    } // end of method FileBuffer::ioctl
+	IL_00c9:  ldloc.3 
+	IL_00ca:  callvirt instance class Bless.Buffers.IBuffer class Bless.Buffers.Segment::get_Buffer()
+	IL_00cf:  ldloc.1 
+	IL_00d0:  ldc.i4.0 
+	IL_00d1:  conv.i8 
+	IL_00d2:  ldloc.3 
+	IL_00d3:  callvirt instance int64 class Bless.Buffers.Segment::get_Start()
+	IL_00d8:  ldloc.s 7
+	IL_00da:  ldc.i4 65535
+	IL_00df:  conv.i8 
+	IL_00e0:  mul 
+	IL_00e1:  add 
+	IL_00e2:  ldc.i4 65535
+	IL_00e7:  conv.i8 
+	IL_00e8:  callvirt instance int64 class Bless.Buffers.IBuffer::Read(unsigned int8[], int64, int64, int64)
+	IL_00ed:  pop 
+	IL_00ee:  ldarg.0 
+	IL_00ef:  ldfld class [mscorlib]System.IO.FileStream Bless.Buffers.SaveAsOperation::fs
+	IL_00f4:  ldloc.1 
+	IL_00f5:  ldc.i4.0 
+	IL_00f6:  ldc.i4 65535
+	IL_00fb:  callvirt instance void class [mscorlib]System.IO.Stream::Write(unsigned int8[], int32, int32)
+	IL_0100:  ldarg.0 
+	IL_0101:  ldloc.s 7
+	IL_0103:  ldc.i4.1 
+	IL_0104:  conv.i8 
+	IL_0105:  add 
+	IL_0106:  ldc.i4 65535
+	IL_010b:  conv.i8 
+	IL_010c:  mul 
+	IL_010d:  stfld int64 Bless.Buffers.SaveAsOperation::bytesSaved
+	IL_0112:  ldarg.0 
+	IL_0113:  ldfld bool [Bless.Util]Bless.Util.ThreadedAsyncOperation::cancelled
+	IL_0118:  brfalse IL_0122
 
-    // method line 179
-    .method private hidebysig 
-           instance default bool InWindow (int64 pos)  cil managed 
-    {
-        // Method begins at RVA 0x4c52
-	// Code size 33 (0x21)
-	.maxstack 8
-	IL_0000:  ldarg.1 
-	IL_0001:  ldarg.0 
-	IL_0002:  ldfld int64 Bless.Buffers.FileBuffer::winOffset
-	IL_0007:  blt IL_001f
+	IL_011d:  br IL_0132
 
-	IL_000c:  ldarg.1 
-	IL_000d:  ldarg.0 
-	IL_000e:  ldfld int64 Bless.Buffers.FileBuffer::winOffset
-	IL_0013:  ldarg.0 
-	IL_0014:  ldfld int32 Bless.Buffers.FileBuffer::winOccupied
-	IL_0019:  conv.i8 
-	IL_001a:  add 
-	IL_001b:  clt 
-	IL_001d:  br.s IL_0020
+	IL_0122:  ldloc.s 7
+	IL_0124:  ldc.i4.1 
+	IL_0125:  conv.i8 
+	IL_0126:  add 
+	IL_0127:  stloc.s 7
+	IL_0129:  ldloc.s 7
+	IL_012b:  ldloc.s 5
+	IL_012d:  blt IL_00c9
 
-	IL_001f:  ldc.i4.0 
-	IL_0020:  ret 
-    } // end of method FileBuffer::InWindow
+	IL_0132:  ldloc.s 6
+	IL_0134:  brfalse IL_0175
 
-    // method line 180
-    .method public virtual hidebysig 
-           instance default int64 Read (unsigned int8[] ba, int64 index, int64 pos, int64 len)  cil managed 
-    {
-        // Method begins at RVA 0x4c74
-	// Code size 91 (0x5b)
-	.maxstack 4
-	IL_0000:  ldarg.3 
-	IL_0001:  ldarg.0 
-	IL_0002:  ldfld int64 Bless.Buffers.FileBuffer::FileLength
-	IL_0007:  bge IL_0014
+	IL_0139:  ldarg.0 
+	IL_013a:  ldfld bool [Bless.Util]Bless.Util.ThreadedAsyncOperation::cancelled
+	IL_013f:  brtrue IL_0175
 
-	IL_000c:  ldarg.3 
-	IL_000d:  ldc.i4.0 
-	IL_000e:  conv.i8 
-	IL_000f:  bge IL_0017
+	IL_0144:  ldloc.3 
+	IL_0145:  callvirt instance class Bless.Buffers.IBuffer class Bless.Buffers.Segment::get_Buffer()
+	IL_014a:  ldloc.1 
+	IL_014b:  ldc.i4.0 
+	IL_014c:  conv.i8 
+	IL_014d:  ldloc.3 
+	IL_014e:  callvirt instance int64 class Bless.Buffers.Segment::get_Start()
+	IL_0153:  ldloc.s 7
+	IL_0155:  ldc.i4 65535
+	IL_015a:  conv.i8 
+	IL_015b:  mul 
+	IL_015c:  add 
+	IL_015d:  ldloc.s 6
+	IL_015f:  conv.i8 
+	IL_0160:  callvirt instance int64 class Bless.Buffers.IBuffer::Read(unsigned int8[], int64, int64, int64)
+	IL_0165:  pop 
+	IL_0166:  ldarg.0 
+	IL_0167:  ldfld class [mscorlib]System.IO.FileStream Bless.Buffers.SaveAsOperation::fs
+	IL_016c:  ldloc.1 
+	IL_016d:  ldc.i4.0 
+	IL_016e:  ldloc.s 6
+	IL_0170:  callvirt instance void class [mscorlib]System.IO.Stream::Write(unsigned int8[], int32, int32)
+	IL_0175:  ldloc.2 
+	IL_0176:  ldfld class [Bless.Util]Bless.Util.List`1/Node<!0> class [Bless.Util]Bless.Util.List`1/Node<class Bless.Buffers.Segment>::next
+	IL_017b:  stloc.2 
+	IL_017c:  ldloc.2 
+	IL_017d:  brfalse IL_018d
 
-	IL_0014:  ldc.i4.0 
-	IL_0015:  conv.i8 
-	IL_0016:  ret 
-	IL_0017:  ldarg.3 
-	IL_0018:  ldarg.s 4
-	IL_001a:  add 
-	IL_001b:  ldarg.0 
-	IL_001c:  ldfld int64 Bless.Buffers.FileBuffer::FileLength
-	IL_0021:  ble IL_0033
+	IL_0182:  ldarg.0 
+	IL_0183:  ldfld bool [Bless.Util]Bless.Util.ThreadedAsyncOperation::cancelled
+	IL_0188:  brfalse IL_009a
 
-	IL_0026:  ldarg.0 
-	IL_0027:  ldfld int64 Bless.Buffers.FileBuffer::FileLength
-	IL_002c:  ldarg.3 
-	IL_002d:  sub 
-	IL_002e:  ldc.i4.1 
-	IL_002f:  conv.i8 
-	IL_0030:  add 
-	IL_0031:  starg.s 4
-	IL_0033:  ldarg.0 
-	IL_0034:  ldfld class [mscorlib]System.IO.BinaryReader Bless.Buffers.FileBuffer::reader
-	IL_0039:  callvirt instance class [mscorlib]System.IO.Stream class [mscorlib]System.IO.BinaryReader::get_BaseStream()
-	IL_003e:  ldarg.3 
-	IL_003f:  ldc.i4.0 
-	IL_0040:  callvirt instance int64 class [mscorlib]System.IO.Stream::Seek(int64, valuetype [mscorlib]System.IO.SeekOrigin)
-	IL_0045:  pop 
-	IL_0046:  ldarg.0 
-	IL_0047:  ldfld class [mscorlib]System.IO.BinaryReader Bless.Buffers.FileBuffer::reader
-	IL_004c:  ldarg.1 
-	IL_004d:  ldarg.2 
-	IL_004e:  conv.i4 
-	IL_004f:  ldarg.s 4
-	IL_0051:  conv.i4 
-	IL_0052:  callvirt instance int32 class [mscorlib]System.IO.BinaryReader::Read(unsigned int8[], int32, int32)
-	IL_0057:  pop 
-	IL_0058:  ldarg.s 4
-	IL_005a:  ret 
-    } // end of method FileBuffer::Read
+	IL_018d:  ldarg.0 
+	IL_018e:  ldfld class [mscorlib]System.IO.FileStream Bless.Buffers.SaveAsOperation::fs
+	IL_0193:  callvirt instance void class [mscorlib]System.IO.Stream::Close()
+	IL_0198:  ldarg.0 
+	IL_0199:  ldnull 
+	IL_019a:  stfld class [mscorlib]System.IO.FileStream Bless.Buffers.SaveAsOperation::fs
+	IL_019f:  ret 
+    } // end of method SaveAsOperation::DoOperation
 
-    // method line 181
-    .method public virtual hidebysig specialname 
-           instance default void set_Item (int64 index, unsigned int8 'value')  cil managed 
+    // method line 170
+    .method family virtual hidebysig 
+           instance default void EndOperation ()  cil managed 
     {
-        // Method begins at RVA 0x4cdb
-	// Code size 1 (0x1)
+        // Method begins at RVA 0x5084
+	// Code size 30 (0x1e)
 	.maxstack 8
-	IL_0000:  ret 
-    } // end of method FileBuffer::set_Item
-
-    // method line 182
-    .method public virtual hidebysig specialname 
-           instance default unsigned int8 get_Item (int64 index)  cil managed 
-    {
-        // Method begins at RVA 0x4ce0
-	// Code size 143 (0x8f)
-	.maxstack 5
 	IL_0000:  ldarg.0 
-	IL_0001:  ldarg.1 
-	IL_0002:  call instance bool class Bless.Buffers.FileBuffer::InWindow(int64)
-	IL_0007:  brtrue IL_007e
-
-	IL_000c:  ldarg.1 
-	IL_000d:  ldarg.0 
-	IL_000e:  ldfld int64 Bless.Buffers.FileBuffer::FileLength
-	IL_0013:  blt IL_001e
-
-	IL_0018:  newobj instance void class [mscorlib]System.IndexOutOfRangeException::'.ctor'()
-	IL_001d:  throw 
-	IL_001e:  ldarg.0 
-	IL_001f:  ldarg.1 
-	IL_0020:  ldarg.0 
-	IL_0021:  ldfld unsigned int8[] Bless.Buffers.FileBuffer::window
-	IL_0026:  ldlen 
-	IL_0027:  conv.i4 
-	IL_0028:  ldc.i4.2 
-	IL_0029:  div 
-	IL_002a:  conv.i8 
-	IL_002b:  sub 
-	IL_002c:  stfld int64 Bless.Buffers.FileBuffer::winOffset
-	IL_0031:  ldarg.0 
-	IL_0032:  ldfld int64 Bless.Buffers.FileBuffer::winOffset
-	IL_0037:  ldc.i4.0 
-	IL_0038:  conv.i8 
-	IL_0039:  bge IL_0046
+	IL_0001:  ldfld class [mscorlib]System.IO.FileStream Bless.Buffers.SaveAsOperation::fs
+	IL_0006:  brfalse IL_001d
 
-	IL_003e:  ldarg.0 
-	IL_003f:  ldc.i4.0 
-	IL_0040:  conv.i8 
-	IL_0041:  stfld int64 Bless.Buffers.FileBuffer::winOffset
-	IL_0046:  ldarg.0 
-	IL_0047:  ldfld class [mscorlib]System.IO.BinaryReader Bless.Buffers.FileBuffer::reader
-	IL_004c:  callvirt instance class [mscorlib]System.IO.Stream class [mscorlib]System.IO.BinaryReader::get_BaseStream()
-	IL_0051:  ldarg.0 
-	IL_0052:  ldfld int64 Bless.Buffers.FileBuffer::winOffset
-	IL_0057:  ldc.i4.0 
-	IL_0058:  callvirt instance int64 class [mscorlib]System.IO.Stream::Seek(int64, valuetype [mscorlib]System.IO.SeekOrigin)
-	IL_005d:  pop 
-	IL_005e:  ldarg.0 
-	IL_005f:  ldarg.0 
-	IL_0060:  ldfld class [mscorlib]System.IO.BinaryReader Bless.Buffers.FileBuffer::reader
-	IL_0065:  ldarg.0 
-	IL_0066:  ldfld unsigned int8[] Bless.Buffers.FileBuffer::window
-	IL_006b:  ldc.i4.0 
-	IL_006c:  ldarg.0 
-	IL_006d:  ldfld unsigned int8[] Bless.Buffers.FileBuffer::window
-	IL_0072:  ldlen 
-	IL_0073:  conv.i4 
-	IL_0074:  callvirt instance int32 class [mscorlib]System.IO.BinaryReader::Read(unsigned int8[], int32, int32)
-	IL_0079:  stfld int32 Bless.Buffers.FileBuffer::winOccupied
-	IL_007e:  ldarg.0 
-	IL_007f:  ldfld unsigned int8[] Bless.Buffers.FileBuffer::window
-	IL_0084:  ldarg.1 
-	IL_0085:  ldarg.0 
-	IL_0086:  ldfld int64 Bless.Buffers.FileBuffer::winOffset
-	IL_008b:  sub 
-	IL_008c:  conv.ovf.i 
-	IL_008d:  ldelem.u1 
-	IL_008e:  ret 
-    } // end of method FileBuffer::get_Item
+	IL_000b:  ldarg.0 
+	IL_000c:  ldfld class [mscorlib]System.IO.FileStream Bless.Buffers.SaveAsOperation::fs
+	IL_0011:  callvirt instance void class [mscorlib]System.IO.Stream::Close()
+	IL_0016:  ldarg.0 
+	IL_0017:  ldnull 
+	IL_0018:  stfld class [mscorlib]System.IO.FileStream Bless.Buffers.SaveAsOperation::fs
+	IL_001d:  ret 
+    } // end of method SaveAsOperation::EndOperation
 
-    // method line 183
-    .method public virtual hidebysig specialname 
-           instance default int64 get_Size ()  cil managed 
+    // method line 171
+    .method private final virtual hidebysig newslot strict 
+           instance default valuetype [Bless.Util]Bless.Util.ThreadedAsyncOperation/OperationResult Bless.Buffers.ISaveState.get_Result ()  cil managed 
     {
-        // Method begins at RVA 0x4d7b
+        // Method begins at RVA 0x50a3
+	.override Could not decode method override class Bless.Buffers.ISaveState::get_Result due to (null)
 	// Code size 7 (0x7)
 	.maxstack 8
 	IL_0000:  ldarg.0 
-	IL_0001:  ldfld int64 Bless.Buffers.FileBuffer::FileLength
+	IL_0001:  call instance valuetype [Bless.Util]Bless.Util.ThreadedAsyncOperation/OperationResult class [Bless.Util]Bless.Util.ThreadedAsyncOperation::get_Result()
 	IL_0006:  ret 
-    } // end of method FileBuffer::get_Size
+    } // end of method SaveAsOperation::Bless.Buffers.ISaveState.get_Result
 
-    // method line 184
-    .method public hidebysig 
-           instance default void Load (string filename)  cil managed 
+    // method line 172
+    .method private final virtual hidebysig newslot strict 
+           instance default class [mscorlib]System.Exception Bless.Buffers.ISaveState.get_ThreadException ()  cil managed 
     {
-        // Method begins at RVA 0x4d84
-	// Code size 242 (0xf2)
-	.maxstack 5
-	.locals init (
-		class [Mono.Posix]Mono.Unix.UnixFileInfo	V_0,
-		class [Mono.Posix]Mono.Unix.UnixStream	V_1,
-		class [mscorlib]System.IO.Stream	V_2)
+        // Method begins at RVA 0x50ab
+	.override Could not decode method override class Bless.Buffers.ISaveState::get_ThreadException due to (null)
+	// Code size 7 (0x7)
+	.maxstack 8
 	IL_0000:  ldarg.0 
-	IL_0001:  ldfld class [mscorlib]System.IO.BinaryReader Bless.Buffers.FileBuffer::reader
-	IL_0006:  brfalse IL_0016
+	IL_0001:  call instance class [mscorlib]System.Exception class [Bless.Util]Bless.Util.ThreadedAsyncOperation::get_ThreadException()
+	IL_0006:  ret 
+    } // end of method SaveAsOperation::Bless.Buffers.ISaveState.get_ThreadException
 
-	IL_000b:  ldarg.0 
-	IL_000c:  ldfld class [mscorlib]System.IO.BinaryReader Bless.Buffers.FileBuffer::reader
-	IL_0011:  callvirt instance void class [mscorlib]System.IO.BinaryReader::Close()
-	IL_0016:  ldarg.1 
-	IL_0017:  newobj instance void class [Mono.Posix]Mono.Unix.UnixFileInfo::'.ctor'(string)
-	IL_001c:  stloc.0 
-	IL_001d:  ldloc.0 
-	IL_001e:  callvirt instance bool class [Mono.Posix]Mono.Unix.UnixFileSystemInfo::get_Exists()
-	IL_0023:  brtrue IL_0034
+	.property instance class Bless.Buffers.ByteBuffer Buffer ()
+	{
+		.get instance default class Bless.Buffers.ByteBuffer Bless.Buffers.SaveAsOperation::get_Buffer () 
+	}
+	.property instance string SavePath ()
+	{
+		.get instance default string Bless.Buffers.SaveAsOperation::get_SavePath () 
+		.set instance default void Bless.Buffers.SaveAsOperation::set_SavePath (string 'value') 
+	}
+	.property instance int64 BytesSaved ()
+	{
+		.get instance default int64 Bless.Buffers.SaveAsOperation::get_BytesSaved () 
+	}
+	.property instance valuetype Bless.Buffers.SaveAsOperation/SaveAsStage StageReached ()
+	{
+		.get instance default valuetype Bless.Buffers.SaveAsOperation/SaveAsStage Bless.Buffers.SaveAsOperation::get_StageReached () 
+	}
+  .class nested public auto ansi sealed SaveAsStage
+  	extends [mscorlib]System.Enum
+  {
+    .field  public specialname rtspecialname  int32 value__
+    .field public static literal  valuetype Bless.Buffers.SaveAsOperation/SaveAsStage BeforeCreate = int32(0x00000000)
+    .field public static literal  valuetype Bless.Buffers.SaveAsOperation/SaveAsStage BeforeWrite = int32(0x00000001)
 
-	IL_0028:  ldloc.0 
-	IL_0029:  callvirt instance string class [Mono.Posix]Mono.Unix.UnixFileSystemInfo::get_FullName()
-	IL_002e:  newobj instance void class [mscorlib]System.IO.FileNotFoundException::'.ctor'(string)
-	IL_0033:  throw 
-	IL_0034:  ldloc.0 
-	IL_0035:  callvirt instance bool class [Mono.Posix]Mono.Unix.UnixFileSystemInfo::get_IsRegularFile()
-	IL_003a:  brfalse IL_0057
+  } // end of class SaveAsStage
 
-	IL_003f:  ldarg.0 
-	IL_0040:  ldloc.0 
-	IL_0041:  callvirt instance int64 class [Mono.Posix]Mono.Unix.UnixFileSystemInfo::get_Length()
-	IL_0046:  stfld int64 Bless.Buffers.FileBuffer::FileLength
-	IL_004b:  ldarg.0 
-	IL_004c:  ldc.i4.1 
-	IL_004d:  stfld bool Bless.Buffers.FileBuffer::isResizable
-	IL_0052:  br IL_009d
+  } // end of class Bless.Buffers.SaveAsOperation
+}
 
-	IL_0057:  ldloc.0 
-	IL_0058:  callvirt instance bool class [Mono.Posix]Mono.Unix.UnixFileSystemInfo::get_IsBlockDevice()
-	IL_005d:  brfalse IL_0092
+.namespace Bless.Buffers
+{
+  .class interface public auto ansi abstract IBuffer
+  {
+    .custom instance void class [mscorlib]System.Reflection.DefaultMemberAttribute::'.ctor'(string) =  (01 00 04 49 74 65 6D 00 00 ) // ...Item..
 
-	IL_0062:  ldloc.0 
-	IL_0063:  callvirt instance class [Mono.Posix]Mono.Unix.UnixStream class [Mono.Posix]Mono.Unix.UnixFileInfo::OpenRead()
-	IL_0068:  stloc.1 
-	IL_0069:  ldloc.1 
-	IL_006a:  callvirt instance int32 class [Mono.Posix]Mono.Unix.UnixStream::get_Handle()
-	IL_006f:  ldc.i4 -2147216782
-	IL_0074:  ldarg.0 
-	IL_0075:  ldflda int64 Bless.Buffers.FileBuffer::FileLength
-	IL_007a:  call int32 class Bless.Buffers.FileBuffer::ioctl(int32, unsigned int32, [out] int64&)
-	IL_007f:  pop 
-	IL_0080:  ldloc.1 
-	IL_0081:  callvirt instance void class [mscorlib]System.IO.Stream::Close()
-	IL_0086:  ldarg.0 
-	IL_0087:  ldc.i4.0 
-	IL_0088:  stfld bool Bless.Buffers.FileBuffer::isResizable
-	IL_008d:  br IL_009d
 
-	IL_0092:  ldstr "File object isn't a regular or block device."
-	IL_0097:  newobj instance void class [mscorlib]System.NotSupportedException::'.ctor'(string)
-	IL_009c:  throw 
-	IL_009d:  ldarg.1 
-	IL_009e:  ldc.i4.3 
-	IL_009f:  ldc.i4.1 
-	IL_00a0:  ldc.i4.3 
-	IL_00a1:  newobj instance void class [mscorlib]System.IO.FileStream::'.ctor'(string, valuetype [mscorlib]System.IO.FileMode, valuetype [mscorlib]System.IO.FileAccess, valuetype [mscorlib]System.IO.FileShare)
-	IL_00a6:  stloc.2 
-	IL_00a7:  ldloc.2 
-	IL_00a8:  callvirt instance bool class [mscorlib]System.IO.Stream::get_CanSeek()
-	IL_00ad:  brtrue IL_00bd
+    // method line 173
+    .method public virtual hidebysig newslot abstract 
+           instance default void Insert (int64 pos, unsigned int8[] data, int64 index, int64 length)  cil managed 
+    {
+        // Method begins at RVA 0x0
+    } // end of method IBuffer::Insert
 
-	IL_00b2:  ldstr "File object doesn't support seeking."
-	IL_00b7:  newobj instance void class [mscorlib]System.NotSupportedException::'.ctor'(string)
-	IL_00bc:  throw 
-	IL_00bd:  ldarg.0 
-	IL_00be:  ldloc.2 
-	IL_00bf:  newobj instance void class [mscorlib]System.IO.BinaryReader::'.ctor'(class [mscorlib]System.IO.Stream)
-	IL_00c4:  stfld class [mscorlib]System.IO.BinaryReader Bless.Buffers.FileBuffer::reader
-	IL_00c9:  ldarg.0 
-	IL_00ca:  ldarg.0 
-	IL_00cb:  ldfld class [mscorlib]System.IO.BinaryReader Bless.Buffers.FileBuffer::reader
-	IL_00d0:  ldarg.0 
-	IL_00d1:  ldfld unsigned int8[] Bless.Buffers.FileBuffer::window
-	IL_00d6:  ldc.i4.0 
-	IL_00d7:  ldarg.0 
-	IL_00d8:  ldfld unsigned int8[] Bless.Buffers.FileBuffer::window
-	IL_00dd:  ldlen 
-	IL_00de:  conv.i4 
-	IL_00df:  callvirt instance int32 class [mscorlib]System.IO.BinaryReader::Read(unsigned int8[], int32, int32)
-	IL_00e4:  stfld int32 Bless.Buffers.FileBuffer::winOccupied
-	IL_00e9:  ldarg.0 
-	IL_00ea:  ldc.i4.0 
-	IL_00eb:  conv.i8 
-	IL_00ec:  stfld int64 Bless.Buffers.FileBuffer::winOffset
-	IL_00f1:  ret 
-    } // end of method FileBuffer::Load
+    // method line 174
+    .method public virtual hidebysig newslot abstract 
+           instance default int64 Read (unsigned int8[] data, int64 index, int64 pos, int64 len)  cil managed 
+    {
+        // Method begins at RVA 0x0
+    } // end of method IBuffer::Read
 
-    // method line 185
-    .method public hidebysig specialname 
-           instance default string get_Filename ()  cil managed 
+    // method line 175
+    .method public virtual hidebysig newslot abstract 
+           instance default void Append (unsigned int8[] data, int64 index, int64 length)  cil managed 
     {
-        // Method begins at RVA 0x4e82
-	// Code size 35 (0x23)
-	.maxstack 8
-	IL_0000:  ldarg.0 
-	IL_0001:  ldfld class [mscorlib]System.IO.BinaryReader Bless.Buffers.FileBuffer::reader
-	IL_0006:  brfalse IL_0021
+        // Method begins at RVA 0x0
+    } // end of method IBuffer::Append
 
-	IL_000b:  ldarg.0 
-	IL_000c:  ldfld class [mscorlib]System.IO.BinaryReader Bless.Buffers.FileBuffer::reader
-	IL_0011:  callvirt instance class [mscorlib]System.IO.Stream class [mscorlib]System.IO.BinaryReader::get_BaseStream()
-	IL_0016:  isinst [mscorlib]System.IO.FileStream
-	IL_001b:  callvirt instance string class [mscorlib]System.IO.FileStream::get_Name()
-	IL_0020:  ret 
-	IL_0021:  ldnull 
-	IL_0022:  ret 
-    } // end of method FileBuffer::get_Filename
+    // method line 176
+    .method public virtual hidebysig newslot abstract 
+           instance default void InsertBuffer (int64 pos, class Bless.Buffers.IBuffer buf, int64 index, int64 length)  cil managed 
+    {
+        // Method begins at RVA 0x0
+    } // end of method IBuffer::InsertBuffer
 
-    // method line 186
-    .method public hidebysig specialname 
-           instance default bool get_IsResizable ()  cil managed 
+    // method line 177
+    .method public virtual hidebysig newslot abstract 
+           instance default void AppendBuffer (class Bless.Buffers.IBuffer buf, int64 index, int64 length)  cil managed 
     {
-        // Method begins at RVA 0x4ea6
-	// Code size 7 (0x7)
-	.maxstack 8
-	IL_0000:  ldarg.0 
-	IL_0001:  ldfld bool Bless.Buffers.FileBuffer::isResizable
-	IL_0006:  ret 
-    } // end of method FileBuffer::get_IsResizable
+        // Method begins at RVA 0x0
+    } // end of method IBuffer::AppendBuffer
 
-    // method line 187
-    .method public hidebysig 
-           instance default void Close ()  cil managed 
+    // method line 178
+    .method public virtual hidebysig newslot abstract specialname 
+           instance default void set_Item (int64 index, unsigned int8 'value')  cil managed 
+    {
+        // Method begins at RVA 0x0
+    } // end of method IBuffer::set_Item
+
+    // method line 179
+    .method public virtual hidebysig newslot abstract specialname 
+           instance default unsigned int8 get_Item (int64 index)  cil managed 
+    {
+        // Method begins at RVA 0x0
+    } // end of method IBuffer::get_Item
+
+    // method line 180
+    .method public virtual hidebysig newslot abstract specialname 
+           instance default int64 get_Size ()  cil managed 
     {
-        // Method begins at RVA 0x4eae
-	// Code size 19 (0x13)
-	.maxstack 8
-	IL_0000:  ldarg.0 
-	IL_0001:  ldfld class [mscorlib]System.IO.BinaryReader Bless.Buffers.FileBuffer::reader
-	IL_0006:  callvirt instance void class [mscorlib]System.IO.BinaryReader::Close()
-	IL_000b:  ldarg.0 
-	IL_000c:  ldnull 
-	IL_000d:  stfld class [mscorlib]System.IO.BinaryReader Bless.Buffers.FileBuffer::reader
-	IL_0012:  ret 
-    } // end of method FileBuffer::Close
+        // Method begins at RVA 0x0
+    } // end of method IBuffer::get_Size
 
 	.property instance unsigned int8 Item (int64)
 	{
-		.get instance default unsigned int8 Bless.Buffers.FileBuffer::get_Item (int64 index) 
-		.set instance default void Bless.Buffers.FileBuffer::set_Item (int64 index, unsigned int8 'value') 
+		.get instance default unsigned int8 Bless.Buffers.IBuffer::get_Item (int64 index) 
+		.set instance default void Bless.Buffers.IBuffer::set_Item (int64 index, unsigned int8 'value') 
 	}
 	.property instance int64 Size ()
 	{
-		.get instance default int64 Bless.Buffers.FileBuffer::get_Size () 
-	}
-	.property instance string Filename ()
-	{
-		.get instance default string Bless.Buffers.FileBuffer::get_Filename () 
-	}
-	.property instance bool IsResizable ()
-	{
-		.get instance default bool Bless.Buffers.FileBuffer::get_IsResizable () 
+		.get instance default int64 Bless.Buffers.IBuffer::get_Size () 
 	}
-  } // end of class Bless.Buffers.FileBuffer
+  } // end of class Bless.Buffers.IBuffer
 }
 
 .namespace Bless.Buffers
 {
-  .class public auto ansi beforefieldinit SaveInPlaceOperation
-  	extends [Bless.Util]Bless.Util.ThreadedAsyncOperation
-  	implements Bless.Buffers.ISaveState  {
-    .field  family  class Bless.Buffers.ByteBuffer byteBuffer
-    .field  family  int64 bytesSaved
-    .field  family  string savePath
-    .field  private  class [mscorlib]System.IO.FileStream fs
-    .field  private  valuetype Bless.Buffers.SaveInPlaceOperation/SaveInPlaceStage stageReached
+  .class public auto ansi beforefieldinit BaseBuffer
+  	extends [mscorlib]System.Object
+  	implements Bless.Buffers.IBuffer  {
+    .custom instance void class [mscorlib]System.Reflection.DefaultMemberAttribute::'.ctor'(string) =  (01 00 04 49 74 65 6D 00 00 ) // ...Item..
 
-    // method line 188
+
+    // method line 181
     .method public hidebysig specialname rtspecialname 
-           instance default void '.ctor' (class Bless.Buffers.ByteBuffer bb, class [Bless.Util]Bless.Util.ProgressCallback pc, class [mscorlib]System.AsyncCallback ac, bool glibIdle)  cil managed 
+           instance default void '.ctor' ()  cil managed 
     {
-        // Method begins at RVA 0x4ec2
-	// Code size 50 (0x32)
+        // Method begins at RVA 0x2748
+	// Code size 7 (0x7)
 	.maxstack 8
 	IL_0000:  ldarg.0 
-	IL_0001:  ldarg.2 
-	IL_0002:  ldarg.3 
-	IL_0003:  ldarg.s 4
-	IL_0005:  call instance void class [Bless.Util]Bless.Util.ThreadedAsyncOperation::'.ctor'(class [Bless.Util]Bless.Util.ProgressCallback, class [mscorlib]System.AsyncCallback, bool)
-	IL_000a:  ldarg.0 
-	IL_000b:  ldarg.1 
-	IL_000c:  stfld class Bless.Buffers.ByteBuffer Bless.Buffers.SaveInPlaceOperation::byteBuffer
-	IL_0011:  ldarg.0 
-	IL_0012:  ldarg.0 
-	IL_0013:  ldfld class Bless.Buffers.ByteBuffer Bless.Buffers.SaveInPlaceOperation::byteBuffer
-	IL_0018:  callvirt instance string class Bless.Buffers.ByteBuffer::get_Filename()
-	IL_001d:  stfld string Bless.Buffers.SaveInPlaceOperation::savePath
-	IL_0022:  ldarg.0 
-	IL_0023:  ldnull 
-	IL_0024:  stfld class [mscorlib]System.IO.FileStream Bless.Buffers.SaveInPlaceOperation::fs
-	IL_0029:  ldarg.0 
-	IL_002a:  ldc.i4.0 
-	IL_002b:  conv.i8 
-	IL_002c:  stfld int64 Bless.Buffers.SaveInPlaceOperation::bytesSaved
-	IL_0031:  ret 
-    } // end of method SaveInPlaceOperation::.ctor
+	IL_0001:  call instance void object::'.ctor'()
+	IL_0006:  ret 
+    } // end of method BaseBuffer::.ctor
 
-    // method line 189
-    .method public final virtual hidebysig newslot specialname 
-           instance default class Bless.Buffers.ByteBuffer get_Buffer ()  cil managed 
+    // method line 182
+    .method public virtual hidebysig newslot 
+           instance default void Insert (int64 pos, unsigned int8[] data, int64 index, int64 length)  cil managed 
     {
-        // Method begins at RVA 0x4ef5
-	// Code size 7 (0x7)
+        // Method begins at RVA 0x2750
+	// Code size 6 (0x6)
 	.maxstack 8
-	IL_0000:  ldarg.0 
-	IL_0001:  ldfld class Bless.Buffers.ByteBuffer Bless.Buffers.SaveInPlaceOperation::byteBuffer
-	IL_0006:  ret 
-    } // end of method SaveInPlaceOperation::get_Buffer
+	IL_0000:  newobj instance void class [mscorlib]System.NotImplementedException::'.ctor'()
+	IL_0005:  throw 
+    } // end of method BaseBuffer::Insert
 
-    // method line 190
-    .method public final virtual hidebysig newslot specialname 
-           instance default string get_SavePath ()  cil managed 
+    // method line 183
+    .method public virtual hidebysig newslot 
+           instance default int64 Read (unsigned int8[] data, int64 index, int64 pos, int64 len)  cil managed 
     {
-        // Method begins at RVA 0x4efd
-	// Code size 7 (0x7)
+        // Method begins at RVA 0x2757
+	// Code size 6 (0x6)
 	.maxstack 8
-	IL_0000:  ldarg.0 
-	IL_0001:  ldfld string Bless.Buffers.SaveInPlaceOperation::savePath
-	IL_0006:  ret 
-    } // end of method SaveInPlaceOperation::get_SavePath
+	IL_0000:  newobj instance void class [mscorlib]System.NotImplementedException::'.ctor'()
+	IL_0005:  throw 
+    } // end of method BaseBuffer::Read
 
-    // method line 191
-    .method public hidebysig specialname 
-           instance default void set_SavePath (string 'value')  cil managed 
+    // method line 184
+    .method public virtual hidebysig newslot 
+           instance default void Append (unsigned int8[] data, int64 index, int64 length)  cil managed 
     {
-        // Method begins at RVA 0x4f05
-	// Code size 8 (0x8)
+        // Method begins at RVA 0x275e
+	// Code size 6 (0x6)
 	.maxstack 8
-	IL_0000:  ldarg.0 
-	IL_0001:  ldarg.1 
-	IL_0002:  stfld string Bless.Buffers.SaveInPlaceOperation::savePath
-	IL_0007:  ret 
-    } // end of method SaveInPlaceOperation::set_SavePath
+	IL_0000:  newobj instance void class [mscorlib]System.NotImplementedException::'.ctor'()
+	IL_0005:  throw 
+    } // end of method BaseBuffer::Append
 
-    // method line 192
-    .method public hidebysig specialname 
-           instance default int64 get_BytesSaved ()  cil managed 
+    // method line 185
+    .method public virtual hidebysig newslot 
+           instance default void InsertBuffer (int64 pos, class Bless.Buffers.IBuffer buf, int64 index, int64 length)  cil managed 
     {
-        // Method begins at RVA 0x4f0e
-	// Code size 7 (0x7)
+        // Method begins at RVA 0x2765
+	// Code size 6 (0x6)
 	.maxstack 8
-	IL_0000:  ldarg.0 
-	IL_0001:  ldfld int64 Bless.Buffers.SaveInPlaceOperation::bytesSaved
-	IL_0006:  ret 
-    } // end of method SaveInPlaceOperation::get_BytesSaved
+	IL_0000:  newobj instance void class [mscorlib]System.NotImplementedException::'.ctor'()
+	IL_0005:  throw 
+    } // end of method BaseBuffer::InsertBuffer
 
-    // method line 193
-    .method public hidebysig specialname 
-           instance default valuetype Bless.Buffers.SaveInPlaceOperation/SaveInPlaceStage get_StageReached ()  cil managed 
+    // method line 186
+    .method public virtual hidebysig newslot 
+           instance default void AppendBuffer (class Bless.Buffers.IBuffer buf, int64 index, int64 length)  cil managed 
     {
-        // Method begins at RVA 0x4f16
-	// Code size 7 (0x7)
+        // Method begins at RVA 0x276c
+	// Code size 6 (0x6)
 	.maxstack 8
-	IL_0000:  ldarg.0 
-	IL_0001:  ldfld valuetype Bless.Buffers.SaveInPlaceOperation/SaveInPlaceStage Bless.Buffers.SaveInPlaceOperation::stageReached
-	IL_0006:  ret 
-    } // end of method SaveInPlaceOperation::get_StageReached
+	IL_0000:  newobj instance void class [mscorlib]System.NotImplementedException::'.ctor'()
+	IL_0005:  throw 
+    } // end of method BaseBuffer::AppendBuffer
 
-    // method line 194
-    .method family virtual hidebysig 
-           instance default bool StartProgress ()  cil managed 
+    // method line 187
+    .method public virtual hidebysig newslot specialname 
+           instance default void set_Item (int64 index, unsigned int8 'value')  cil managed 
     {
-        // Method begins at RVA 0x4f20
-	// Code size 72 (0x48)
-	.maxstack 3
-	IL_0000:  ldarg.0 
-	IL_0001:  ldfld class [Bless.Util]Bless.Util.ProgressCallback [Bless.Util]Bless.Util.ThreadedAsyncOperation::progressCallback
-	IL_0006:  ldstr "Saving '{0}'"
-	IL_000b:  call string class [Mono.Posix]Mono.Unix.Catalog::GetString(string)
-	IL_0010:  ldarg.0 
-	IL_0011:  call instance string class Bless.Buffers.SaveInPlaceOperation::get_SavePath()
-	IL_0016:  call string string::Format(string, object)
-	IL_001b:  ldc.i4.3 
-	IL_001c:  callvirt instance bool class [Bless.Util]Bless.Util.ProgressCallback::Invoke(object, valuetype [Bless.Util]Bless.Util.ProgressAction)
-	IL_0021:  pop 
-	IL_0022:  ldarg.0 
-	IL_0023:  ldfld class [Bless.Util]Bless.Util.ProgressCallback [Bless.Util]Bless.Util.ThreadedAsyncOperation::progressCallback
-	IL_0028:  ldarg.0 
-	IL_0029:  ldfld int64 Bless.Buffers.SaveInPlaceOperation::bytesSaved
-	IL_002e:  conv.r8 
-	IL_002f:  ldarg.0 
-	IL_0030:  ldfld class Bless.Buffers.ByteBuffer Bless.Buffers.SaveInPlaceOperation::byteBuffer
-	IL_0035:  callvirt instance int64 class Bless.Buffers.BaseBuffer::get_Size()
-	IL_003a:  conv.r8 
-	IL_003b:  div 
-	IL_003c:  box [mscorlib]System.Double
-	IL_0041:  ldc.i4.0 
-	IL_0042:  callvirt instance bool class [Bless.Util]Bless.Util.ProgressCallback::Invoke(object, valuetype [Bless.Util]Bless.Util.ProgressAction)
-	IL_0047:  ret 
-    } // end of method SaveInPlaceOperation::StartProgress
+        // Method begins at RVA 0x2773
+	// Code size 6 (0x6)
+	.maxstack 8
+	IL_0000:  newobj instance void class [mscorlib]System.NotImplementedException::'.ctor'()
+	IL_0005:  throw 
+    } // end of method BaseBuffer::set_Item
 
-    // method line 195
-    .method family virtual hidebysig 
-           instance default bool UpdateProgress ()  cil managed 
+    // method line 188
+    .method public virtual hidebysig newslot specialname 
+           instance default unsigned int8 get_Item (int64 index)  cil managed 
     {
-        // Method begins at RVA 0x4f74
-	// Code size 38 (0x26)
+        // Method begins at RVA 0x277a
+	// Code size 6 (0x6)
+	.maxstack 8
+	IL_0000:  newobj instance void class [mscorlib]System.NotImplementedException::'.ctor'()
+	IL_0005:  throw 
+    } // end of method BaseBuffer::get_Item
+
+    // method line 189
+    .method public virtual hidebysig newslot specialname 
+           instance default int64 get_Size ()  cil managed 
+    {
+        // Method begins at RVA 0x2781
+	// Code size 6 (0x6)
+	.maxstack 8
+	IL_0000:  newobj instance void class [mscorlib]System.NotImplementedException::'.ctor'()
+	IL_0005:  throw 
+    } // end of method BaseBuffer::get_Size
+
+	.property instance unsigned int8 Item (int64)
+	{
+		.get instance default unsigned int8 Bless.Buffers.BaseBuffer::get_Item (int64 index) 
+		.set instance default void Bless.Buffers.BaseBuffer::set_Item (int64 index, unsigned int8 'value') 
+	}
+	.property instance int64 Size ()
+	{
+		.get instance default int64 Bless.Buffers.BaseBuffer::get_Size () 
+	}
+  } // end of class Bless.Buffers.BaseBuffer
+}
+
+.namespace Bless.Buffers
+{
+  .class public auto ansi beforefieldinit SimpleBuffer
+  	extends Bless.Buffers.BaseBuffer
+  {
+    .custom instance void class [mscorlib]System.Reflection.DefaultMemberAttribute::'.ctor'(string) =  (01 00 04 49 74 65 6D 00 00 ) // ...Item..
+
+    .field  private  unsigned int8[] data
+
+    // method line 190
+    .method public hidebysig specialname rtspecialname 
+           instance default void '.ctor' ()  cil managed 
+    {
+        // Method begins at RVA 0x50b3
+	// Code size 19 (0x13)
 	.maxstack 8
 	IL_0000:  ldarg.0 
-	IL_0001:  ldfld class [Bless.Util]Bless.Util.ProgressCallback [Bless.Util]Bless.Util.ThreadedAsyncOperation::progressCallback
+	IL_0001:  call instance void class Bless.Buffers.BaseBuffer::'.ctor'()
 	IL_0006:  ldarg.0 
-	IL_0007:  ldfld int64 Bless.Buffers.SaveInPlaceOperation::bytesSaved
-	IL_000c:  conv.r8 
-	IL_000d:  ldarg.0 
-	IL_000e:  ldfld class Bless.Buffers.ByteBuffer Bless.Buffers.SaveInPlaceOperation::byteBuffer
-	IL_0013:  callvirt instance int64 class Bless.Buffers.BaseBuffer::get_Size()
-	IL_0018:  conv.r8 
-	IL_0019:  div 
-	IL_001a:  box [mscorlib]System.Double
-	IL_001f:  ldc.i4.2 
-	IL_0020:  callvirt instance bool class [Bless.Util]Bless.Util.ProgressCallback::Invoke(object, valuetype [Bless.Util]Bless.Util.ProgressAction)
-	IL_0025:  ret 
-    } // end of method SaveInPlaceOperation::UpdateProgress
+	IL_0007:  ldc.i4.0 
+	IL_0008:  newarr [mscorlib]System.Byte
+	IL_000d:  stfld unsigned int8[] Bless.Buffers.SimpleBuffer::data
+	IL_0012:  ret 
+    } // end of method SimpleBuffer::.ctor
 
-    // method line 196
-    .method family virtual hidebysig 
-           instance default bool EndProgress ()  cil managed 
+    // method line 191
+    .method public virtual hidebysig 
+           instance default int64 Read (unsigned int8[] ba, int64 index, int64 pos, int64 len)  cil managed 
     {
-        // Method begins at RVA 0x4f9b
-	// Code size 38 (0x26)
+        // Method begins at RVA 0x50c7
+	// Code size 19 (0x13)
 	.maxstack 8
 	IL_0000:  ldarg.0 
-	IL_0001:  ldfld class [Bless.Util]Bless.Util.ProgressCallback [Bless.Util]Bless.Util.ThreadedAsyncOperation::progressCallback
-	IL_0006:  ldarg.0 
-	IL_0007:  ldfld int64 Bless.Buffers.SaveInPlaceOperation::bytesSaved
-	IL_000c:  conv.r8 
-	IL_000d:  ldarg.0 
-	IL_000e:  ldfld class Bless.Buffers.ByteBuffer Bless.Buffers.SaveInPlaceOperation::byteBuffer
-	IL_0013:  callvirt instance int64 class Bless.Buffers.BaseBuffer::get_Size()
-	IL_0018:  conv.r8 
-	IL_0019:  div 
-	IL_001a:  box [mscorlib]System.Double
-	IL_001f:  ldc.i4.5 
-	IL_0020:  callvirt instance bool class [Bless.Util]Bless.Util.ProgressCallback::Invoke(object, valuetype [Bless.Util]Bless.Util.ProgressAction)
-	IL_0025:  ret 
-    } // end of method SaveInPlaceOperation::EndProgress
+	IL_0001:  ldfld unsigned int8[] Bless.Buffers.SimpleBuffer::data
+	IL_0006:  ldarg.3 
+	IL_0007:  ldarg.1 
+	IL_0008:  ldarg.2 
+	IL_0009:  ldarg.s 4
+	IL_000b:  call void class [mscorlib]System.Array::Copy(class [mscorlib]System.Array, int64, class [mscorlib]System.Array, int64, int64)
+	IL_0010:  ldarg.s 4
+	IL_0012:  ret 
+    } // end of method SimpleBuffer::Read
 
-    // method line 197
-    .method family virtual hidebysig 
-           instance default void DoOperation ()  cil managed 
+    // method line 192
+    .method public virtual hidebysig 
+           instance default void Append (unsigned int8[] d, int64 index, int64 length)  cil managed 
     {
-        // Method begins at RVA 0x4fc4
-	// Code size 538 (0x21a)
-	.maxstack 6
+        // Method begins at RVA 0x50dc
+	// Code size 118 (0x76)
+	.maxstack 5
 	.locals init (
-		class Bless.Buffers.SegmentCollection	V_0,
-		object	V_1,
-		bool	V_2,
-		unsigned int8[]	V_3,
-		class [Bless.Util]Bless.Util.List`1/Node<class Bless.Buffers.Segment>	V_4,
-		int64	V_5,
-		class Bless.Buffers.Segment	V_6,
-		int64	V_7,
-		int64	V_8,
-		int32	V_9,
-		int64	V_10)
-	IL_0000:  ldarg.0 
+		unsigned int8[]	V_0)
+	IL_0000:  ldarg.3 
 	IL_0001:  ldc.i4.0 
-	IL_0002:  stfld valuetype Bless.Buffers.SaveInPlaceOperation/SaveInPlaceStage Bless.Buffers.SaveInPlaceOperation::stageReached
-	IL_0007:  ldarg.0 
-	IL_0008:  ldarg.0 
-	IL_0009:  ldfld string Bless.Buffers.SaveInPlaceOperation::savePath
-	IL_000e:  ldc.i4.3 
-	IL_000f:  ldc.i4.2 
-	IL_0010:  ldc.i4.3 
-	IL_0011:  newobj instance void class [mscorlib]System.IO.FileStream::'.ctor'(string, valuetype [mscorlib]System.IO.FileMode, valuetype [mscorlib]System.IO.FileAccess, valuetype [mscorlib]System.IO.FileShare)
-	IL_0016:  stfld class [mscorlib]System.IO.FileStream Bless.Buffers.SaveInPlaceOperation::fs
-	IL_001b:  ldarg.0 
-	IL_001c:  ldfld class Bless.Buffers.ByteBuffer Bless.Buffers.SaveInPlaceOperation::byteBuffer
-	IL_0021:  ldfld class Bless.Buffers.SegmentCollection Bless.Buffers.ByteBuffer::segCol
-	IL_0026:  stloc.0 
-	IL_0027:  ldarg.0 
-	IL_0028:  ldfld bool [Bless.Util]Bless.Util.ThreadedAsyncOperation::cancelled
-	IL_002d:  brtrue IL_0085
-
-	IL_0032:  ldarg.0 
-	IL_0033:  ldfld class Bless.Buffers.ByteBuffer Bless.Buffers.SaveInPlaceOperation::byteBuffer
-	IL_0038:  ldfld object Bless.Buffers.ByteBuffer::LockObj
-	IL_003d:  stloc.1 
-	IL_003e:  ldc.i4.0 
-	IL_003f:  stloc.2 
-	.try { // 0
-	  IL_0040:  ldloc.1 
-	  IL_0041:  ldloca.s 2
-	  IL_0043:  call void class [mscorlib]System.Threading.Monitor::Enter(object, [out] bool&)
-	  IL_0048:  ldarg.0 
-	  IL_0049:  ldfld class Bless.Buffers.ByteBuffer Bless.Buffers.SaveInPlaceOperation::byteBuffer
-	  IL_004e:  callvirt instance void class Bless.Buffers.ByteBuffer::MakePrivateCopyOfUndoRedo()
-	  IL_0053:  ldarg.0 
-	  IL_0054:  ldfld class Bless.Buffers.ByteBuffer Bless.Buffers.SaveInPlaceOperation::byteBuffer
-	  IL_0059:  ldc.i4.1 
-	  IL_005a:  callvirt instance void class Bless.Buffers.ByteBuffer::set_FileOperationsAllowed(bool)
-	  IL_005f:  ldarg.0 
-	  IL_0060:  ldfld class Bless.Buffers.ByteBuffer Bless.Buffers.SaveInPlaceOperation::byteBuffer
-	  IL_0065:  callvirt instance void class Bless.Buffers.ByteBuffer::CloseFile()
-	  IL_006a:  ldarg.0 
-	  IL_006b:  ldfld class Bless.Buffers.ByteBuffer Bless.Buffers.SaveInPlaceOperation::byteBuffer
-	  IL_0070:  ldc.i4.0 
-	  IL_0071:  callvirt instance void class Bless.Buffers.ByteBuffer::set_FileOperationsAllowed(bool)
-	  IL_0076:  leave IL_0085
-
-	} // end .try 0
-	finally  { // 0
-	  IL_007b:  ldloc.2 
-	  IL_007c:  brfalse.s IL_0084
-
-	  IL_007e:  ldloc.1 
-	  IL_007f:  call void class [mscorlib]System.Threading.Monitor::Exit(object)
-	  IL_0084:  endfinally 
-	} // end handler 0
-	IL_0085:  ldarg.0 
-	IL_0086:  ldc.i4.1 
-	IL_0087:  stfld valuetype Bless.Buffers.SaveInPlaceOperation/SaveInPlaceStage Bless.Buffers.SaveInPlaceOperation::stageReached
-	IL_008c:  ldc.i4 65535
-	IL_0091:  newarr [mscorlib]System.Byte
-	IL_0096:  stloc.3 
-	IL_0097:  ldloc.0 
-	IL_0098:  callvirt instance class [Bless.Util]Bless.Util.List`1<class Bless.Buffers.Segment> class Bless.Buffers.SegmentCollection::get_List()
-	IL_009d:  callvirt instance class [Bless.Util]Bless.Util.List`1/Node<!0> class [Bless.Util]Bless.Util.List`1<class Bless.Buffers.Segment>::get_First()
-	IL_00a2:  stloc.s 4
-	IL_00a4:  ldc.i4.0 
-	IL_00a5:  conv.i8 
-	IL_00a6:  stloc.s 5
-	IL_00a8:  br IL_01f5
+	IL_0002:  conv.i8 
+	IL_0003:  bne.un IL_0009
 
-	IL_00ad:  ldloc.s 4
-	IL_00af:  ldfld !0 class [Bless.Util]Bless.Util.List`1/Node<class Bless.Buffers.Segment>::data
-	IL_00b4:  stloc.s 6
-	IL_00b6:  ldloc.s 6
-	IL_00b8:  callvirt instance class Bless.Buffers.IBuffer class Bless.Buffers.Segment::get_Buffer()
-	IL_00bd:  callvirt instance class [mscorlib]System.Type object::GetType()
-	IL_00c2:  ldtoken Bless.Buffers.FileBuffer
-	IL_00c7:  call class [mscorlib]System.Type class [mscorlib]System.Type::GetTypeFromHandle(valuetype [mscorlib]System.RuntimeTypeHandle)
-	IL_00cc:  call bool class [mscorlib]System.Type::op_Equality(class [mscorlib]System.Type, class [mscorlib]System.Type)
-	IL_00d1:  brfalse IL_00f0
+	IL_0008:  ret 
+	IL_0009:  ldarg.0 
+	IL_000a:  ldfld unsigned int8[] Bless.Buffers.SimpleBuffer::data
+	IL_000f:  ldlen 
+	IL_0010:  conv.i4 
+	IL_0011:  ldc.i4.0 
+	IL_0012:  ble IL_0058
 
-	IL_00d6:  ldloc.s 5
-	IL_00d8:  ldloc.s 6
-	IL_00da:  callvirt instance int64 class Bless.Buffers.Segment::get_Size()
-	IL_00df:  add 
-	IL_00e0:  stloc.s 5
-	IL_00e2:  ldloc.s 4
-	IL_00e4:  ldfld class [Bless.Util]Bless.Util.List`1/Node<!0> class [Bless.Util]Bless.Util.List`1/Node<class Bless.Buffers.Segment>::next
-	IL_00e9:  stloc.s 4
-	IL_00eb:  br IL_01f5
+	IL_0017:  ldarg.0 
+	IL_0018:  ldfld unsigned int8[] Bless.Buffers.SimpleBuffer::data
+	IL_001d:  callvirt instance int64 class [mscorlib]System.Array::get_LongLength()
+	IL_0022:  ldarg.3 
+	IL_0023:  add 
+	IL_0024:  conv.ovf.i 
+	IL_0025:  newarr [mscorlib]System.Byte
+	IL_002a:  stloc.0 
+	IL_002b:  ldarg.0 
+	IL_002c:  ldfld unsigned int8[] Bless.Buffers.SimpleBuffer::data
+	IL_0031:  ldloc.0 
+	IL_0032:  ldc.i4.0 
+	IL_0033:  callvirt instance void class [mscorlib]System.Array::CopyTo(class [mscorlib]System.Array, int32)
+	IL_0038:  ldarg.1 
+	IL_0039:  ldarg.2 
+	IL_003a:  ldloc.0 
+	IL_003b:  ldarg.0 
+	IL_003c:  ldfld unsigned int8[] Bless.Buffers.SimpleBuffer::data
+	IL_0041:  callvirt instance int64 class [mscorlib]System.Array::get_LongLength()
+	IL_0046:  ldarg.3 
+	IL_0047:  call void class [mscorlib]System.Array::Copy(class [mscorlib]System.Array, int64, class [mscorlib]System.Array, int64, int64)
+	IL_004c:  ldarg.0 
+	IL_004d:  ldloc.0 
+	IL_004e:  stfld unsigned int8[] Bless.Buffers.SimpleBuffer::data
+	IL_0053:  br IL_0075
 
-	IL_00f0:  ldloc.s 6
-	IL_00f2:  callvirt instance int64 class Bless.Buffers.Segment::get_Size()
-	IL_00f7:  stloc.s 7
-	IL_00f9:  ldloc.s 7
-	IL_00fb:  ldc.i4 65535
-	IL_0100:  conv.i8 
-	IL_0101:  div 
-	IL_0102:  stloc.s 8
-	IL_0104:  ldloc.s 7
-	IL_0106:  ldc.i4 65535
-	IL_010b:  conv.i8 
-	IL_010c:  rem 
-	IL_010d:  conv.i4 
-	IL_010e:  stloc.s 9
-	IL_0110:  ldarg.0 
-	IL_0111:  ldfld class [mscorlib]System.IO.FileStream Bless.Buffers.SaveInPlaceOperation::fs
-	IL_0116:  ldloc.s 5
-	IL_0118:  ldc.i4.0 
-	IL_0119:  callvirt instance int64 class [mscorlib]System.IO.Stream::Seek(int64, valuetype [mscorlib]System.IO.SeekOrigin)
-	IL_011e:  pop 
-	IL_011f:  ldarg.0 
-	IL_0120:  ldloc.s 5
-	IL_0122:  stfld int64 Bless.Buffers.SaveInPlaceOperation::bytesSaved
-	IL_0127:  ldc.i4.0 
-	IL_0128:  conv.i8 
-	IL_0129:  stloc.s 10
-	IL_012b:  br IL_0192
+	IL_0058:  ldarg.0 
+	IL_0059:  ldarg.3 
+	IL_005a:  conv.ovf.i 
+	IL_005b:  newarr [mscorlib]System.Byte
+	IL_0060:  stfld unsigned int8[] Bless.Buffers.SimpleBuffer::data
+	IL_0065:  ldarg.1 
+	IL_0066:  ldarg.2 
+	IL_0067:  ldarg.0 
+	IL_0068:  ldfld unsigned int8[] Bless.Buffers.SimpleBuffer::data
+	IL_006d:  ldc.i4.0 
+	IL_006e:  conv.i8 
+	IL_006f:  ldarg.3 
+	IL_0070:  call void class [mscorlib]System.Array::Copy(class [mscorlib]System.Array, int64, class [mscorlib]System.Array, int64, int64)
+	IL_0075:  ret 
+    } // end of method SimpleBuffer::Append
 
-	IL_0130:  ldloc.s 6
-	IL_0132:  callvirt instance class Bless.Buffers.IBuffer class Bless.Buffers.Segment::get_Buffer()
-	IL_0137:  ldloc.3 
-	IL_0138:  ldc.i4.0 
-	IL_0139:  conv.i8 
-	IL_013a:  ldloc.s 6
-	IL_013c:  callvirt instance int64 class Bless.Buffers.Segment::get_Start()
-	IL_0141:  ldloc.s 10
-	IL_0143:  ldc.i4 65535
-	IL_0148:  conv.i8 
-	IL_0149:  mul 
-	IL_014a:  add 
-	IL_014b:  ldc.i4 65535
-	IL_0150:  conv.i8 
-	IL_0151:  callvirt instance int64 class Bless.Buffers.IBuffer::Read(unsigned int8[], int64, int64, int64)
-	IL_0156:  pop 
-	IL_0157:  ldarg.0 
-	IL_0158:  ldfld class [mscorlib]System.IO.FileStream Bless.Buffers.SaveInPlaceOperation::fs
-	IL_015d:  ldloc.3 
-	IL_015e:  ldc.i4.0 
-	IL_015f:  ldc.i4 65535
-	IL_0164:  callvirt instance void class [mscorlib]System.IO.Stream::Write(unsigned int8[], int32, int32)
-	IL_0169:  ldarg.0 
-	IL_016a:  ldloc.s 10
-	IL_016c:  ldc.i4.1 
-	IL_016d:  conv.i8 
-	IL_016e:  add 
-	IL_016f:  ldc.i4 65535
-	IL_0174:  conv.i8 
-	IL_0175:  mul 
-	IL_0176:  stfld int64 Bless.Buffers.SaveInPlaceOperation::bytesSaved
-	IL_017b:  ldarg.0 
-	IL_017c:  ldfld bool [Bless.Util]Bless.Util.ThreadedAsyncOperation::cancelled
-	IL_0181:  brfalse IL_018b
+    // method line 193
+    .method public virtual hidebysig 
+           instance default void AppendBuffer (class Bless.Buffers.IBuffer buf, int64 index, int64 length)  cil managed 
+    {
+        // Method begins at RVA 0x5160
+	// Code size 120 (0x78)
+	.maxstack 5
+	.locals init (
+		unsigned int8[]	V_0)
+	IL_0000:  ldarg.3 
+	IL_0001:  ldc.i4.0 
+	IL_0002:  conv.i8 
+	IL_0003:  bne.un IL_0009
 
-	IL_0186:  br IL_019b
+	IL_0008:  ret 
+	IL_0009:  ldarg.0 
+	IL_000a:  ldfld unsigned int8[] Bless.Buffers.SimpleBuffer::data
+	IL_000f:  ldlen 
+	IL_0010:  conv.i4 
+	IL_0011:  ldc.i4.0 
+	IL_0012:  ble IL_0059
 
-	IL_018b:  ldloc.s 10
-	IL_018d:  ldc.i4.1 
-	IL_018e:  conv.i8 
-	IL_018f:  add 
-	IL_0190:  stloc.s 10
-	IL_0192:  ldloc.s 10
-	IL_0194:  ldloc.s 8
-	IL_0196:  blt IL_0130
+	IL_0017:  ldarg.0 
+	IL_0018:  ldfld unsigned int8[] Bless.Buffers.SimpleBuffer::data
+	IL_001d:  callvirt instance int64 class [mscorlib]System.Array::get_LongLength()
+	IL_0022:  ldarg.3 
+	IL_0023:  add 
+	IL_0024:  conv.ovf.i 
+	IL_0025:  newarr [mscorlib]System.Byte
+	IL_002a:  stloc.0 
+	IL_002b:  ldarg.0 
+	IL_002c:  ldfld unsigned int8[] Bless.Buffers.SimpleBuffer::data
+	IL_0031:  ldloc.0 
+	IL_0032:  ldc.i4.0 
+	IL_0033:  callvirt instance void class [mscorlib]System.Array::CopyTo(class [mscorlib]System.Array, int32)
+	IL_0038:  ldarg.1 
+	IL_0039:  ldloc.0 
+	IL_003a:  ldarg.0 
+	IL_003b:  ldfld unsigned int8[] Bless.Buffers.SimpleBuffer::data
+	IL_0040:  callvirt instance int64 class [mscorlib]System.Array::get_LongLength()
+	IL_0045:  ldarg.2 
+	IL_0046:  ldarg.3 
+	IL_0047:  callvirt instance int64 class Bless.Buffers.IBuffer::Read(unsigned int8[], int64, int64, int64)
+	IL_004c:  pop 
+	IL_004d:  ldarg.0 
+	IL_004e:  ldloc.0 
+	IL_004f:  stfld unsigned int8[] Bless.Buffers.SimpleBuffer::data
+	IL_0054:  br IL_0077
 
-	IL_019b:  ldloc.s 9
-	IL_019d:  brfalse IL_01e0
+	IL_0059:  ldarg.0 
+	IL_005a:  ldarg.3 
+	IL_005b:  conv.ovf.i 
+	IL_005c:  newarr [mscorlib]System.Byte
+	IL_0061:  stfld unsigned int8[] Bless.Buffers.SimpleBuffer::data
+	IL_0066:  ldarg.1 
+	IL_0067:  ldarg.0 
+	IL_0068:  ldfld unsigned int8[] Bless.Buffers.SimpleBuffer::data
+	IL_006d:  ldc.i4.0 
+	IL_006e:  conv.i8 
+	IL_006f:  ldarg.2 
+	IL_0070:  ldarg.3 
+	IL_0071:  callvirt instance int64 class Bless.Buffers.IBuffer::Read(unsigned int8[], int64, int64, int64)
+	IL_0076:  pop 
+	IL_0077:  ret 
+    } // end of method SimpleBuffer::AppendBuffer
 
-	IL_01a2:  ldarg.0 
-	IL_01a3:  ldfld bool [Bless.Util]Bless.Util.ThreadedAsyncOperation::cancelled
-	IL_01a8:  brtrue IL_01e0
+    // method line 194
+    .method public virtual hidebysig specialname 
+           instance default void set_Item (int64 index, unsigned int8 'value')  cil managed 
+    {
+        // Method begins at RVA 0x51e4
+	// Code size 29 (0x1d)
+	.maxstack 8
+	IL_0000:  ldarg.1 
+	IL_0001:  ldarg.0 
+	IL_0002:  ldfld unsigned int8[] Bless.Buffers.SimpleBuffer::data
+	IL_0007:  callvirt instance int64 class [mscorlib]System.Array::get_LongLength()
+	IL_000c:  blt IL_0012
 
-	IL_01ad:  ldloc.s 6
-	IL_01af:  callvirt instance class Bless.Buffers.IBuffer class Bless.Buffers.Segment::get_Buffer()
-	IL_01b4:  ldloc.3 
-	IL_01b5:  ldc.i4.0 
-	IL_01b6:  conv.i8 
-	IL_01b7:  ldloc.s 6
-	IL_01b9:  callvirt instance int64 class Bless.Buffers.Segment::get_Start()
-	IL_01be:  ldloc.s 10
-	IL_01c0:  ldc.i4 65535
-	IL_01c5:  conv.i8 
-	IL_01c6:  mul 
-	IL_01c7:  add 
-	IL_01c8:  ldloc.s 9
-	IL_01ca:  conv.i8 
-	IL_01cb:  callvirt instance int64 class Bless.Buffers.IBuffer::Read(unsigned int8[], int64, int64, int64)
-	IL_01d0:  pop 
-	IL_01d1:  ldarg.0 
-	IL_01d2:  ldfld class [mscorlib]System.IO.FileStream Bless.Buffers.SaveInPlaceOperation::fs
-	IL_01d7:  ldloc.3 
-	IL_01d8:  ldc.i4.0 
-	IL_01d9:  ldloc.s 9
-	IL_01db:  callvirt instance void class [mscorlib]System.IO.Stream::Write(unsigned int8[], int32, int32)
-	IL_01e0:  ldloc.s 5
-	IL_01e2:  ldloc.s 6
-	IL_01e4:  callvirt instance int64 class Bless.Buffers.Segment::get_Size()
-	IL_01e9:  add 
-	IL_01ea:  stloc.s 5
-	IL_01ec:  ldloc.s 4
-	IL_01ee:  ldfld class [Bless.Util]Bless.Util.List`1/Node<!0> class [Bless.Util]Bless.Util.List`1/Node<class Bless.Buffers.Segment>::next
-	IL_01f3:  stloc.s 4
-	IL_01f5:  ldloc.s 4
-	IL_01f7:  brfalse IL_0207
+	IL_0011:  ret 
+	IL_0012:  ldarg.0 
+	IL_0013:  ldfld unsigned int8[] Bless.Buffers.SimpleBuffer::data
+	IL_0018:  ldarg.1 
+	IL_0019:  conv.ovf.i 
+	IL_001a:  ldarg.2 
+	IL_001b:  stelem.i1 
+	IL_001c:  ret 
+    } // end of method SimpleBuffer::set_Item
 
-	IL_01fc:  ldarg.0 
-	IL_01fd:  ldfld bool [Bless.Util]Bless.Util.ThreadedAsyncOperation::cancelled
-	IL_0202:  brfalse IL_00ad
+    // method line 195
+    .method public virtual hidebysig specialname 
+           instance default unsigned int8 get_Item (int64 index)  cil managed 
+    {
+        // Method begins at RVA 0x5202
+	// Code size 29 (0x1d)
+	.maxstack 8
+	IL_0000:  ldarg.1 
+	IL_0001:  ldarg.0 
+	IL_0002:  ldfld unsigned int8[] Bless.Buffers.SimpleBuffer::data
+	IL_0007:  callvirt instance int64 class [mscorlib]System.Array::get_LongLength()
+	IL_000c:  blt IL_0013
 
-	IL_0207:  ldarg.0 
-	IL_0208:  ldfld class [mscorlib]System.IO.FileStream Bless.Buffers.SaveInPlaceOperation::fs
-	IL_020d:  callvirt instance void class [mscorlib]System.IO.Stream::Close()
-	IL_0212:  ldarg.0 
-	IL_0213:  ldnull 
-	IL_0214:  stfld class [mscorlib]System.IO.FileStream Bless.Buffers.SaveInPlaceOperation::fs
-	IL_0219:  ret 
-    } // end of method SaveInPlaceOperation::DoOperation
+	IL_0011:  ldc.i4.0 
+	IL_0012:  ret 
+	IL_0013:  ldarg.0 
+	IL_0014:  ldfld unsigned int8[] Bless.Buffers.SimpleBuffer::data
+	IL_0019:  ldarg.1 
+	IL_001a:  conv.ovf.i 
+	IL_001b:  ldelem.u1 
+	IL_001c:  ret 
+    } // end of method SimpleBuffer::get_Item
 
-    // method line 198
-    .method family virtual hidebysig 
-           instance default void EndOperation ()  cil managed 
+    // method line 196
+    .method public virtual hidebysig specialname 
+           instance default int64 get_Size ()  cil managed 
     {
-        // Method begins at RVA 0x51fc
-	// Code size 30 (0x1e)
+        // Method begins at RVA 0x5220
+	// Code size 12 (0xc)
 	.maxstack 8
 	IL_0000:  ldarg.0 
-	IL_0001:  ldfld class [mscorlib]System.IO.FileStream Bless.Buffers.SaveInPlaceOperation::fs
-	IL_0006:  brfalse IL_001d
+	IL_0001:  ldfld unsigned int8[] Bless.Buffers.SimpleBuffer::data
+	IL_0006:  callvirt instance int64 class [mscorlib]System.Array::get_LongLength()
+	IL_000b:  ret 
+    } // end of method SimpleBuffer::get_Size
 
-	IL_000b:  ldarg.0 
-	IL_000c:  ldfld class [mscorlib]System.IO.FileStream Bless.Buffers.SaveInPlaceOperation::fs
-	IL_0011:  callvirt instance void class [mscorlib]System.IO.Stream::Close()
-	IL_0016:  ldarg.0 
-	IL_0017:  ldnull 
-	IL_0018:  stfld class [mscorlib]System.IO.FileStream Bless.Buffers.SaveInPlaceOperation::fs
-	IL_001d:  ret 
-    } // end of method SaveInPlaceOperation::EndOperation
+	.property instance unsigned int8 Item (int64)
+	{
+		.get instance default unsigned int8 Bless.Buffers.SimpleBuffer::get_Item (int64 index) 
+		.set instance default void Bless.Buffers.SimpleBuffer::set_Item (int64 index, unsigned int8 'value') 
+	}
+	.property instance int64 Size ()
+	{
+		.get instance default int64 Bless.Buffers.SimpleBuffer::get_Size () 
+	}
+  } // end of class Bless.Buffers.SimpleBuffer
+}
+
+.namespace Bless.Buffers
+{
+  .class interface public auto ansi abstract ISaveState
+  {
+
+    // method line 197
+    .method public virtual hidebysig newslot abstract specialname 
+           instance default valuetype [Bless.Util]Bless.Util.ThreadedAsyncOperation/OperationResult get_Result ()  cil managed 
+    {
+        // Method begins at RVA 0x0
+    } // end of method ISaveState::get_Result
+
+    // method line 198
+    .method public virtual hidebysig newslot abstract specialname 
+           instance default string get_SavePath ()  cil managed 
+    {
+        // Method begins at RVA 0x0
+    } // end of method ISaveState::get_SavePath
 
     // method line 199
-    .method private final virtual hidebysig newslot strict 
-           instance default valuetype [Bless.Util]Bless.Util.ThreadedAsyncOperation/OperationResult Bless.Buffers.ISaveState.get_Result ()  cil managed 
+    .method public virtual hidebysig newslot abstract specialname 
+           instance default class Bless.Buffers.ByteBuffer get_Buffer ()  cil managed 
     {
-        // Method begins at RVA 0x521b
-	.override Could not decode method override class Bless.Buffers.ISaveState::get_Result due to (null)
-	// Code size 7 (0x7)
-	.maxstack 8
-	IL_0000:  ldarg.0 
-	IL_0001:  call instance valuetype [Bless.Util]Bless.Util.ThreadedAsyncOperation/OperationResult class [Bless.Util]Bless.Util.ThreadedAsyncOperation::get_Result()
-	IL_0006:  ret 
-    } // end of method SaveInPlaceOperation::Bless.Buffers.ISaveState.get_Result
+        // Method begins at RVA 0x0
+    } // end of method ISaveState::get_Buffer
 
     // method line 200
-    .method private final virtual hidebysig newslot strict 
-           instance default class [mscorlib]System.Exception Bless.Buffers.ISaveState.get_ThreadException ()  cil managed 
+    .method public virtual hidebysig newslot abstract specialname 
+           instance default class [mscorlib]System.Exception get_ThreadException ()  cil managed 
     {
-        // Method begins at RVA 0x5223
-	.override Could not decode method override class Bless.Buffers.ISaveState::get_ThreadException due to (null)
-	// Code size 7 (0x7)
-	.maxstack 8
-	IL_0000:  ldarg.0 
-	IL_0001:  call instance class [mscorlib]System.Exception class [Bless.Util]Bless.Util.ThreadedAsyncOperation::get_ThreadException()
-	IL_0006:  ret 
-    } // end of method SaveInPlaceOperation::Bless.Buffers.ISaveState.get_ThreadException
+        // Method begins at RVA 0x0
+    } // end of method ISaveState::get_ThreadException
 
-	.property instance class Bless.Buffers.ByteBuffer Buffer ()
+	.property instance valuetype [Bless.Util]Bless.Util.ThreadedAsyncOperation/OperationResult Result ()
 	{
-		.get instance default class Bless.Buffers.ByteBuffer Bless.Buffers.SaveInPlaceOperation::get_Buffer () 
+		.get instance default valuetype [Bless.Util]Bless.Util.ThreadedAsyncOperation/OperationResult Bless.Buffers.ISaveState::get_Result () 
 	}
 	.property instance string SavePath ()
 	{
-		.get instance default string Bless.Buffers.SaveInPlaceOperation::get_SavePath () 
-		.set instance default void Bless.Buffers.SaveInPlaceOperation::set_SavePath (string 'value') 
+		.get instance default string Bless.Buffers.ISaveState::get_SavePath () 
 	}
-	.property instance int64 BytesSaved ()
+	.property instance class Bless.Buffers.ByteBuffer Buffer ()
 	{
-		.get instance default int64 Bless.Buffers.SaveInPlaceOperation::get_BytesSaved () 
+		.get instance default class Bless.Buffers.ByteBuffer Bless.Buffers.ISaveState::get_Buffer () 
 	}
-	.property instance valuetype Bless.Buffers.SaveInPlaceOperation/SaveInPlaceStage StageReached ()
+	.property instance class [mscorlib]System.Exception ThreadException ()
 	{
-		.get instance default valuetype Bless.Buffers.SaveInPlaceOperation/SaveInPlaceStage Bless.Buffers.SaveInPlaceOperation::get_StageReached () 
+		.get instance default class [mscorlib]System.Exception Bless.Buffers.ISaveState::get_ThreadException () 
 	}
-  .class nested public auto ansi sealed SaveInPlaceStage
-  	extends [mscorlib]System.Enum
-  {
-    .field  public specialname rtspecialname  int32 value__
-    .field public static literal  valuetype Bless.Buffers.SaveInPlaceOperation/SaveInPlaceStage BeforeClose = int32(0x00000000)
-    .field public static literal  valuetype Bless.Buffers.SaveInPlaceOperation/SaveInPlaceStage BeforeWrite = int32(0x00000001)
-
-  } // end of class SaveInPlaceStage
-
-  } // end of class Bless.Buffers.SaveInPlaceOperation
+  } // end of class Bless.Buffers.ISaveState
 }
 
PE32 Mono/.Net assembly: /usr/lib64/bless/Bless.Gui.Areas.Plugins.dll
/usr/lib64/bless/Bless.Gui.Areas.Plugins.dll differs (PE32 executable (DLL) (console) Intel 80386, Mono/.Net assembly, for MS Windows)
--- old /usr/lib64/bless/Bless.Gui.Areas.Plugins.dll (monodis)
+++ new /usr/lib64/bless/Bless.Gui.Areas.Plugins.dll (monodis)
@@ -11,19 +11,10 @@
 {
   .ver 0:0:0:0
 }
-.assembly extern Bless.Gui.Drawers
-{
-  .ver 0:0:0:0
-}
 .assembly extern Bless.Buffers
 {
   .ver 0:0:0:0
 }
-.assembly extern System.Xml
-{
-  .ver 4:0:0:0
-  .publickeytoken = (B7 7A 5C 56 19 34 E0 89 ) // .z\V.4..
-}
 .assembly extern mscorlib
 {
   .ver 4:0:0:0
@@ -34,6 +25,15 @@
   .ver 2:12:0:0
   .publickeytoken = (35 E1 01 95 DA B3 C9 9F ) // 5.......
 }
+.assembly extern Bless.Gui.Drawers
+{
+  .ver 0:0:0:0
+}
+.assembly extern System.Xml
+{
+  .ver 4:0:0:0
+  .publickeytoken = (B7 7A 5C 56 19 34 E0 89 ) // .z\V.4..
+}
 .assembly 'Bless.Gui.Areas.Plugins'
 {
   .custom instance void class [mscorlib]System.Runtime.CompilerServices.RuntimeCompatibilityAttribute::'.ctor'() =  (
@@ -48,7 +48,7 @@
 
 .namespace Bless.Gui.Areas.Plugins
 {
-  .class public auto ansi beforefieldinit OffsetAreaPlugin
+  .class public auto ansi beforefieldinit OctalAreaPlugin
   	extends [Bless.Plugins]Bless.Plugins.AreaPlugin
   {
 
@@ -62,13 +62,13 @@
 	IL_0000:  ldarg.0 
 	IL_0001:  call instance void class [Bless.Plugins]Bless.Plugins.AreaPlugin::'.ctor'()
 	IL_0006:  ldarg.0 
-	IL_0007:  ldstr "offset"
+	IL_0007:  ldstr "octal"
 	IL_000c:  stfld string [Bless.Plugins]Bless.Plugins.Plugin::name
 	IL_0011:  ldarg.0 
 	IL_0012:  ldstr "Alexandros Frantzis"
 	IL_0017:  stfld string [Bless.Plugins]Bless.Plugins.Plugin::author
 	IL_001c:  ret 
-    } // end of method OffsetAreaPlugin::.ctor
+    } // end of method OctalAreaPlugin::.ctor
 
     // method line 2
     .method public virtual hidebysig 
@@ -78,224 +78,375 @@
 	// Code size 7 (0x7)
 	.maxstack 8
 	IL_0000:  ldarg.1 
-	IL_0001:  newobj instance void class Bless.Gui.Areas.Plugins.OffsetArea::'.ctor'(class [Bless.Gui.Areas]Bless.Gui.Areas.AreaGroup)
+	IL_0001:  newobj instance void class Bless.Gui.Areas.Plugins.OctalArea::'.ctor'(class [Bless.Gui.Areas]Bless.Gui.Areas.AreaGroup)
 	IL_0006:  ret 
-    } // end of method OffsetAreaPlugin::CreateArea
+    } // end of method OctalAreaPlugin::CreateArea
 
-  } // end of class Bless.Gui.Areas.Plugins.OffsetAreaPlugin
+  } // end of class Bless.Gui.Areas.Plugins.OctalAreaPlugin
 }
 
 .namespace Bless.Gui.Areas.Plugins
 {
-  .class public auto ansi beforefieldinit OffsetArea
-  	extends [Bless.Gui.Areas]Bless.Gui.Areas.Area
+  .class public auto ansi beforefieldinit OctalArea
+  	extends Bless.Gui.Areas.Plugins.GroupedArea
   {
-    .field  private  int32 bytes
 
     // method line 3
     .method public hidebysig specialname rtspecialname 
            instance default void '.ctor' (class [Bless.Gui.Areas]Bless.Gui.Areas.AreaGroup ag)  cil managed 
     {
-        // Method begins at RVA 0x2076
+        // Method begins at RVA 0x263c
 	// Code size 26 (0x1a)
 	.maxstack 8
 	IL_0000:  ldarg.0 
 	IL_0001:  ldarg.1 
-	IL_0002:  call instance void class [Bless.Gui.Areas]Bless.Gui.Areas.Area::'.ctor'(class [Bless.Gui.Areas]Bless.Gui.Areas.AreaGroup)
+	IL_0002:  call instance void class Bless.Gui.Areas.Plugins.GroupedArea::'.ctor'(class [Bless.Gui.Areas]Bless.Gui.Areas.AreaGroup)
 	IL_0007:  ldarg.0 
-	IL_0008:  ldstr "offset"
+	IL_0008:  ldstr "octal"
 	IL_000d:  stfld string [Bless.Gui.Areas]Bless.Gui.Areas.Area::'type'
 	IL_0012:  ldarg.0 
-	IL_0013:  ldc.i4.4 
-	IL_0014:  stfld int32 Bless.Gui.Areas.Plugins.OffsetArea::bytes
+	IL_0013:  ldc.i4.3 
+	IL_0014:  stfld int32 [Bless.Gui.Areas]Bless.Gui.Areas.Area::dpb
 	IL_0019:  ret 
-    } // end of method OffsetArea::.ctor
+    } // end of method OctalArea::.ctor
 
     // method line 4
-    .method public hidebysig specialname 
-           instance default int32 get_Bytes ()  cil managed 
+    .method public virtual hidebysig 
+           (null) cil managed 
     {
-        // Method begins at RVA 0x2091
-	// Code size 7 (0x7)
+        // Method begins at RVA 0x2658
+	// Code size 465 (0x1d1)
+	.maxstack 5
+	.locals init (
+		unsigned int8	V_0,
+		unsigned int8	V_1,
+		unsigned int8	V_2,
+		unsigned int8	V_3,
+		unsigned int8	V_4,
+		int32	V_5,
+		unsigned int8[]	V_6)
+	IL_0000:  ldarg.1 
+	IL_0001:  ldc.i4.s 0x30
+	IL_0003:  blt IL_0010
+
+	IL_0008:  ldarg.1 
+	IL_0009:  ldc.i4.s 0x37
+	IL_000b:  ble IL_0026
+
+	IL_0010:  ldarg.1 
+	IL_0011:  ldc.i4 65456
+	IL_0016:  blt IL_01cf
+
+	IL_001b:  ldarg.1 
+	IL_001c:  ldc.i4 65463
+	IL_0021:  bgt IL_01cf
+
+	IL_0026:  ldarg.1 
+	IL_0027:  ldc.i4.s 0x30
+	IL_0029:  blt IL_0041
+
+	IL_002e:  ldarg.1 
+	IL_002f:  ldc.i4.s 0x37
+	IL_0031:  bgt IL_0041
+
+	IL_0036:  ldarg.1 
+	IL_0037:  ldc.i4.s 0x30
+	IL_0039:  sub 
+	IL_003a:  conv.u1 
+	IL_003b:  stloc.0 
+	IL_003c:  br IL_004a
+
+	IL_0041:  ldarg.1 
+	IL_0042:  ldc.i4 65456
+	IL_0047:  sub 
+	IL_0048:  conv.u1 
+	IL_0049:  stloc.0 
+	IL_004a:  ldarg.0 
+	IL_004b:  ldfld class [Bless.Gui.Areas]Bless.Gui.Areas.AreaGroup [Bless.Gui.Areas]Bless.Gui.Areas.Area::areaGroup
+	IL_0050:  callvirt instance int64 class [Bless.Gui.Areas]Bless.Gui.Areas.AreaGroup::get_CursorOffset()
+	IL_0055:  ldarg.0 
+	IL_0056:  ldfld class [Bless.Gui.Areas]Bless.Gui.Areas.AreaGroup [Bless.Gui.Areas]Bless.Gui.Areas.Area::areaGroup
+	IL_005b:  callvirt instance class [Bless.Buffers]Bless.Buffers.ByteBuffer class [Bless.Gui.Areas]Bless.Gui.Areas.AreaGroup::get_Buffer()
+	IL_0060:  callvirt instance int64 class [Bless.Buffers]Bless.Buffers.BaseBuffer::get_Size()
+	IL_0065:  beq IL_0080
+
+	IL_006a:  ldarg.2 
+	IL_006b:  brtrue IL_0087
+
+	IL_0070:  ldarg.0 
+	IL_0071:  ldfld class [Bless.Gui.Areas]Bless.Gui.Areas.AreaGroup [Bless.Gui.Areas]Bless.Gui.Areas.Area::areaGroup
+	IL_0076:  callvirt instance int32 class [Bless.Gui.Areas]Bless.Gui.Areas.AreaGroup::get_CursorDigit()
+	IL_007b:  brtrue IL_0087
+
+	IL_0080:  ldc.i4.0 
+	IL_0081:  stloc.1 
+	IL_0082:  br IL_00a3
+
+	IL_0087:  ldarg.0 
+	IL_0088:  ldfld class [Bless.Gui.Areas]Bless.Gui.Areas.AreaGroup [Bless.Gui.Areas]Bless.Gui.Areas.Area::areaGroup
+	IL_008d:  callvirt instance class [Bless.Buffers]Bless.Buffers.ByteBuffer class [Bless.Gui.Areas]Bless.Gui.Areas.AreaGroup::get_Buffer()
+	IL_0092:  ldarg.0 
+	IL_0093:  ldfld class [Bless.Gui.Areas]Bless.Gui.Areas.AreaGroup [Bless.Gui.Areas]Bless.Gui.Areas.Area::areaGroup
+	IL_0098:  callvirt instance int64 class [Bless.Gui.Areas]Bless.Gui.Areas.AreaGroup::get_CursorOffset()
+	IL_009d:  callvirt instance unsigned int8 class [Bless.Buffers]Bless.Buffers.BaseBuffer::get_Item(int64)
+	IL_00a2:  stloc.1 
+	IL_00a3:  ldloc.1 
+	IL_00a4:  ldc.i4.8 
+	IL_00a5:  rem 
+	IL_00a6:  conv.u1 
+	IL_00a7:  stloc.2 
+	IL_00a8:  ldloc.1 
+	IL_00a9:  ldc.i4.8 
+	IL_00aa:  div 
+	IL_00ab:  ldc.i4.8 
+	IL_00ac:  rem 
+	IL_00ad:  conv.u1 
+	IL_00ae:  stloc.3 
+	IL_00af:  ldloc.1 
+	IL_00b0:  ldc.i4.s 0x40
+	IL_00b2:  div 
+	IL_00b3:  ldc.i4.8 
+	IL_00b4:  rem 
+	IL_00b5:  conv.u1 
+	IL_00b6:  stloc.s 4
+	IL_00b8:  ldarg.0 
+	IL_00b9:  ldfld class [Bless.Gui.Areas]Bless.Gui.Areas.AreaGroup [Bless.Gui.Areas]Bless.Gui.Areas.Area::areaGroup
+	IL_00be:  callvirt instance int32 class [Bless.Gui.Areas]Bless.Gui.Areas.AreaGroup::get_CursorDigit()
+	IL_00c3:  brtrue IL_00d0
+
+	IL_00c8:  ldloc.0 
+	IL_00c9:  stloc.s 4
+	IL_00cb:  br IL_00fb
+
+	IL_00d0:  ldarg.0 
+	IL_00d1:  ldfld class [Bless.Gui.Areas]Bless.Gui.Areas.AreaGroup [Bless.Gui.Areas]Bless.Gui.Areas.Area::areaGroup
+	IL_00d6:  callvirt instance int32 class [Bless.Gui.Areas]Bless.Gui.Areas.AreaGroup::get_CursorDigit()
+	IL_00db:  ldc.i4.1 
+	IL_00dc:  bne.un IL_00e8
+
+	IL_00e1:  ldloc.0 
+	IL_00e2:  stloc.3 
+	IL_00e3:  br IL_00fb
+
+	IL_00e8:  ldarg.0 
+	IL_00e9:  ldfld class [Bless.Gui.Areas]Bless.Gui.Areas.AreaGroup [Bless.Gui.Areas]Bless.Gui.Areas.Area::areaGroup
+	IL_00ee:  callvirt instance int32 class [Bless.Gui.Areas]Bless.Gui.Areas.AreaGroup::get_CursorDigit()
+	IL_00f3:  ldc.i4.2 
+	IL_00f4:  bne.un IL_00fb
+
+	IL_00f9:  ldloc.0 
+	IL_00fa:  stloc.2 
+	IL_00fb:  ldloc.s 4
+	IL_00fd:  ldc.i4.s 0x40
+	IL_00ff:  mul 
+	IL_0100:  ldloc.3 
+	IL_0101:  ldc.i4.8 
+	IL_0102:  mul 
+	IL_0103:  add 
+	IL_0104:  ldloc.2 
+	IL_0105:  add 
+	IL_0106:  stloc.s 5
+	IL_0108:  ldloc.s 5
+	IL_010a:  ldc.i4 255
+	IL_010f:  ble IL_0116
+
+	IL_0114:  ldc.i4.0 
+	IL_0115:  ret 
+	IL_0116:  ldc.i4.1 
+	IL_0117:  newarr [mscorlib]System.Byte
+	IL_011c:  dup 
+	IL_011d:  ldc.i4.0 
+	IL_011e:  ldloc.s 5
+	IL_0120:  conv.u1 
+	IL_0121:  stelem.i1 
+	IL_0122:  stloc.s 6
+	IL_0124:  ldarg.0 
+	IL_0125:  ldfld class [Bless.Gui.Areas]Bless.Gui.Areas.AreaGroup [Bless.Gui.Areas]Bless.Gui.Areas.Area::areaGroup
+	IL_012a:  callvirt instance int64 class [Bless.Gui.Areas]Bless.Gui.Areas.AreaGroup::get_CursorOffset()
+	IL_012f:  ldarg.0 
+	IL_0130:  ldfld class [Bless.Gui.Areas]Bless.Gui.Areas.AreaGroup [Bless.Gui.Areas]Bless.Gui.Areas.Area::areaGroup
+	IL_0135:  callvirt instance class [Bless.Buffers]Bless.Buffers.ByteBuffer class [Bless.Gui.Areas]Bless.Gui.Areas.AreaGroup::get_Buffer()
+	IL_013a:  callvirt instance int64 class [Bless.Buffers]Bless.Buffers.BaseBuffer::get_Size()
+	IL_013f:  bne.un IL_0164
+
+	IL_0144:  ldarg.0 
+	IL_0145:  ldfld class [Bless.Gui.Areas]Bless.Gui.Areas.AreaGroup [Bless.Gui.Areas]Bless.Gui.Areas.Area::areaGroup
+	IL_014a:  callvirt instance class [Bless.Buffers]Bless.Buffers.ByteBuffer class [Bless.Gui.Areas]Bless.Gui.Areas.AreaGroup::get_Buffer()
+	IL_014f:  ldloc.s 6
+	IL_0151:  ldc.i4.0 
+	IL_0152:  conv.i8 
+	IL_0153:  ldloc.s 6
+	IL_0155:  callvirt instance int64 class [mscorlib]System.Array::get_LongLength()
+	IL_015a:  callvirt instance void class [Bless.Buffers]Bless.Buffers.BaseBuffer::Append(unsigned int8[], int64, int64)
+	IL_015f:  br IL_01cd
+
+	IL_0164:  ldarg.2 
+	IL_0165:  brtrue IL_01a5
+
+	IL_016a:  ldarg.0 
+	IL_016b:  ldfld class [Bless.Gui.Areas]Bless.Gui.Areas.AreaGroup [Bless.Gui.Areas]Bless.Gui.Areas.Area::areaGroup
+	IL_0170:  callvirt instance int32 class [Bless.Gui.Areas]Bless.Gui.Areas.AreaGroup::get_CursorDigit()
+	IL_0175:  brtrue IL_01a5
+
+	IL_017a:  ldarg.0 
+	IL_017b:  ldfld class [Bless.Gui.Areas]Bless.Gui.Areas.AreaGroup [Bless.Gui.Areas]Bless.Gui.Areas.Area::areaGroup
+	IL_0180:  callvirt instance class [Bless.Buffers]Bless.Buffers.ByteBuffer class [Bless.Gui.Areas]Bless.Gui.Areas.AreaGroup::get_Buffer()
+	IL_0185:  ldarg.0 
+	IL_0186:  ldfld class [Bless.Gui.Areas]Bless.Gui.Areas.AreaGroup [Bless.Gui.Areas]Bless.Gui.Areas.Area::areaGroup
+	IL_018b:  callvirt instance int64 class [Bless.Gui.Areas]Bless.Gui.Areas.AreaGroup::get_CursorOffset()
+	IL_0190:  ldloc.s 6
+	IL_0192:  ldc.i4.0 
+	IL_0193:  conv.i8 
+	IL_0194:  ldloc.s 6
+	IL_0196:  callvirt instance int64 class [mscorlib]System.Array::get_LongLength()
+	IL_019b:  callvirt instance void class [Bless.Buffers]Bless.Buffers.BaseBuffer::Insert(int64, unsigned int8[], int64, int64)
+	IL_01a0:  br IL_01cd
+
+	IL_01a5:  ldarg.0 
+	IL_01a6:  ldfld class [Bless.Gui.Areas]Bless.Gui.Areas.AreaGroup [Bless.Gui.Areas]Bless.Gui.Areas.Area::areaGroup
+	IL_01ab:  callvirt instance class [Bless.Buffers]Bless.Buffers.ByteBuffer class [Bless.Gui.Areas]Bless.Gui.Areas.AreaGroup::get_Buffer()
+	IL_01b0:  ldarg.0 
+	IL_01b1:  ldfld class [Bless.Gui.Areas]Bless.Gui.Areas.AreaGroup [Bless.Gui.Areas]Bless.Gui.Areas.Area::areaGroup
+	IL_01b6:  callvirt instance int64 class [Bless.Gui.Areas]Bless.Gui.Areas.AreaGroup::get_CursorOffset()
+	IL_01bb:  ldarg.0 
+	IL_01bc:  ldfld class [Bless.Gui.Areas]Bless.Gui.Areas.AreaGroup [Bless.Gui.Areas]Bless.Gui.Areas.Area::areaGroup
+	IL_01c1:  callvirt instance int64 class [Bless.Gui.Areas]Bless.Gui.Areas.AreaGroup::get_CursorOffset()
+	IL_01c6:  ldloc.s 6
+	IL_01c8:  callvirt instance void class [Bless.Buffers]Bless.Buffers.ByteBuffer::Replace(int64, int64, unsigned int8[])
+	IL_01cd:  ldc.i4.1 
+	IL_01ce:  ret 
+	IL_01cf:  ldc.i4.0 
+	IL_01d0:  ret 
+    } // end of method OctalArea::<NULL METHOD SIGNATURE>
+
+    // method line 5
+    .method public virtual hidebysig 
+           instance default void Realize ()  cil managed 
+    {
+        // Method begins at RVA 0x2838
+    } // end of method OctalArea::Realize
+
+  } // end of class Bless.Gui.Areas.Plugins.OctalArea
+}
+
+.namespace Bless.Gui.Areas.Plugins
+{
+  .class public auto ansi beforefieldinit AsciiAreaPlugin
+  	extends [Bless.Plugins]Bless.Plugins.AreaPlugin
+  {
+
+    // method line 6
+    .method public hidebysig specialname rtspecialname 
+           instance default void '.ctor' ()  cil managed 
+    {
+        // Method begins at RVA 0x2869
+	// Code size 29 (0x1d)
 	.maxstack 8
 	IL_0000:  ldarg.0 
-	IL_0001:  ldfld int32 Bless.Gui.Areas.Plugins.OffsetArea::bytes
+	IL_0001:  call instance void class [Bless.Plugins]Bless.Plugins.AreaPlugin::'.ctor'()
+	IL_0006:  ldarg.0 
+	IL_0007:  ldstr "ascii"
+	IL_000c:  stfld string [Bless.Plugins]Bless.Plugins.Plugin::name
+	IL_0011:  ldarg.0 
+	IL_0012:  ldstr "Alexandros Frantzis"
+	IL_0017:  stfld string [Bless.Plugins]Bless.Plugins.Plugin::author
+	IL_001c:  ret 
+    } // end of method AsciiAreaPlugin::.ctor
+
+    // method line 7
+    .method public virtual hidebysig 
+           instance default class [Bless.Gui.Areas]Bless.Gui.Areas.Area CreateArea (class [Bless.Gui.Areas]Bless.Gui.Areas.AreaGroup ag)  cil managed 
+    {
+        // Method begins at RVA 0x2887
+	// Code size 7 (0x7)
+	.maxstack 8
+	IL_0000:  ldarg.1 
+	IL_0001:  newobj instance void class Bless.Gui.Areas.Plugins.AsciiArea::'.ctor'(class [Bless.Gui.Areas]Bless.Gui.Areas.AreaGroup)
 	IL_0006:  ret 
-    } // end of method OffsetArea::get_Bytes
+    } // end of method AsciiAreaPlugin::CreateArea
 
-    // method line 5
-    .method public hidebysig specialname 
-           instance default void set_Bytes (int32 'value')  cil managed 
+  } // end of class Bless.Gui.Areas.Plugins.AsciiAreaPlugin
+}
+
+.namespace Bless.Gui.Areas.Plugins
+{
+  .class public auto ansi beforefieldinit AsciiArea
+  	extends [Bless.Gui.Areas]Bless.Gui.Areas.Area
+  {
+
+    // method line 8
+    .method public hidebysig specialname rtspecialname 
+           instance default void '.ctor' (class [Bless.Gui.Areas]Bless.Gui.Areas.AreaGroup ag)  cil managed 
     {
-        // Method begins at RVA 0x2099
-	// Code size 8 (0x8)
+        // Method begins at RVA 0x288f
+	// Code size 33 (0x21)
 	.maxstack 8
 	IL_0000:  ldarg.0 
 	IL_0001:  ldarg.1 
-	IL_0002:  stfld int32 Bless.Gui.Areas.Plugins.OffsetArea::bytes
-	IL_0007:  ret 
-    } // end of method OffsetArea::set_Bytes
+	IL_0002:  call Invalid type Bless.Gui.Areas.AreaGroup for instance field Bless.Gui.Areas.Area:areaGroup
+instance void class [Bless.Gui.Areas]Bless.Gui.Areas.Area::'.ctor'(class [Bless.Gui.Areas]Bless.Gui.Areas.AreaGroup)
+	IL_0007:  ldarg.0 
+	IL_0008:  ldstr "ascii"
+	IL_000d:  stfld string [Bless.Gui.Areas]Bless.Gui.Areas.Area::'type'
+	IL_0012:  ldarg.0 
+	IL_0013:  ldc.i4.1 
+	IL_0014:  stfld int32 [Bless.Gui.Areas]Bless.Gui.Areas.Area::dpb
+	IL_0019:  ldarg.0 
+	IL_001a:  ldc.i4.1 
+	IL_001b:  stfld bool [Bless.Gui.Areas]Bless.Gui.Areas.Area::canFocus
+	IL_0020:  ret 
+    } // end of method AsciiArea::.ctor
 
-    // method line 6
+    // method line 9
     .method family virtual hidebysig 
-           instance default void RenderExtra ()  cil managed 
+           instance default void RenderRowNormal (int32 i, int32 p, int32 n, bool blank)  cil managed 
     {
-        // Method begins at RVA 0x20a4
-	// Code size 184 (0xb8)
-	.maxstack 5
-	.locals init (
-		int32	V_0,
-		int64	V_1,
-		int32	V_2,
-		int32	V_3,
-		int32	V_4)
+        // Method begins at RVA 0x28b4
+    } // end of method AsciiArea::RenderRowNormal
+
+    // method line 10
+    .method family virtual hidebysig 
+           instance default void RenderRowHighlight (int32 i, int32 p, int32 n, bool blank, valuetype [Bless.Gui.Drawers]Bless.Gui.Drawers.Drawer/HighlightType ht)  cil managed 
+    {
+        // Method begins at RVA 0x29e8
+    } // end of method AsciiArea::RenderRowHighlight
+
+    // method line 11
+    .method public virtual hidebysig 
+           instance default int32 CalcWidth (int32 n, bool force)  cil managed 
+    {
+        // Method begins at RVA 0x2b1d
+	// Code size 46 (0x2e)
+	.maxstack 8
 	IL_0000:  ldarg.0 
-	IL_0001:  ldfld int32 [Bless.Gui.Areas]Bless.Gui.Areas.Area::bpr
+	IL_0001:  ldfld int32 [Bless.Gui.Areas]Bless.Gui.Areas.Area::fixedBpr
 	IL_0006:  ldc.i4.0 
-	IL_0007:  bgt IL_000d
+	IL_0007:  ble IL_0020
 
-	IL_000c:  ret 
+	IL_000c:  ldarg.1 
 	IL_000d:  ldarg.0 
-	IL_000e:  ldfld int32 [Bless.Gui.Areas]Bless.Gui.Areas.Area::height
-	IL_0013:  ldarg.0 
-	IL_0014:  ldfld class [Bless.Gui.Drawers]Bless.Gui.Drawers.Drawer [Bless.Gui.Areas]Bless.Gui.Areas.Area::drawer
-	IL_0019:  callvirt instance int32 class [Bless.Gui.Drawers]Bless.Gui.Drawers.Drawer::get_Height()
-	IL_001e:  div 
-	IL_001f:  stloc.0 
-	IL_0020:  ldloc.0 
+	IL_000e:  ldfld int32 [Bless.Gui.Areas]Bless.Gui.Areas.Area::fixedBpr
+	IL_0013:  ble IL_0020
+
+	IL_0018:  ldarg.2 
+	IL_0019:  brtrue IL_0020
+
+	IL_001e:  ldc.i4.m1 
+	IL_001f:  ret 
+	IL_0020:  ldarg.1 
 	IL_0021:  ldarg.0 
-	IL_0022:  ldfld int32 [Bless.Gui.Areas]Bless.Gui.Areas.Area::bpr
-	IL_0027:  mul 
-	IL_0028:  conv.i8 
-	IL_0029:  stloc.1 
-	IL_002a:  ldc.i4.0 
-	IL_002b:  stloc.2 
-	IL_002c:  ldc.i4.0 
-	IL_002d:  stloc.3 
-	IL_002e:  ldloc.1 
-	IL_002f:  ldarg.0 
-	IL_0030:  ldfld class [Bless.Gui.Areas]Bless.Gui.Areas.AreaGroup [Bless.Gui.Areas]Bless.Gui.Areas.Area::areaGroup
-	IL_0035:  callvirt instance int64 class [Bless.Gui.Areas]Bless.Gui.Areas.AreaGroup::get_Offset()
-	IL_003a:  add 
-	IL_003b:  ldarg.0 
-	IL_003c:  ldfld class [Bless.Gui.Areas]Bless.Gui.Areas.AreaGroup [Bless.Gui.Areas]Bless.Gui.Areas.Area::areaGroup
-	IL_0041:  callvirt instance class [Bless.Buffers]Bless.Buffers.ByteBuffer class [Bless.Gui.Areas]Bless.Gui.Areas.AreaGroup::get_Buffer()
-	IL_0046:  callvirt instance int64 class [Bless.Buffers]Bless.Buffers.BaseBuffer::get_Size()
-	IL_004b:  ble IL_0070
+	IL_0022:  ldfld class [Bless.Gui.Drawers]Bless.Gui.Drawers.Drawer [Bless.Gui.Areas]Bless.Gui.Areas.Area::drawer
+	IL_0027:  callvirt instance int32 class [Bless.Gui.Drawers]Bless.Gui.Drawers.Drawer::get_Width()
+	IL_002c:  mul 
+	IL_002d:  ret 
+    } // end of method AsciiArea::CalcWidth
 
-	IL_0050:  ldarg.0 
-	IL_0051:  ldfld class [Bless.Gui.Areas]Bless.Gui.Areas.AreaGroup [Bless.Gui.Areas]Bless.Gui.Areas.Area::areaGroup
-	IL_0056:  callvirt instance class [Bless.Buffers]Bless.Buffers.ByteBuffer class [Bless.Gui.Areas]Bless.Gui.Areas.AreaGroup::get_Buffer()
-	IL_005b:  callvirt instance int64 class [Bless.Buffers]Bless.Buffers.BaseBuffer::get_Size()
-	IL_0060:  ldarg.0 
-	IL_0061:  ldfld class [Bless.Gui.Areas]Bless.Gui.Areas.AreaGroup [Bless.Gui.Areas]Bless.Gui.Areas.Area::areaGroup
-	IL_0066:  callvirt instance int64 class [Bless.Gui.Areas]Bless.Gui.Areas.AreaGroup::get_Offset()
-	IL_006b:  sub 
-	IL_006c:  ldc.i4.1 
-	IL_006d:  conv.i8 
-	IL_006e:  add 
-	IL_006f:  stloc.1 
-	IL_0070:  ldloc.1 
-	IL_0071:  ldarg.0 
-	IL_0072:  ldfld int32 [Bless.Gui.Areas]Bless.Gui.Areas.Area::bpr
-	IL_0077:  conv.i8 
-	IL_0078:  div 
-	IL_0079:  conv.i4 
-	IL_007a:  stloc.2 
-	IL_007b:  ldloc.1 
-	IL_007c:  ldarg.0 
-	IL_007d:  ldfld int32 [Bless.Gui.Areas]Bless.Gui.Areas.Area::bpr
-	IL_0082:  conv.i8 
-	IL_0083:  rem 
-	IL_0084:  conv.i4 
-	IL_0085:  stloc.3 
-	IL_0086:  ldloc.3 
-	IL_0087:  ldc.i4.0 
-	IL_0088:  ble IL_0091
-
-	IL_008d:  ldloc.2 
-	IL_008e:  ldc.i4.1 
-	IL_008f:  add 
-	IL_0090:  stloc.2 
-	IL_0091:  ldc.i4.0 
-	IL_0092:  stloc.s 4
-	IL_0094:  br IL_00af
-
-	IL_0099:  ldarg.0 
-	IL_009a:  ldloc.s 4
-	IL_009c:  ldc.i4.0 
-	IL_009d:  ldarg.0 
-	IL_009e:  ldfld int32 [Bless.Gui.Areas]Bless.Gui.Areas.Area::bpr
-	IL_00a3:  ldc.i4.1 
-	IL_00a4:  callvirt instance void class [Bless.Gui.Areas]Bless.Gui.Areas.Area::RenderRowNormal(int32, int32, int32, bool)
-	IL_00a9:  ldloc.s 4
-	IL_00ab:  ldc.i4.1 
-	IL_00ac:  add 
-	IL_00ad:  stloc.s 4
-	IL_00af:  ldloc.s 4
-	IL_00b1:  ldloc.2 
-	IL_00b2:  blt IL_0099
-
-	IL_00b7:  ret 
-    } // end of method OffsetArea::RenderExtra
-
-    // method line 7
-    .method family virtual hidebysig 
-           instance default void RenderHighlight (class [Bless.Gui.Areas]Bless.Gui.Areas.Highlight h, valuetype [Bless.Gui.Drawers]Bless.Gui.Drawers.Drawer/HighlightType left, valuetype [Bless.Gui.Drawers]Bless.Gui.Drawers.Drawer/HighlightType right)  cil managed 
-    {
-        // Method begins at RVA 0x2168
-	// Code size 1 (0x1)
-	.maxstack 8
-	IL_0000:  ret 
-    } // end of method OffsetArea::RenderHighlight
-
-    // method line 8
-    .method family virtual hidebysig 
-           instance default void RenderRowNormal (int32 i, int32 p, int32 n, bool blank)  cil managed 
-    {
-        // Method begins at RVA 0x216c
-    } // end of method OffsetArea::RenderRowNormal
-
-    // method line 9
-    .method family virtual hidebysig 
-           instance default void RenderRowHighlight (int32 i, int32 p, int32 n, bool blank, valuetype [Bless.Gui.Drawers]Bless.Gui.Drawers.Drawer/HighlightType ht)  cil managed 
-    {
-        // Method begins at RVA 0x22b7
-	// Code size 12 (0xc)
-	.maxstack 8
-	IL_0000:  ldarg.0 
-	IL_0001:  ldarg.1 
-	IL_0002:  ldarg.2 
-	IL_0003:  ldarg.3 
-	IL_0004:  ldarg.s 4
-	IL_0006:  callvirt instance void class [Bless.Gui.Areas]Bless.Gui.Areas.Area::RenderRowNormal(int32, int32, int32, bool)
-	IL_000b:  ret 
-    } // end of method OffsetArea::RenderRowHighlight
-
-    // method line 10
-    .method public virtual hidebysig 
-           instance default int32 CalcWidth (int32 n, bool force)  cil managed 
-    {
-        // Method begins at RVA 0x22c4
-	// Code size 21 (0x15)
-	.maxstack 8
-	IL_0000:  ldc.i4.2 
-	IL_0001:  ldarg.0 
-	IL_0002:  ldfld int32 Bless.Gui.Areas.Plugins.OffsetArea::bytes
-	IL_0007:  mul 
-	IL_0008:  ldarg.0 
-	IL_0009:  ldfld class [Bless.Gui.Drawers]Bless.Gui.Drawers.Drawer [Bless.Gui.Areas]Bless.Gui.Areas.Area::drawer
-	IL_000e:  callvirt instance int32 class [Bless.Gui.Drawers]Bless.Gui.Drawers.Drawer::get_Width()
-	IL_0013:  mul 
-	IL_0014:  ret 
-    } // end of method OffsetArea::CalcWidth
-
-    // method line 11
+    // method line 12
     .method public virtual hidebysig 
            instance default void GetDisplayInfoByOffset (int64 'off', [out] int32& orow, [out] int32& obyte, [out] int32& ox, [out] int32& oy)  cil managed 
     {
-        // Method begins at RVA 0x22dc
-	// Code size 70 (0x46)
+        // Method begins at RVA 0x2b4c
+	// Code size 83 (0x53)
 	.maxstack 3
 	IL_0000:  ldarg.2 
 	IL_0001:  ldarg.1 
@@ -330,21 +481,27 @@
 	IL_003f:  mul 
 	IL_0040:  stind.i4 
 	IL_0041:  ldarg.s 4
-	IL_0043:  ldc.i4.0 
-	IL_0044:  stind.i4 
-	IL_0045:  ret 
-    } // end of method OffsetArea::GetDisplayInfoByOffset
+	IL_0043:  ldarg.3 
+	IL_0044:  ldind.i4 
+	IL_0045:  ldarg.0 
+	IL_0046:  ldfld class [Bless.Gui.Drawers]Bless.Gui.Drawers.Drawer [Bless.Gui.Areas]Bless.Gui.Areas.Area::drawer
+	IL_004b:  callvirt instance int32 class [Bless.Gui.Drawers]Bless.Gui.Drawers.Drawer::get_Width()
+	IL_0050:  mul 
+	IL_0051:  stind.i4 
+	IL_0052:  ret 
+    } // end of method AsciiArea::GetDisplayInfoByOffset
 
-    // method line 12
+    // method line 13
     .method public virtual hidebysig 
            instance default int64 GetOffsetByDisplayInfo (int32 x, int32 y, [out] int32& digit, [out] valuetype [Bless.Gui.Areas]Bless.Gui.Areas.Area/GetOffsetFlags& 'flags')  cil managed 
     {
-        // Method begins at RVA 0x2330
-	// Code size 75 (0x4b)
+        // Method begins at RVA 0x2bac
+	// Code size 91 (0x5b)
 	.maxstack 3
 	.locals init (
 		int32	V_0,
-		int64	V_1)
+		int32	V_1,
+		int64	V_2)
 	IL_0000:  ldarg.s 4
 	IL_0002:  ldc.i4.0 
 	IL_0003:  stind.i4 
@@ -354,241 +511,398 @@
 	IL_000b:  callvirt instance int32 class [Bless.Gui.Drawers]Bless.Gui.Drawers.Drawer::get_Height()
 	IL_0010:  div 
 	IL_0011:  stloc.0 
-	IL_0012:  ldloc.0 
+	IL_0012:  ldarg.1 
 	IL_0013:  ldarg.0 
-	IL_0014:  ldfld int32 [Bless.Gui.Areas]Bless.Gui.Areas.Area::bpr
-	IL_0019:  mul 
-	IL_001a:  conv.i8 
-	IL_001b:  ldarg.0 
-	IL_001c:  ldfld class [Bless.Gui.Areas]Bless.Gui.Areas.AreaGroup [Bless.Gui.Areas]Bless.Gui.Areas.Area::areaGroup
-	IL_0021:  callvirt instance int64 class [Bless.Gui.Areas]Bless.Gui.Areas.AreaGroup::get_Offset()
-	IL_0026:  add 
-	IL_0027:  stloc.1 
+	IL_0014:  ldfld class [Bless.Gui.Drawers]Bless.Gui.Drawers.Drawer [Bless.Gui.Areas]Bless.Gui.Areas.Area::drawer
+	IL_0019:  callvirt instance int32 class [Bless.Gui.Drawers]Bless.Gui.Drawers.Drawer::get_Width()
+	IL_001e:  div 
+	IL_001f:  stloc.1 
+	IL_0020:  ldloc.0 
+	IL_0021:  ldarg.0 
+	IL_0022:  ldfld int32 [Bless.Gui.Areas]Bless.Gui.Areas.Area::bpr
+	IL_0027:  mul 
 	IL_0028:  ldloc.1 
-	IL_0029:  ldarg.0 
-	IL_002a:  ldfld class [Bless.Gui.Areas]Bless.Gui.Areas.AreaGroup [Bless.Gui.Areas]Bless.Gui.Areas.Area::areaGroup
-	IL_002f:  callvirt instance class [Bless.Buffers]Bless.Buffers.ByteBuffer class [Bless.Gui.Areas]Bless.Gui.Areas.AreaGroup::get_Buffer()
-	IL_0034:  callvirt instance int64 class [Bless.Buffers]Bless.Buffers.BaseBuffer::get_Size()
-	IL_0039:  blt IL_0046
+	IL_0029:  add 
+	IL_002a:  conv.i8 
+	IL_002b:  ldarg.0 
+	IL_002c:  ldfld class [Bless.Gui.Areas]Bless.Gui.Areas.AreaGroup [Bless.Gui.Areas]Bless.Gui.Areas.Area::areaGroup
+	IL_0031:  callvirt instance int64 class [Bless.Gui.Areas]Bless.Gui.Areas.AreaGroup::get_Offset()
+	IL_0036:  add 
+	IL_0037:  stloc.2 
+	IL_0038:  ldloc.2 
+	IL_0039:  ldarg.0 
+	IL_003a:  ldfld class [Bless.Gui.Areas]Bless.Gui.Areas.AreaGroup [Bless.Gui.Areas]Bless.Gui.Areas.Area::areaGroup
+	IL_003f:  callvirt instance class [Bless.Buffers]Bless.Buffers.ByteBuffer class [Bless.Gui.Areas]Bless.Gui.Areas.AreaGroup::get_Buffer()
+	IL_0044:  callvirt instance int64 class [Bless.Buffers]Bless.Buffers.BaseBuffer::get_Size()
+	IL_0049:  blt IL_0056
 
-	IL_003e:  ldarg.s 4
-	IL_0040:  ldarg.s 4
-	IL_0042:  ldind.i4 
-	IL_0043:  ldc.i4.1 
-	IL_0044:  or 
-	IL_0045:  stind.i4 
-	IL_0046:  ldarg.3 
-	IL_0047:  ldc.i4.0 
-	IL_0048:  stind.i4 
-	IL_0049:  ldloc.1 
-	IL_004a:  ret 
-    } // end of method OffsetArea::GetOffsetByDisplayInfo
+	IL_004e:  ldarg.s 4
+	IL_0050:  ldarg.s 4
+	IL_0052:  ldind.i4 
+	IL_0053:  ldc.i4.1 
+	IL_0054:  or 
+	IL_0055:  stind.i4 
+	IL_0056:  ldarg.3 
+	IL_0057:  ldc.i4.0 
+	IL_0058:  stind.i4 
+	IL_0059:  ldloc.2 
+	IL_005a:  ret 
+    } // end of method AsciiArea::GetOffsetByDisplayInfo
 
-    // method line 13
+    // method line 14
     .method public virtual hidebysig 
-           instance default void Configure (class [System.Xml]System.Xml.XmlNode parentNode)  cil managed 
+           (null) cil managed 
     {
-        // Method begins at RVA 0x2388
-	// Code size 161 (0xa1)
-	.maxstack 3
+        // Method begins at RVA 0x2c14
+	// Code size 242 (0xf2)
+	.maxstack 5
 	.locals init (
-		class [System.Xml]System.Xml.XmlNodeList	V_0,
-		class [System.Xml]System.Xml.XmlNode	V_1,
-		class [mscorlib]System.Collections.IEnumerator	V_2,
-		class [mscorlib]System.IDisposable	V_3)
-	IL_0000:  ldarg.0 
-	IL_0001:  ldarg.1 
-	IL_0002:  call instance void class [Bless.Gui.Areas]Bless.Gui.Areas.Area::Configure(class [System.Xml]System.Xml.XmlNode)
-	IL_0007:  ldarg.1 
-	IL_0008:  callvirt instance class [System.Xml]System.Xml.XmlNodeList class [System.Xml]System.Xml.XmlNode::get_ChildNodes()
-	IL_000d:  stloc.0 
-	IL_000e:  ldloc.0 
-	IL_000f:  callvirt instance class [mscorlib]System.Collections.IEnumerator class [System.Xml]System.Xml.XmlNodeList::GetEnumerator()
-	IL_0014:  stloc.2 
-	.try { // 0
-	  IL_0015:  br IL_007c
-
-	  IL_001a:  ldloc.2 
-	  IL_001b:  callvirt instance object class [mscorlib]System.Collections.IEnumerator::get_Current()
-	  IL_0020:  castclass [System.Xml]System.Xml.XmlNode
-	  IL_0025:  stloc.1 
-	  IL_0026:  ldloc.1 
-	  IL_0027:  callvirt instance string class [System.Xml]System.Xml.XmlNode::get_Name()
-	  IL_002c:  ldstr "case"
-	  IL_0031:  call bool string::op_Equality(string, string)
-	  IL_0036:  brfalse IL_0056
+		unsigned int8[]	V_0)
+	IL_0000:  ldnull 
+	IL_0001:  stloc.0 
+	IL_0002:  ldarg.1 
+	IL_0003:  ldc.i4.s 0x20
+	IL_0005:  blt IL_0023
 
-	  IL_003b:  ldarg.0 
-	  IL_003c:  ldfld class [Bless.Gui.Drawers]Bless.Gui.Drawers.Drawer/Information [Bless.Gui.Areas]Bless.Gui.Areas.Area::drawerInformation
-	  IL_0041:  ldloc.1 
-	  IL_0042:  callvirt instance string class [System.Xml]System.Xml.XmlNode::get_InnerText()
-	  IL_0047:  ldstr "upper"
-	  IL_004c:  call bool string::op_Equality(string, string)
-	  IL_0051:  stfld bool [Bless.Gui.Drawers]Bless.Gui.Drawers.Drawer/Information::Uppercase
-	  IL_0056:  ldloc.1 
-	  IL_0057:  callvirt instance string class [System.Xml]System.Xml.XmlNode::get_Name()
-	  IL_005c:  ldstr "bytes"
-	  IL_0061:  call bool string::op_Equality(string, string)
-	  IL_0066:  brfalse IL_007c
+	IL_000a:  ldarg.1 
+	IL_000b:  ldc.i4.s 0x7e
+	IL_000d:  bgt IL_0023
 
-	  IL_006b:  ldarg.0 
-	  IL_006c:  ldloc.1 
-	  IL_006d:  callvirt instance string class [System.Xml]System.Xml.XmlNode::get_InnerText()
-	  IL_0072:  call int32 class [mscorlib]System.Convert::ToInt32(string)
-	  IL_0077:  call instance void class Bless.Gui.Areas.Plugins.OffsetArea::set_Bytes(int32)
-	  IL_007c:  ldloc.2 
-	  IL_007d:  callvirt instance bool class [mscorlib]System.Collections.IEnumerator::MoveNext()
-	  IL_0082:  brtrue IL_001a
+	IL_0012:  ldc.i4.1 
+	IL_0013:  newarr [mscorlib]System.Byte
+	IL_0018:  dup 
+	IL_0019:  ldc.i4.0 
+	IL_001a:  ldarg.1 
+	IL_001b:  conv.u1 
+	IL_001c:  stelem.i1 
+	IL_001d:  stloc.0 
+	IL_001e:  br IL_004e
 
-	  IL_0087:  leave IL_00a0
+	IL_0023:  ldarg.1 
+	IL_0024:  ldc.i4 65456
+	IL_0029:  blt IL_004e
 
-	} // end .try 0
-	finally  { // 0
-	  IL_008c:  ldloc.2 
-	  IL_008d:  isinst [mscorlib]System.IDisposable
-	  IL_0092:  dup 
-	  IL_0093:  stloc.3 
-	  IL_0094:  brfalse IL_009f
+	IL_002e:  ldarg.1 
+	IL_002f:  ldc.i4 65465
+	IL_0034:  bgt IL_004e
 
-	  IL_0099:  ldloc.3 
-	  IL_009a:  callvirt instance void class [mscorlib]System.IDisposable::Dispose()
-	  IL_009f:  endfinally 
-	} // end handler 0
-	IL_00a0:  ret 
-    } // end of method OffsetArea::Configure
+	IL_0039:  ldc.i4.1 
+	IL_003a:  newarr [mscorlib]System.Byte
+	IL_003f:  dup 
+	IL_0040:  ldc.i4.0 
+	IL_0041:  ldarg.1 
+	IL_0042:  ldc.i4 65456
+	IL_0047:  sub 
+	IL_0048:  ldc.i4.s 0x30
+	IL_004a:  add 
+	IL_004b:  conv.u1 
+	IL_004c:  stelem.i1 
+	IL_004d:  stloc.0 
+	IL_004e:  ldloc.0 
+	IL_004f:  brfalse IL_00f0
 
-    // method line 14
+	IL_0054:  ldarg.0 
+	IL_0055:  ldfld class [Bless.Gui.Areas]Bless.Gui.Areas.AreaGroup [Bless.Gui.Areas]Bless.Gui.Areas.Area::areaGroup
+	IL_005a:  callvirt instance int64 class [Bless.Gui.Areas]Bless.Gui.Areas.AreaGroup::get_CursorOffset()
+	IL_005f:  ldarg.0 
+	IL_0060:  ldfld class [Bless.Gui.Areas]Bless.Gui.Areas.AreaGroup [Bless.Gui.Areas]Bless.Gui.Areas.Area::areaGroup
+	IL_0065:  callvirt instance class [Bless.Buffers]Bless.Buffers.ByteBuffer class [Bless.Gui.Areas]Bless.Gui.Areas.AreaGroup::get_Buffer()
+	IL_006a:  callvirt instance int64 class [Bless.Buffers]Bless.Buffers.BaseBuffer::get_Size()
+	IL_006f:  bne.un IL_0092
+
+	IL_0074:  ldarg.0 
+	IL_0075:  ldfld class [Bless.Gui.Areas]Bless.Gui.Areas.AreaGroup [Bless.Gui.Areas]Bless.Gui.Areas.Area::areaGroup
+	IL_007a:  callvirt instance class [Bless.Buffers]Bless.Buffers.ByteBuffer class [Bless.Gui.Areas]Bless.Gui.Areas.AreaGroup::get_Buffer()
+	IL_007f:  ldloc.0 
+	IL_0080:  ldc.i4.0 
+	IL_0081:  conv.i8 
+	IL_0082:  ldloc.0 
+	IL_0083:  callvirt instance int64 class [mscorlib]System.Array::get_LongLength()
+	IL_0088:  callvirt instance void class [Bless.Buffers]Bless.Buffers.BaseBuffer::Append(unsigned int8[], int64, int64)
+	IL_008d:  br IL_00ee
+
+	IL_0092:  ldarg.2 
+	IL_0093:  brfalse IL_00c4
+
+	IL_0098:  ldarg.0 
+	IL_0099:  ldfld class [Bless.Gui.Areas]Bless.Gui.Areas.AreaGroup [Bless.Gui.Areas]Bless.Gui.Areas.Area::areaGroup
+	IL_009e:  callvirt instance class [Bless.Buffers]Bless.Buffers.ByteBuffer class [Bless.Gui.Areas]Bless.Gui.Areas.AreaGroup::get_Buffer()
+	IL_00a3:  ldarg.0 
+	IL_00a4:  ldfld class [Bless.Gui.Areas]Bless.Gui.Areas.AreaGroup [Bless.Gui.Areas]Bless.Gui.Areas.Area::areaGroup
+	IL_00a9:  callvirt instance int64 class [Bless.Gui.Areas]Bless.Gui.Areas.AreaGroup::get_CursorOffset()
+	IL_00ae:  ldarg.0 
+	IL_00af:  ldfld class [Bless.Gui.Areas]Bless.Gui.Areas.AreaGroup [Bless.Gui.Areas]Bless.Gui.Areas.Area::areaGroup
+	IL_00b4:  callvirt instance int64 class [Bless.Gui.Areas]Bless.Gui.Areas.AreaGroup::get_CursorOffset()
+	IL_00b9:  ldloc.0 
+	IL_00ba:  callvirt instance void class [Bless.Buffers]Bless.Buffers.ByteBuffer::Replace(int64, int64, unsigned int8[])
+	IL_00bf:  br IL_00ee
+
+	IL_00c4:  ldarg.2 
+	IL_00c5:  brtrue IL_00ee
+
+	IL_00ca:  ldarg.0 
+	IL_00cb:  ldfld class [Bless.Gui.Areas]Bless.Gui.Areas.AreaGroup [Bless.Gui.Areas]Bless.Gui.Areas.Area::areaGroup
+	IL_00d0:  callvirt instance class [Bless.Buffers]Bless.Buffers.ByteBuffer class [Bless.Gui.Areas]Bless.Gui.Areas.AreaGroup::get_Buffer()
+	IL_00d5:  ldarg.0 
+	IL_00d6:  ldfld class [Bless.Gui.Areas]Bless.Gui.Areas.AreaGroup [Bless.Gui.Areas]Bless.Gui.Areas.Area::areaGroup
+	IL_00db:  callvirt instance int64 class [Bless.Gui.Areas]Bless.Gui.Areas.AreaGroup::get_CursorOffset()
+	IL_00e0:  ldloc.0 
+	IL_00e1:  ldc.i4.0 
+	IL_00e2:  conv.i8 
+	IL_00e3:  ldloc.0 
+	IL_00e4:  callvirt instance int64 class [mscorlib]System.Array::get_LongLength()
+	IL_00e9:  callvirt instance void class [Bless.Buffers]Bless.Buffers.BaseBuffer::Insert(int64, unsigned int8[], int64, int64)
+	IL_00ee:  ldc.i4.1 
+	IL_00ef:  ret 
+	IL_00f0:  ldc.i4.0 
+	IL_00f1:  ret 
+    } // end of method AsciiArea::<NULL METHOD SIGNATURE>
+
+    // method line 15
     .method public virtual hidebysig 
            instance default void Realize ()  cil managed 
     {
-        // Method begins at RVA 0x2448
-    } // end of method OffsetArea::Realize
+        // Method begins at RVA 0x2d14
+    } // end of method AsciiArea::Realize
 
-	.property instance int32 Bytes ()
-	{
-		.get instance default int32 Bless.Gui.Areas.Plugins.OffsetArea::get_Bytes () 
-		.set instance default void Bless.Gui.Areas.Plugins.OffsetArea::set_Bytes (int32 'value') 
-	}
-  } // end of class Bless.Gui.Areas.Plugins.OffsetArea
+  } // end of class Bless.Gui.Areas.Plugins.AsciiArea
 }
 
 .namespace Bless.Gui.Areas.Plugins
 {
-  .class public auto ansi beforefieldinit AsciiAreaPlugin
+  .class public auto ansi beforefieldinit SeparatorAreaPlugin
   	extends [Bless.Plugins]Bless.Plugins.AreaPlugin
   {
 
-    // method line 15
+    // method line 16
     .method public hidebysig specialname rtspecialname 
            instance default void '.ctor' ()  cil managed 
     {
-        // Method begins at RVA 0x2479
+        // Method begins at RVA 0x2d45
 	// Code size 29 (0x1d)
 	.maxstack 8
 	IL_0000:  ldarg.0 
 	IL_0001:  call instance void class [Bless.Plugins]Bless.Plugins.AreaPlugin::'.ctor'()
 	IL_0006:  ldarg.0 
-	IL_0007:  ldstr "ascii"
+	IL_0007:  ldstr "separator"
 	IL_000c:  stfld string [Bless.Plugins]Bless.Plugins.Plugin::name
 	IL_0011:  ldarg.0 
 	IL_0012:  ldstr "Alexandros Frantzis"
 	IL_0017:  stfld string [Bless.Plugins]Bless.Plugins.Plugin::author
 	IL_001c:  ret 
-    } // end of method AsciiAreaPlugin::.ctor
+    } // end of method SeparatorAreaPlugin::.ctor
 
-    // method line 16
+    // method line 17
     .method public virtual hidebysig 
            instance default class [Bless.Gui.Areas]Bless.Gui.Areas.Area CreateArea (class [Bless.Gui.Areas]Bless.Gui.Areas.AreaGroup ag)  cil managed 
     {
-        // Method begins at RVA 0x2497
+        // Method begins at RVA 0x2d63
 	// Code size 7 (0x7)
 	.maxstack 8
 	IL_0000:  ldarg.1 
-	IL_0001:  newobj instance void class Bless.Gui.Areas.Plugins.AsciiArea::'.ctor'(class [Bless.Gui.Areas]Bless.Gui.Areas.AreaGroup)
+	IL_0001:  newobj instance void class Bless.Gui.Areas.Plugins.SeparatorArea::'.ctor'(class [Bless.Gui.Areas]Bless.Gui.Areas.AreaGroup)
 	IL_0006:  ret 
-    } // end of method AsciiAreaPlugin::CreateArea
+    } // end of method SeparatorAreaPlugin::CreateArea
 
-  } // end of class Bless.Gui.Areas.Plugins.AsciiAreaPlugin
+  } // end of class Bless.Gui.Areas.Plugins.SeparatorAreaPlugin
 }
 
 .namespace Bless.Gui.Areas.Plugins
 {
-  .class public auto ansi beforefieldinit AsciiArea
+  .class public auto ansi beforefieldinit SeparatorArea
   	extends [Bless.Gui.Areas]Bless.Gui.Areas.Area
   {
+    .field  private  <BROKEN CLASS token_ 1000001 due to Could not load file or assembly or one of its dependencies. assembly:gdk-sharp, Version=2.12.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f type:<unknown type> member:<none>> lineGC
 
-    // method line 17
+    // method line 18
     .method public hidebysig specialname rtspecialname 
            instance default void '.ctor' (class [Bless.Gui.Areas]Bless.Gui.Areas.AreaGroup ag)  cil managed 
     {
-        // Method begins at RVA 0x249f
-	// Code size 33 (0x21)
+        // Method begins at RVA 0x2d6b
+	// Code size 19 (0x13)
 	.maxstack 8
 	IL_0000:  ldarg.0 
 	IL_0001:  ldarg.1 
 	IL_0002:  call instance void class [Bless.Gui.Areas]Bless.Gui.Areas.Area::'.ctor'(class [Bless.Gui.Areas]Bless.Gui.Areas.AreaGroup)
 	IL_0007:  ldarg.0 
-	IL_0008:  ldstr "ascii"
+	IL_0008:  ldstr "separator"
 	IL_000d:  stfld string [Bless.Gui.Areas]Bless.Gui.Areas.Area::'type'
-	IL_0012:  ldarg.0 
-	IL_0013:  ldc.i4.1 
-	IL_0014:  stfld int32 [Bless.Gui.Areas]Bless.Gui.Areas.Area::dpb
-	IL_0019:  ldarg.0 
-	IL_001a:  ldc.i4.1 
-	IL_001b:  stfld bool [Bless.Gui.Areas]Bless.Gui.Areas.Area::canFocus
-	IL_0020:  ret 
-    } // end of method AsciiArea::.ctor
+	IL_0012:  ret 
+    } // end of method SeparatorArea::.ctor
 
-    // method line 18
+    // method line 19
+    .method public virtual hidebysig 
+           instance default void Realize ()  cil managed 
+    {
+        // Method begins at RVA 0x2d80
+    } // end of method SeparatorArea::Realize
+
+    // method line 20
+    .method family virtual hidebysig 
+           instance default void RenderHighlight (class [Bless.Gui.Areas]Bless.Gui.Areas.Highlight h, valuetype [Bless.Gui.Drawers]Bless.Gui.Drawers.Drawer/HighlightType left, valuetype [Bless.Gui.Drawers]Bless.Gui.Drawers.Drawer/HighlightType right)  cil managed 
+    {
+        // Method begins at RVA 0x2de9
+	// Code size 1 (0x1)
+	.maxstack 8
+	IL_0000:  ret 
+    } // end of method SeparatorArea::RenderHighlight
+
+    // method line 21
     .method family virtual hidebysig 
            instance default void RenderRowNormal (int32 i, int32 p, int32 n, bool blank)  cil managed 
     {
-        // Method begins at RVA 0x24c4
-    } // end of method AsciiArea::RenderRowNormal
+        // Method begins at RVA 0x2deb
+	// Code size 1 (0x1)
+	.maxstack 8
+	IL_0000:  ret 
+    } // end of method SeparatorArea::RenderRowNormal
 
-    // method line 19
+    // method line 22
     .method family virtual hidebysig 
            instance default void RenderRowHighlight (int32 i, int32 p, int32 n, bool blank, valuetype [Bless.Gui.Drawers]Bless.Gui.Drawers.Drawer/HighlightType ht)  cil managed 
     {
-        // Method begins at RVA 0x25f8
-    } // end of method AsciiArea::RenderRowHighlight
+        // Method begins at RVA 0x2ded
+	// Code size 1 (0x1)
+	.maxstack 8
+	IL_0000:  ret 
+    } // end of method SeparatorArea::RenderRowHighlight
 
-    // method line 20
+    // method line 23
+    .method family virtual hidebysig 
+           instance default void RenderExtra ()  cil managed 
+    {
+        // Method begins at RVA 0x2df0
+	// Code size 234 (0xea)
+	.maxstack 7
+	.locals init (
+		int32	V_0,
+		int64	V_1,
+		int32	V_2,
+		int32	V_3)
+	IL_0000:  ldarg.0 
+	IL_0001:  ldfld bool [Bless.Gui.Areas]Bless.Gui.Areas.Area::isAreaRealized
+	IL_0006:  brtrue IL_000c
+
+	IL_000b:  ret 
+	IL_000c:  ldarg.0 
+	IL_000d:  ldfld int32 [Bless.Gui.Areas]Bless.Gui.Areas.Area::height
+	IL_0012:  ldarg.0 
+	IL_0013:  ldfld class [Bless.Gui.Drawers]Bless.Gui.Drawers.Drawer [Bless.Gui.Areas]Bless.Gui.Areas.Area::drawer
+	IL_0018:  callvirt instance int32 class [Bless.Gui.Drawers]Bless.Gui.Drawers.Drawer::get_Height()
+	IL_001d:  div 
+	IL_001e:  stloc.0 
+	IL_001f:  ldloc.0 
+	IL_0020:  ldarg.0 
+	IL_0021:  ldfld int32 [Bless.Gui.Areas]Bless.Gui.Areas.Area::bpr
+	IL_0026:  mul 
+	IL_0027:  conv.i8 
+	IL_0028:  stloc.1 
+	IL_0029:  ldc.i4.0 
+	IL_002a:  stloc.2 
+	IL_002b:  ldc.i4.0 
+	IL_002c:  stloc.3 
+	IL_002d:  ldarg.0 
+	IL_002e:  ldfld int32 [Bless.Gui.Areas]Bless.Gui.Areas.Area::bpr
+	IL_0033:  ldc.i4.0 
+	IL_0034:  ble IL_009b
+
+	IL_0039:  ldloc.1 
+	IL_003a:  ldarg.0 
+	IL_003b:  ldfld class [Bless.Gui.Areas]Bless.Gui.Areas.AreaGroup [Bless.Gui.Areas]Bless.Gui.Areas.Area::areaGroup
+	IL_0040:  callvirt instance int64 class [Bless.Gui.Areas]Bless.Gui.Areas.AreaGroup::get_Offset()
+	IL_0045:  add 
+	IL_0046:  ldarg.0 
+	IL_0047:  ldfld class [Bless.Gui.Areas]Bless.Gui.Areas.AreaGroup [Bless.Gui.Areas]Bless.Gui.Areas.Area::areaGroup
+	IL_004c:  callvirt instance class [Bless.Buffers]Bless.Buffers.ByteBuffer class [Bless.Gui.Areas]Bless.Gui.Areas.AreaGroup::get_Buffer()
+	IL_0051:  callvirt instance int64 class [Bless.Buffers]Bless.Buffers.BaseBuffer::get_Size()
+	IL_0056:  ble IL_007b
+
+	IL_005b:  ldarg.0 
+	IL_005c:  ldfld class [Bless.Gui.Areas]Bless.Gui.Areas.AreaGroup [Bless.Gui.Areas]Bless.Gui.Areas.Area::areaGroup
+	IL_0061:  callvirt instance class [Bless.Buffers]Bless.Buffers.ByteBuffer class [Bless.Gui.Areas]Bless.Gui.Areas.AreaGroup::get_Buffer()
+	IL_0066:  callvirt instance int64 class [Bless.Buffers]Bless.Buffers.BaseBuffer::get_Size()
+	IL_006b:  ldarg.0 
+	IL_006c:  ldfld class [Bless.Gui.Areas]Bless.Gui.Areas.AreaGroup [Bless.Gui.Areas]Bless.Gui.Areas.Area::areaGroup
+	IL_0071:  callvirt instance int64 class [Bless.Gui.Areas]Bless.Gui.Areas.AreaGroup::get_Offset()
+	IL_0076:  sub 
+	IL_0077:  ldc.i4.1 
+	IL_0078:  conv.i8 
+	IL_0079:  add 
+	IL_007a:  stloc.1 
+	IL_007b:  ldloc.1 
+	IL_007c:  ldarg.0 
+	IL_007d:  ldfld int32 [Bless.Gui.Areas]Bless.Gui.Areas.Area::bpr
+	IL_0082:  conv.i8 
+	IL_0083:  div 
+	IL_0084:  conv.i4 
+	IL_0085:  stloc.2 
+	IL_0086:  ldloc.1 
+	IL_0087:  ldarg.0 
+	IL_0088:  ldfld int32 [Bless.Gui.Areas]Bless.Gui.Areas.Area::bpr
+	IL_008d:  conv.i8 
+	IL_008e:  rem 
+	IL_008f:  conv.i4 
+	IL_0090:  stloc.3 
+	IL_0091:  ldloc.3 
+	IL_0092:  brfalse IL_009b
+
+	IL_0097:  ldloc.2 
+	IL_0098:  ldc.i4.1 
+	IL_0099:  add 
+	IL_009a:  stloc.2 
+	IL_009b:  ldloc.2 
+	IL_009c:  brtrue IL_00a2
+
+	IL_00a1:  ret 
+	IL_00a2:  ldarg.0 
+	IL_00a3:  ldfld <BROKEN CLASS token_ 1000011 due to Could not load file or assembly or one of its dependencies. assembly:gdk-sharp, Version=2.12.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f type:<unknown type> member:<none>> [Bless.Gui.Areas]Bless.Gui.Areas.Area::backPixmap
+	IL_00a8:  ldarg.0 
+	IL_00a9:  ldfld <BROKEN CLASS token_ 1000001 due to Could not load file or assembly or one of its dependencies. assembly:gdk-sharp, Version=2.12.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f type:<unknown type> member:<none>> Bless.Gui.Areas.Plugins.SeparatorArea::lineGC
+	IL_00ae:  ldarg.0 
+	IL_00af:  ldfld int32 [Bless.Gui.Areas]Bless.Gui.Areas.Area::x
+	IL_00b4:  ldarg.0 
+	IL_00b5:  ldfld class [Bless.Gui.Drawers]Bless.Gui.Drawers.Drawer [Bless.Gui.Areas]Bless.Gui.Areas.Area::drawer
+	IL_00ba:  callvirt instance int32 class [Bless.Gui.Drawers]Bless.Gui.Drawers.Drawer::get_Width()
+	IL_00bf:  ldc.i4.2 
+	IL_00c0:  div 
+	IL_00c1:  add 
+	IL_00c2:  ldc.i4.0 
+	IL_00c3:  ldarg.0 
+	IL_00c4:  ldfld int32 [Bless.Gui.Areas]Bless.Gui.Areas.Area::x
+	IL_00c9:  ldarg.0 
+	IL_00ca:  ldfld class [Bless.Gui.Drawers]Bless.Gui.Drawers.Drawer [Bless.Gui.Areas]Bless.Gui.Areas.Area::drawer
+	IL_00cf:  callvirt instance int32 class [Bless.Gui.Drawers]Bless.Gui.Drawers.Drawer::get_Width()
+	IL_00d4:  ldc.i4.2 
+	IL_00d5:  div 
+	IL_00d6:  add 
+	IL_00d7:  ldarg.0 
+	IL_00d8:  ldfld class [Bless.Gui.Drawers]Bless.Gui.Drawers.Drawer [Bless.Gui.Areas]Bless.Gui.Areas.Area::drawer
+	IL_00dd:  callvirt instance int32 class [Bless.Gui.Drawers]Bless.Gui.Drawers.Drawer::get_Height()
+	IL_00e2:  ldloc.2 
+	IL_00e3:  mul 
+	IL_00e4:  callvirt instance void ['gdk-sharp']Gdk.Drawable::DrawLine(<BROKEN CLASS token_ 1000001 due to Could not load file or assembly or one of its dependencies. assembly:gdk-sharp, Version=2.12.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f type:<unknown type> member:<none>>, int32, int32, int32, int32)
+	IL_00e9:  ret 
+    } // end of method SeparatorArea::RenderExtra
+
+    // method line 24
     .method public virtual hidebysig 
            instance default int32 CalcWidth (int32 n, bool force)  cil managed 
     {
-        // Method begins at RVA 0x272d
-	// Code size 46 (0x2e)
+        // Method begins at RVA 0x2ee6
+	// Code size 12 (0xc)
 	.maxstack 8
 	IL_0000:  ldarg.0 
-	IL_0001:  ldfld int32 [Bless.Gui.Areas]Bless.Gui.Areas.Area::fixedBpr
-	IL_0006:  ldc.i4.0 
-	IL_0007:  ble IL_0020
-
-	IL_000c:  ldarg.1 
-	IL_000d:  ldarg.0 
-	IL_000e:  ldfld int32 [Bless.Gui.Areas]Bless.Gui.Areas.Area::fixedBpr
-	IL_0013:  ble IL_0020
-
-	IL_0018:  ldarg.2 
-	IL_0019:  brtrue IL_0020
-
-	IL_001e:  ldc.i4.m1 
-	IL_001f:  ret 
-	IL_0020:  ldarg.1 
-	IL_0021:  ldarg.0 
-	IL_0022:  ldfld class [Bless.Gui.Drawers]Bless.Gui.Drawers.Drawer [Bless.Gui.Areas]Bless.Gui.Areas.Area::drawer
-	IL_0027:  callvirt instance int32 class [Bless.Gui.Drawers]Bless.Gui.Drawers.Drawer::get_Width()
-	IL_002c:  mul 
-	IL_002d:  ret 
-    } // end of method AsciiArea::CalcWidth
+	IL_0001:  ldfld class [Bless.Gui.Drawers]Bless.Gui.Drawers.Drawer [Bless.Gui.Areas]Bless.Gui.Areas.Area::drawer
+	IL_0006:  callvirt instance int32 class [Bless.Gui.Drawers]Bless.Gui.Drawers.Drawer::get_Width()
+	IL_000b:  ret 
+    } // end of method SeparatorArea::CalcWidth
 
-    // method line 21
+    // method line 25
     .method public virtual hidebysig 
            instance default void GetDisplayInfoByOffset (int64 'off', [out] int32& orow, [out] int32& obyte, [out] int32& ox, [out] int32& oy)  cil managed 
     {
-        // Method begins at RVA 0x275c
-	// Code size 83 (0x53)
+        // Method begins at RVA 0x2ef4
+	// Code size 70 (0x46)
 	.maxstack 3
 	IL_0000:  ldarg.2 
 	IL_0001:  ldarg.1 
@@ -623,27 +937,21 @@
 	IL_003f:  mul 
 	IL_0040:  stind.i4 
 	IL_0041:  ldarg.s 4
-	IL_0043:  ldarg.3 
-	IL_0044:  ldind.i4 
-	IL_0045:  ldarg.0 
-	IL_0046:  ldfld class [Bless.Gui.Drawers]Bless.Gui.Drawers.Drawer [Bless.Gui.Areas]Bless.Gui.Areas.Area::drawer
-	IL_004b:  callvirt instance int32 class [Bless.Gui.Drawers]Bless.Gui.Drawers.Drawer::get_Width()
-	IL_0050:  mul 
-	IL_0051:  stind.i4 
-	IL_0052:  ret 
-    } // end of method AsciiArea::GetDisplayInfoByOffset
+	IL_0043:  ldc.i4.0 
+	IL_0044:  stind.i4 
+	IL_0045:  ret 
+    } // end of method SeparatorArea::GetDisplayInfoByOffset
 
-    // method line 22
+    // method line 26
     .method public virtual hidebysig 
            instance default int64 GetOffsetByDisplayInfo (int32 x, int32 y, [out] int32& digit, [out] valuetype [Bless.Gui.Areas]Bless.Gui.Areas.Area/GetOffsetFlags& 'flags')  cil managed 
     {
-        // Method begins at RVA 0x27bc
-	// Code size 91 (0x5b)
+        // Method begins at RVA 0x2f48
+	// Code size 75 (0x4b)
 	.maxstack 3
 	.locals init (
 		int32	V_0,
-		int32	V_1,
-		int64	V_2)
+		int64	V_1)
 	IL_0000:  ldarg.s 4
 	IL_0002:  ldc.i4.0 
 	IL_0003:  stind.i4 
@@ -653,444 +961,463 @@
 	IL_000b:  callvirt instance int32 class [Bless.Gui.Drawers]Bless.Gui.Drawers.Drawer::get_Height()
 	IL_0010:  div 
 	IL_0011:  stloc.0 
-	IL_0012:  ldarg.1 
+	IL_0012:  ldloc.0 
 	IL_0013:  ldarg.0 
-	IL_0014:  ldfld class [Bless.Gui.Drawers]Bless.Gui.Drawers.Drawer [Bless.Gui.Areas]Bless.Gui.Areas.Area::drawer
-	IL_0019:  callvirt instance int32 class [Bless.Gui.Drawers]Bless.Gui.Drawers.Drawer::get_Width()
-	IL_001e:  div 
-	IL_001f:  stloc.1 
-	IL_0020:  ldloc.0 
-	IL_0021:  ldarg.0 
-	IL_0022:  ldfld int32 [Bless.Gui.Areas]Bless.Gui.Areas.Area::bpr
-	IL_0027:  mul 
+	IL_0014:  ldfld int32 [Bless.Gui.Areas]Bless.Gui.Areas.Area::bpr
+	IL_0019:  mul 
+	IL_001a:  conv.i8 
+	IL_001b:  ldarg.0 
+	IL_001c:  ldfld class [Bless.Gui.Areas]Bless.Gui.Areas.AreaGroup [Bless.Gui.Areas]Bless.Gui.Areas.Area::areaGroup
+	IL_0021:  callvirt instance int64 class [Bless.Gui.Areas]Bless.Gui.Areas.AreaGroup::get_Offset()
+	IL_0026:  add 
+	IL_0027:  stloc.1 
 	IL_0028:  ldloc.1 
-	IL_0029:  add 
-	IL_002a:  conv.i8 
-	IL_002b:  ldarg.0 
-	IL_002c:  ldfld class [Bless.Gui.Areas]Bless.Gui.Areas.AreaGroup [Bless.Gui.Areas]Bless.Gui.Areas.Area::areaGroup
-	IL_0031:  callvirt instance int64 class [Bless.Gui.Areas]Bless.Gui.Areas.AreaGroup::get_Offset()
-	IL_0036:  add 
-	IL_0037:  stloc.2 
-	IL_0038:  ldloc.2 
-	IL_0039:  ldarg.0 
-	IL_003a:  ldfld class [Bless.Gui.Areas]Bless.Gui.Areas.AreaGroup [Bless.Gui.Areas]Bless.Gui.Areas.Area::areaGroup
-	IL_003f:  callvirt instance class [Bless.Buffers]Bless.Buffers.ByteBuffer class [Bless.Gui.Areas]Bless.Gui.Areas.AreaGroup::get_Buffer()
-	IL_0044:  callvirt instance int64 class [Bless.Buffers]Bless.Buffers.BaseBuffer::get_Size()
-	IL_0049:  blt IL_0056
+	IL_0029:  ldarg.0 
+	IL_002a:  ldfld class [Bless.Gui.Areas]Bless.Gui.Areas.AreaGroup [Bless.Gui.Areas]Bless.Gui.Areas.Area::areaGroup
+	IL_002f:  callvirt instance class [Bless.Buffers]Bless.Buffers.ByteBuffer class [Bless.Gui.Areas]Bless.Gui.Areas.AreaGroup::get_Buffer()
+	IL_0034:  callvirt instance int64 class [Bless.Buffers]Bless.Buffers.BaseBuffer::get_Size()
+	IL_0039:  blt IL_0046
 
-	IL_004e:  ldarg.s 4
-	IL_0050:  ldarg.s 4
-	IL_0052:  ldind.i4 
-	IL_0053:  ldc.i4.1 
-	IL_0054:  or 
-	IL_0055:  stind.i4 
-	IL_0056:  ldarg.3 
-	IL_0057:  ldc.i4.0 
-	IL_0058:  stind.i4 
-	IL_0059:  ldloc.2 
-	IL_005a:  ret 
-    } // end of method AsciiArea::GetOffsetByDisplayInfo
-
-    // method line 23
-    .method public virtual hidebysig 
-           (null) cil managed 
-    {
-        // Method begins at RVA 0x2824
-	// Code size 242 (0xf2)
-	.maxstack 5
-	.locals init (
-		unsigned int8[]	V_0)
-	IL_0000:  ldnull 
-	IL_0001:  stloc.0 
-	IL_0002:  ldarg.1 
-	IL_0003:  ldc.i4.s 0x20
-	IL_0005:  blt IL_0023
-
-	IL_000a:  ldarg.1 
-	IL_000b:  ldc.i4.s 0x7e
-	IL_000d:  bgt IL_0023
-
-	IL_0012:  ldc.i4.1 
-	IL_0013:  newarr [mscorlib]System.Byte
-	IL_0018:  dup 
-	IL_0019:  ldc.i4.0 
-	IL_001a:  ldarg.1 
-	IL_001b:  conv.u1 
-	IL_001c:  stelem.i1 
-	IL_001d:  stloc.0 
-	IL_001e:  br IL_004e
-
-	IL_0023:  ldarg.1 
-	IL_0024:  ldc.i4 65456
-	IL_0029:  blt IL_004e
-
-	IL_002e:  ldarg.1 
-	IL_002f:  ldc.i4 65465
-	IL_0034:  bgt IL_004e
-
-	IL_0039:  ldc.i4.1 
-	IL_003a:  newarr [mscorlib]System.Byte
-	IL_003f:  dup 
-	IL_0040:  ldc.i4.0 
-	IL_0041:  ldarg.1 
-	IL_0042:  ldc.i4 65456
-	IL_0047:  sub 
-	IL_0048:  ldc.i4.s 0x30
-	IL_004a:  add 
-	IL_004b:  conv.u1 
-	IL_004c:  stelem.i1 
-	IL_004d:  stloc.0 
-	IL_004e:  ldloc.0 
-	IL_004f:  brfalse IL_00f0
-
-	IL_0054:  ldarg.0 
-	IL_0055:  ldfld class [Bless.Gui.Areas]Bless.Gui.Areas.AreaGroup [Bless.Gui.Areas]Bless.Gui.Areas.Area::areaGroup
-	IL_005a:  callvirt instance int64 class [Bless.Gui.Areas]Bless.Gui.Areas.AreaGroup::get_CursorOffset()
-	IL_005f:  ldarg.0 
-	IL_0060:  ldfld class [Bless.Gui.Areas]Bless.Gui.Areas.AreaGroup [Bless.Gui.Areas]Bless.Gui.Areas.Area::areaGroup
-	IL_0065:  callvirt instance class [Bless.Buffers]Bless.Buffers.ByteBuffer class [Bless.Gui.Areas]Bless.Gui.Areas.AreaGroup::get_Buffer()
-	IL_006a:  callvirt instance int64 class [Bless.Buffers]Bless.Buffers.BaseBuffer::get_Size()
-	IL_006f:  bne.un IL_0092
-
-	IL_0074:  ldarg.0 
-	IL_0075:  ldfld class [Bless.Gui.Areas]Bless.Gui.Areas.AreaGroup [Bless.Gui.Areas]Bless.Gui.Areas.Area::areaGroup
-	IL_007a:  callvirt instance class [Bless.Buffers]Bless.Buffers.ByteBuffer class [Bless.Gui.Areas]Bless.Gui.Areas.AreaGroup::get_Buffer()
-	IL_007f:  ldloc.0 
-	IL_0080:  ldc.i4.0 
-	IL_0081:  conv.i8 
-	IL_0082:  ldloc.0 
-	IL_0083:  callvirt instance int64 class [mscorlib]System.Array::get_LongLength()
-	IL_0088:  callvirt instance void class [Bless.Buffers]Bless.Buffers.BaseBuffer::Append(unsigned int8[], int64, int64)
-	IL_008d:  br IL_00ee
-
-	IL_0092:  ldarg.2 
-	IL_0093:  brfalse IL_00c4
-
-	IL_0098:  ldarg.0 
-	IL_0099:  ldfld class [Bless.Gui.Areas]Bless.Gui.Areas.AreaGroup [Bless.Gui.Areas]Bless.Gui.Areas.Area::areaGroup
-	IL_009e:  callvirt instance class [Bless.Buffers]Bless.Buffers.ByteBuffer class [Bless.Gui.Areas]Bless.Gui.Areas.AreaGroup::get_Buffer()
-	IL_00a3:  ldarg.0 
-	IL_00a4:  ldfld class [Bless.Gui.Areas]Bless.Gui.Areas.AreaGroup [Bless.Gui.Areas]Bless.Gui.Areas.Area::areaGroup
-	IL_00a9:  callvirt instance int64 class [Bless.Gui.Areas]Bless.Gui.Areas.AreaGroup::get_CursorOffset()
-	IL_00ae:  ldarg.0 
-	IL_00af:  ldfld class [Bless.Gui.Areas]Bless.Gui.Areas.AreaGroup [Bless.Gui.Areas]Bless.Gui.Areas.Area::areaGroup
-	IL_00b4:  callvirt instance int64 class [Bless.Gui.Areas]Bless.Gui.Areas.AreaGroup::get_CursorOffset()
-	IL_00b9:  ldloc.0 
-	IL_00ba:  callvirt instance void class [Bless.Buffers]Bless.Buffers.ByteBuffer::Replace(int64, int64, unsigned int8[])
-	IL_00bf:  br IL_00ee
-
-	IL_00c4:  ldarg.2 
-	IL_00c5:  brtrue IL_00ee
-
-	IL_00ca:  ldarg.0 
-	IL_00cb:  ldfld class [Bless.Gui.Areas]Bless.Gui.Areas.AreaGroup [Bless.Gui.Areas]Bless.Gui.Areas.Area::areaGroup
-	IL_00d0:  callvirt instance class [Bless.Buffers]Bless.Buffers.ByteBuffer class [Bless.Gui.Areas]Bless.Gui.Areas.AreaGroup::get_Buffer()
-	IL_00d5:  ldarg.0 
-	IL_00d6:  ldfld class [Bless.Gui.Areas]Bless.Gui.Areas.AreaGroup [Bless.Gui.Areas]Bless.Gui.Areas.Area::areaGroup
-	IL_00db:  callvirt instance int64 class [Bless.Gui.Areas]Bless.Gui.Areas.AreaGroup::get_CursorOffset()
-	IL_00e0:  ldloc.0 
-	IL_00e1:  ldc.i4.0 
-	IL_00e2:  conv.i8 
-	IL_00e3:  ldloc.0 
-	IL_00e4:  callvirt instance int64 class [mscorlib]System.Array::get_LongLength()
-	IL_00e9:  callvirt instance void class [Bless.Buffers]Bless.Buffers.BaseBuffer::Insert(int64, unsigned int8[], int64, int64)
-	IL_00ee:  ldc.i4.1 
-	IL_00ef:  ret 
-	IL_00f0:  ldc.i4.0 
-	IL_00f1:  ret 
-    } // end of method AsciiArea::<NULL METHOD SIGNATURE>
-
-    // method line 24
-    .method public virtual hidebysig 
-           instance default void Realize ()  cil managed 
-    {
-        // Method begins at RVA 0x2924
-    } // end of method AsciiArea::Realize
+	IL_003e:  ldarg.s 4
+	IL_0040:  ldarg.s 4
+	IL_0042:  ldind.i4 
+	IL_0043:  ldc.i4.1 
+	IL_0044:  or 
+	IL_0045:  stind.i4 
+	IL_0046:  ldarg.3 
+	IL_0047:  ldc.i4.0 
+	IL_0048:  stind.i4 
+	IL_0049:  ldloc.1 
+	IL_004a:  ret 
+    } // end of method SeparatorArea::GetOffsetByDisplayInfo
 
-  } // end of class Bless.Gui.Areas.Plugins.AsciiArea
+  } // end of class Bless.Gui.Areas.Plugins.SeparatorArea
 }
 
 .namespace Bless.Gui.Areas.Plugins
 {
-  .class public auto ansi beforefieldinit DecimalAreaPlugin
+  .class public auto ansi beforefieldinit OffsetAreaPlugin
   	extends [Bless.Plugins]Bless.Plugins.AreaPlugin
   {
 
-    // method line 25
+    // method line 27
     .method public hidebysig specialname rtspecialname 
            instance default void '.ctor' ()  cil managed 
     {
-        // Method begins at RVA 0x2955
+        // Method begins at RVA 0x2f9f
 	// Code size 29 (0x1d)
 	.maxstack 8
 	IL_0000:  ldarg.0 
 	IL_0001:  call instance void class [Bless.Plugins]Bless.Plugins.AreaPlugin::'.ctor'()
 	IL_0006:  ldarg.0 
-	IL_0007:  ldstr "decimal"
+	IL_0007:  ldstr "offset"
 	IL_000c:  stfld string [Bless.Plugins]Bless.Plugins.Plugin::name
 	IL_0011:  ldarg.0 
 	IL_0012:  ldstr "Alexandros Frantzis"
 	IL_0017:  stfld string [Bless.Plugins]Bless.Plugins.Plugin::author
 	IL_001c:  ret 
-    } // end of method DecimalAreaPlugin::.ctor
+    } // end of method OffsetAreaPlugin::.ctor
 
-    // method line 26
+    // method line 28
     .method public virtual hidebysig 
            instance default class [Bless.Gui.Areas]Bless.Gui.Areas.Area CreateArea (class [Bless.Gui.Areas]Bless.Gui.Areas.AreaGroup ag)  cil managed 
     {
-        // Method begins at RVA 0x2973
+        // Method begins at RVA 0x2fbd
 	// Code size 7 (0x7)
 	.maxstack 8
 	IL_0000:  ldarg.1 
-	IL_0001:  newobj instance void class Bless.Gui.Areas.Plugins.DecimalArea::'.ctor'(class [Bless.Gui.Areas]Bless.Gui.Areas.AreaGroup)
+	IL_0001:  newobj instance void class Bless.Gui.Areas.Plugins.OffsetArea::'.ctor'(class [Bless.Gui.Areas]Bless.Gui.Areas.AreaGroup)
 	IL_0006:  ret 
-    } // end of method DecimalAreaPlugin::CreateArea
+    } // end of method OffsetAreaPlugin::CreateArea
 
-  } // end of class Bless.Gui.Areas.Plugins.DecimalAreaPlugin
+  } // end of class Bless.Gui.Areas.Plugins.OffsetAreaPlugin
 }
 
 .namespace Bless.Gui.Areas.Plugins
 {
-  .class public auto ansi beforefieldinit DecimalArea
-  	extends Bless.Gui.Areas.Plugins.GroupedArea
+  .class public auto ansi beforefieldinit OffsetArea
+  	extends [Bless.Gui.Areas]Bless.Gui.Areas.Area
   {
+    .field  private  int32 bytes
 
-    // method line 27
+    // method line 29
     .method public hidebysig specialname rtspecialname 
            instance default void '.ctor' (class [Bless.Gui.Areas]Bless.Gui.Areas.AreaGroup ag)  cil managed 
     {
-        // Method begins at RVA 0x2f40
+        // Method begins at RVA 0x2fc5
 	// Code size 26 (0x1a)
 	.maxstack 8
 	IL_0000:  ldarg.0 
 	IL_0001:  ldarg.1 
-	IL_0002:  call instance void class Bless.Gui.Areas.Plugins.GroupedArea::'.ctor'(class [Bless.Gui.Areas]Bless.Gui.Areas.AreaGroup)
+	IL_0002:  call instance void class [Bless.Gui.Areas]Bless.Gui.Areas.Area::'.ctor'(class [Bless.Gui.Areas]Bless.Gui.Areas.AreaGroup)
 	IL_0007:  ldarg.0 
-	IL_0008:  ldstr "decimal"
+	IL_0008:  ldstr "offset"
 	IL_000d:  stfld string [Bless.Gui.Areas]Bless.Gui.Areas.Area::'type'
 	IL_0012:  ldarg.0 
-	IL_0013:  ldc.i4.3 
-	IL_0014:  stfld int32 [Bless.Gui.Areas]Bless.Gui.Areas.Area::dpb
+	IL_0013:  ldc.i4.4 
+	IL_0014:  stfld int32 Bless.Gui.Areas.Plugins.OffsetArea::bytes
 	IL_0019:  ret 
-    } // end of method DecimalArea::.ctor
+    } // end of method OffsetArea::.ctor
 
-    // method line 28
-    .method public virtual hidebysig 
-           (null) cil managed 
+    // method line 30
+    .method public hidebysig specialname 
+           instance default int32 get_Bytes ()  cil managed 
     {
-        // Method begins at RVA 0x2f5c
-	// Code size 470 (0x1d6)
-	.maxstack 5
-	.locals init (
-		unsigned int8	V_0,
-		unsigned int8	V_1,
-		unsigned int8	V_2,
-		unsigned int8	V_3,
-		unsigned int8	V_4,
-		int32	V_5,
-		unsigned int8[]	V_6)
-	IL_0000:  ldarg.1 
-	IL_0001:  ldc.i4.s 0x30
-	IL_0003:  blt IL_0010
-
-	IL_0008:  ldarg.1 
-	IL_0009:  ldc.i4.s 0x39
-	IL_000b:  ble IL_0026
-
-	IL_0010:  ldarg.1 
-	IL_0011:  ldc.i4 65456
-	IL_0016:  blt IL_01d4
+        // Method begins at RVA 0x2fe0
+	// Code size 7 (0x7)
+	.maxstack 8
+	IL_0000:  ldarg.0 
+	IL_0001:  ldfld int32 Bless.Gui.Areas.Plugins.OffsetArea::bytes
+	IL_0006:  ret 
+    } // end of method OffsetArea::get_Bytes
 
-	IL_001b:  ldarg.1 
-	IL_001c:  ldc.i4 65465
-	IL_0021:  bgt IL_01d4
+    // method line 31
+    .method public hidebysig specialname 
+           instance default void set_Bytes (int32 'value')  cil managed 
+    {
+        // Method begins at RVA 0x2fe8
+	// Code size 8 (0x8)
+	.maxstack 8
+	IL_0000:  ldarg.0 
+	IL_0001:  ldarg.1 
+	IL_0002:  stfld int32 Bless.Gui.Areas.Plugins.OffsetArea::bytes
+	IL_0007:  ret 
+    } // end of method OffsetArea::set_Bytes
 
-	IL_0026:  ldarg.1 
-	IL_0027:  ldc.i4.s 0x30
-	IL_0029:  blt IL_0041
+    // method line 32
+    .method family virtual hidebysig 
+           instance default void RenderExtra ()  cil managed 
+    {
+        // Method begins at RVA 0x2ff4
+	// Code size 184 (0xb8)
+	.maxstack 5
+	.locals init (
+		int32	V_0,
+		int64	V_1,
+		int32	V_2,
+		int32	V_3,
+		int32	V_4)
+	IL_0000:  ldarg.0 
+	IL_0001:  ldfld int32 [Bless.Gui.Areas]Bless.Gui.Areas.Area::bpr
+	IL_0006:  ldc.i4.0 
+	IL_0007:  bgt IL_000d
 
-	IL_002e:  ldarg.1 
-	IL_002f:  ldc.i4.s 0x39
-	IL_0031:  bgt IL_0041
+	IL_000c:  ret 
+	IL_000d:  ldarg.0 
+	IL_000e:  ldfld int32 [Bless.Gui.Areas]Bless.Gui.Areas.Area::height
+	IL_0013:  ldarg.0 
+	IL_0014:  ldfld class [Bless.Gui.Drawers]Bless.Gui.Drawers.Drawer [Bless.Gui.Areas]Bless.Gui.Areas.Area::drawer
+	IL_0019:  callvirt instance int32 class [Bless.Gui.Drawers]Bless.Gui.Drawers.Drawer::get_Height()
+	IL_001e:  div 
+	IL_001f:  stloc.0 
+	IL_0020:  ldloc.0 
+	IL_0021:  ldarg.0 
+	IL_0022:  ldfld int32 [Bless.Gui.Areas]Bless.Gui.Areas.Area::bpr
+	IL_0027:  mul 
+	IL_0028:  conv.i8 
+	IL_0029:  stloc.1 
+	IL_002a:  ldc.i4.0 
+	IL_002b:  stloc.2 
+	IL_002c:  ldc.i4.0 
+	IL_002d:  stloc.3 
+	IL_002e:  ldloc.1 
+	IL_002f:  ldarg.0 
+	IL_0030:  ldfld class [Bless.Gui.Areas]Bless.Gui.Areas.AreaGroup [Bless.Gui.Areas]Bless.Gui.Areas.Area::areaGroup
+	IL_0035:  callvirt instance int64 class [Bless.Gui.Areas]Bless.Gui.Areas.AreaGroup::get_Offset()
+	IL_003a:  add 
+	IL_003b:  ldarg.0 
+	IL_003c:  ldfld class [Bless.Gui.Areas]Bless.Gui.Areas.AreaGroup [Bless.Gui.Areas]Bless.Gui.Areas.Area::areaGroup
+	IL_0041:  callvirt instance class [Bless.Buffers]Bless.Buffers.ByteBuffer class [Bless.Gui.Areas]Bless.Gui.Areas.AreaGroup::get_Buffer()
+	IL_0046:  callvirt instance int64 class [Bless.Buffers]Bless.Buffers.BaseBuffer::get_Size()
+	IL_004b:  ble IL_0070
 
-	IL_0036:  ldarg.1 
-	IL_0037:  ldc.i4.s 0x30
-	IL_0039:  sub 
-	IL_003a:  conv.u1 
-	IL_003b:  stloc.0 
-	IL_003c:  br IL_004a
+	IL_0050:  ldarg.0 
+	IL_0051:  ldfld class [Bless.Gui.Areas]Bless.Gui.Areas.AreaGroup [Bless.Gui.Areas]Bless.Gui.Areas.Area::areaGroup
+	IL_0056:  callvirt instance class [Bless.Buffers]Bless.Buffers.ByteBuffer class [Bless.Gui.Areas]Bless.Gui.Areas.AreaGroup::get_Buffer()
+	IL_005b:  callvirt instance int64 class [Bless.Buffers]Bless.Buffers.BaseBuffer::get_Size()
+	IL_0060:  ldarg.0 
+	IL_0061:  ldfld class [Bless.Gui.Areas]Bless.Gui.Areas.AreaGroup [Bless.Gui.Areas]Bless.Gui.Areas.Area::areaGroup
+	IL_0066:  callvirt instance int64 class [Bless.Gui.Areas]Bless.Gui.Areas.AreaGroup::get_Offset()
+	IL_006b:  sub 
+	IL_006c:  ldc.i4.1 
+	IL_006d:  conv.i8 
+	IL_006e:  add 
+	IL_006f:  stloc.1 
+	IL_0070:  ldloc.1 
+	IL_0071:  ldarg.0 
+	IL_0072:  ldfld int32 [Bless.Gui.Areas]Bless.Gui.Areas.Area::bpr
+	IL_0077:  conv.i8 
+	IL_0078:  div 
+	IL_0079:  conv.i4 
+	IL_007a:  stloc.2 
+	IL_007b:  ldloc.1 
+	IL_007c:  ldarg.0 
+	IL_007d:  ldfld int32 [Bless.Gui.Areas]Bless.Gui.Areas.Area::bpr
+	IL_0082:  conv.i8 
+	IL_0083:  rem 
+	IL_0084:  conv.i4 
+	IL_0085:  stloc.3 
+	IL_0086:  ldloc.3 
+	IL_0087:  ldc.i4.0 
+	IL_0088:  ble IL_0091
 
-	IL_0041:  ldarg.1 
-	IL_0042:  ldc.i4 65456
-	IL_0047:  sub 
-	IL_0048:  conv.u1 
-	IL_0049:  stloc.0 
-	IL_004a:  ldarg.0 
-	IL_004b:  ldfld class [Bless.Gui.Areas]Bless.Gui.Areas.AreaGroup [Bless.Gui.Areas]Bless.Gui.Areas.Area::areaGroup
-	IL_0050:  callvirt instance int64 class [Bless.Gui.Areas]Bless.Gui.Areas.AreaGroup::get_CursorOffset()
-	IL_0055:  ldarg.0 
-	IL_0056:  ldfld class [Bless.Gui.Areas]Bless.Gui.Areas.AreaGroup [Bless.Gui.Areas]Bless.Gui.Areas.Area::areaGroup
-	IL_005b:  callvirt instance class [Bless.Buffers]Bless.Buffers.ByteBuffer class [Bless.Gui.Areas]Bless.Gui.Areas.AreaGroup::get_Buffer()
-	IL_0060:  callvirt instance int64 class [Bless.Buffers]Bless.Buffers.BaseBuffer::get_Size()
-	IL_0065:  beq IL_0080
+	IL_008d:  ldloc.2 
+	IL_008e:  ldc.i4.1 
+	IL_008f:  add 
+	IL_0090:  stloc.2 
+	IL_0091:  ldc.i4.0 
+	IL_0092:  stloc.s 4
+	IL_0094:  br IL_00af
 
-	IL_006a:  ldarg.2 
-	IL_006b:  brtrue IL_0087
+	IL_0099:  ldarg.0 
+	IL_009a:  ldloc.s 4
+	IL_009c:  ldc.i4.0 
+	IL_009d:  ldarg.0 
+	IL_009e:  ldfld int32 [Bless.Gui.Areas]Bless.Gui.Areas.Area::bpr
+	IL_00a3:  ldc.i4.1 
+	IL_00a4:  callvirt instance void class [Bless.Gui.Areas]Bless.Gui.Areas.Area::RenderRowNormal(int32, int32, int32, bool)
+	IL_00a9:  ldloc.s 4
+	IL_00ab:  ldc.i4.1 
+	IL_00ac:  add 
+	IL_00ad:  stloc.s 4
+	IL_00af:  ldloc.s 4
+	IL_00b1:  ldloc.2 
+	IL_00b2:  blt IL_0099
 
-	IL_0070:  ldarg.0 
-	IL_0071:  ldfld class [Bless.Gui.Areas]Bless.Gui.Areas.AreaGroup [Bless.Gui.Areas]Bless.Gui.Areas.Area::areaGroup
-	IL_0076:  callvirt instance int32 class [Bless.Gui.Areas]Bless.Gui.Areas.AreaGroup::get_CursorDigit()
-	IL_007b:  brtrue IL_0087
+	IL_00b7:  ret 
+    } // end of method OffsetArea::RenderExtra
 
-	IL_0080:  ldc.i4.0 
-	IL_0081:  stloc.1 
-	IL_0082:  br IL_00a3
+    // method line 33
+    .method family virtual hidebysig 
+           instance default void RenderHighlight (class [Bless.Gui.Areas]Bless.Gui.Areas.Highlight h, valuetype [Bless.Gui.Drawers]Bless.Gui.Drawers.Drawer/HighlightType left, valuetype [Bless.Gui.Drawers]Bless.Gui.Drawers.Drawer/HighlightType right)  cil managed 
+    {
+        // Method begins at RVA 0x30b8
+	// Code size 1 (0x1)
+	.maxstack 8
+	IL_0000:  ret 
+    } // end of method OffsetArea::RenderHighlight
 
-	IL_0087:  ldarg.0 
-	IL_0088:  ldfld class [Bless.Gui.Areas]Bless.Gui.Areas.AreaGroup [Bless.Gui.Areas]Bless.Gui.Areas.Area::areaGroup
-	IL_008d:  callvirt instance class [Bless.Buffers]Bless.Buffers.ByteBuffer class [Bless.Gui.Areas]Bless.Gui.Areas.AreaGroup::get_Buffer()
-	IL_0092:  ldarg.0 
-	IL_0093:  ldfld class [Bless.Gui.Areas]Bless.Gui.Areas.AreaGroup [Bless.Gui.Areas]Bless.Gui.Areas.Area::areaGroup
-	IL_0098:  callvirt instance int64 class [Bless.Gui.Areas]Bless.Gui.Areas.AreaGroup::get_CursorOffset()
-	IL_009d:  callvirt instance unsigned int8 class [Bless.Buffers]Bless.Buffers.BaseBuffer::get_Item(int64)
-	IL_00a2:  stloc.1 
-	IL_00a3:  ldloc.1 
-	IL_00a4:  ldc.i4.s 0x0a
-	IL_00a6:  rem 
-	IL_00a7:  conv.u1 
-	IL_00a8:  stloc.2 
-	IL_00a9:  ldloc.1 
-	IL_00aa:  ldc.i4.s 0x0a
-	IL_00ac:  div 
-	IL_00ad:  ldc.i4.s 0x0a
-	IL_00af:  rem 
-	IL_00b0:  conv.u1 
-	IL_00b1:  stloc.3 
-	IL_00b2:  ldloc.1 
-	IL_00b3:  ldc.i4.s 0x64
-	IL_00b5:  div 
-	IL_00b6:  ldc.i4.s 0x0a
-	IL_00b8:  rem 
-	IL_00b9:  conv.u1 
-	IL_00ba:  stloc.s 4
-	IL_00bc:  ldarg.0 
-	IL_00bd:  ldfld class [Bless.Gui.Areas]Bless.Gui.Areas.AreaGroup [Bless.Gui.Areas]Bless.Gui.Areas.Area::areaGroup
-	IL_00c2:  callvirt instance int32 class [Bless.Gui.Areas]Bless.Gui.Areas.AreaGroup::get_CursorDigit()
-	IL_00c7:  brtrue IL_00d4
-
-	IL_00cc:  ldloc.0 
-	IL_00cd:  stloc.s 4
-	IL_00cf:  br IL_00ff
-
-	IL_00d4:  ldarg.0 
-	IL_00d5:  ldfld class [Bless.Gui.Areas]Bless.Gui.Areas.AreaGroup [Bless.Gui.Areas]Bless.Gui.Areas.Area::areaGroup
-	IL_00da:  callvirt instance int32 class [Bless.Gui.Areas]Bless.Gui.Areas.AreaGroup::get_CursorDigit()
-	IL_00df:  ldc.i4.1 
-	IL_00e0:  bne.un IL_00ec
-
-	IL_00e5:  ldloc.0 
-	IL_00e6:  stloc.3 
-	IL_00e7:  br IL_00ff
-
-	IL_00ec:  ldarg.0 
-	IL_00ed:  ldfld class [Bless.Gui.Areas]Bless.Gui.Areas.AreaGroup [Bless.Gui.Areas]Bless.Gui.Areas.Area::areaGroup
-	IL_00f2:  callvirt instance int32 class [Bless.Gui.Areas]Bless.Gui.Areas.AreaGroup::get_CursorDigit()
-	IL_00f7:  ldc.i4.2 
-	IL_00f8:  bne.un IL_00ff
-
-	IL_00fd:  ldloc.0 
-	IL_00fe:  stloc.2 
-	IL_00ff:  ldloc.s 4
-	IL_0101:  ldc.i4.s 0x64
-	IL_0103:  mul 
-	IL_0104:  ldloc.3 
-	IL_0105:  ldc.i4.s 0x0a
-	IL_0107:  mul 
-	IL_0108:  add 
-	IL_0109:  ldloc.2 
-	IL_010a:  add 
-	IL_010b:  stloc.s 5
-	IL_010d:  ldloc.s 5
-	IL_010f:  ldc.i4 255
-	IL_0114:  ble IL_011b
-
-	IL_0119:  ldc.i4.0 
-	IL_011a:  ret 
-	IL_011b:  ldc.i4.1 
-	IL_011c:  newarr [mscorlib]System.Byte
-	IL_0121:  dup 
-	IL_0122:  ldc.i4.0 
-	IL_0123:  ldloc.s 5
-	IL_0125:  conv.u1 
-	IL_0126:  stelem.i1 
-	IL_0127:  stloc.s 6
-	IL_0129:  ldarg.0 
-	IL_012a:  ldfld class [Bless.Gui.Areas]Bless.Gui.Areas.AreaGroup [Bless.Gui.Areas]Bless.Gui.Areas.Area::areaGroup
-	IL_012f:  callvirt instance int64 class [Bless.Gui.Areas]Bless.Gui.Areas.AreaGroup::get_CursorOffset()
-	IL_0134:  ldarg.0 
-	IL_0135:  ldfld class [Bless.Gui.Areas]Bless.Gui.Areas.AreaGroup [Bless.Gui.Areas]Bless.Gui.Areas.Area::areaGroup
-	IL_013a:  callvirt instance class [Bless.Buffers]Bless.Buffers.ByteBuffer class [Bless.Gui.Areas]Bless.Gui.Areas.AreaGroup::get_Buffer()
-	IL_013f:  callvirt instance int64 class [Bless.Buffers]Bless.Buffers.BaseBuffer::get_Size()
-	IL_0144:  bne.un IL_0169
-
-	IL_0149:  ldarg.0 
-	IL_014a:  ldfld class [Bless.Gui.Areas]Bless.Gui.Areas.AreaGroup [Bless.Gui.Areas]Bless.Gui.Areas.Area::areaGroup
-	IL_014f:  callvirt instance class [Bless.Buffers]Bless.Buffers.ByteBuffer class [Bless.Gui.Areas]Bless.Gui.Areas.AreaGroup::get_Buffer()
-	IL_0154:  ldloc.s 6
-	IL_0156:  ldc.i4.0 
-	IL_0157:  conv.i8 
-	IL_0158:  ldloc.s 6
-	IL_015a:  callvirt instance int64 class [mscorlib]System.Array::get_LongLength()
-	IL_015f:  callvirt instance void class [Bless.Buffers]Bless.Buffers.BaseBuffer::Append(unsigned int8[], int64, int64)
-	IL_0164:  br IL_01d2
-
-	IL_0169:  ldarg.2 
-	IL_016a:  brtrue IL_01aa
-
-	IL_016f:  ldarg.0 
-	IL_0170:  ldfld class [Bless.Gui.Areas]Bless.Gui.Areas.AreaGroup [Bless.Gui.Areas]Bless.Gui.Areas.Area::areaGroup
-	IL_0175:  callvirt instance int32 class [Bless.Gui.Areas]Bless.Gui.Areas.AreaGroup::get_CursorDigit()
-	IL_017a:  brtrue IL_01aa
-
-	IL_017f:  ldarg.0 
-	IL_0180:  ldfld class [Bless.Gui.Areas]Bless.Gui.Areas.AreaGroup [Bless.Gui.Areas]Bless.Gui.Areas.Area::areaGroup
-	IL_0185:  callvirt instance class [Bless.Buffers]Bless.Buffers.ByteBuffer class [Bless.Gui.Areas]Bless.Gui.Areas.AreaGroup::get_Buffer()
-	IL_018a:  ldarg.0 
-	IL_018b:  ldfld class [Bless.Gui.Areas]Bless.Gui.Areas.AreaGroup [Bless.Gui.Areas]Bless.Gui.Areas.Area::areaGroup
-	IL_0190:  callvirt instance int64 class [Bless.Gui.Areas]Bless.Gui.Areas.AreaGroup::get_CursorOffset()
-	IL_0195:  ldloc.s 6
-	IL_0197:  ldc.i4.0 
-	IL_0198:  conv.i8 
-	IL_0199:  ldloc.s 6
-	IL_019b:  callvirt instance int64 class [mscorlib]System.Array::get_LongLength()
-	IL_01a0:  callvirt instance void class [Bless.Buffers]Bless.Buffers.BaseBuffer::Insert(int64, unsigned int8[], int64, int64)
-	IL_01a5:  br IL_01d2
-
-	IL_01aa:  ldarg.0 
-	IL_01ab:  ldfld class [Bless.Gui.Areas]Bless.Gui.Areas.AreaGroup [Bless.Gui.Areas]Bless.Gui.Areas.Area::areaGroup
-	IL_01b0:  callvirt instance class [Bless.Buffers]Bless.Buffers.ByteBuffer class [Bless.Gui.Areas]Bless.Gui.Areas.AreaGroup::get_Buffer()
-	IL_01b5:  ldarg.0 
-	IL_01b6:  ldfld class [Bless.Gui.Areas]Bless.Gui.Areas.AreaGroup [Bless.Gui.Areas]Bless.Gui.Areas.Area::areaGroup
-	IL_01bb:  callvirt instance int64 class [Bless.Gui.Areas]Bless.Gui.Areas.AreaGroup::get_CursorOffset()
-	IL_01c0:  ldarg.0 
-	IL_01c1:  ldfld class [Bless.Gui.Areas]Bless.Gui.Areas.AreaGroup [Bless.Gui.Areas]Bless.Gui.Areas.Area::areaGroup
-	IL_01c6:  callvirt instance int64 class [Bless.Gui.Areas]Bless.Gui.Areas.AreaGroup::get_CursorOffset()
-	IL_01cb:  ldloc.s 6
-	IL_01cd:  callvirt instance void class [Bless.Buffers]Bless.Buffers.ByteBuffer::Replace(int64, int64, unsigned int8[])
-	IL_01d2:  ldc.i4.1 
-	IL_01d3:  ret 
-	IL_01d4:  ldc.i4.0 
-	IL_01d5:  ret 
-    } // end of method DecimalArea::<NULL METHOD SIGNATURE>
+    // method line 34
+    .method family virtual hidebysig 
+           instance default void RenderRowNormal (int32 i, int32 p, int32 n, bool blank)  cil managed 
+    {
+        // Method begins at RVA 0x30bc
+    } // end of method OffsetArea::RenderRowNormal
 
-    // method line 29
+    // method line 35
+    .method family virtual hidebysig 
+           instance default void RenderRowHighlight (int32 i, int32 p, int32 n, bool blank, valuetype [Bless.Gui.Drawers]Bless.Gui.Drawers.Drawer/HighlightType ht)  cil managed 
+    {
+        // Method begins at RVA 0x3207
+	// Code size 12 (0xc)
+	.maxstack 8
+	IL_0000:  ldarg.0 
+	IL_0001:  ldarg.1 
+	IL_0002:  ldarg.2 
+	IL_0003:  ldarg.3 
+	IL_0004:  ldarg.s 4
+	IL_0006:  callvirt instance void class [Bless.Gui.Areas]Bless.Gui.Areas.Area::RenderRowNormal(int32, int32, int32, bool)
+	IL_000b:  ret 
+    } // end of method OffsetArea::RenderRowHighlight
+
+    // method line 36
+    .method public virtual hidebysig 
+           instance default int32 CalcWidth (int32 n, bool force)  cil managed 
+    {
+        // Method begins at RVA 0x3214
+	// Code size 21 (0x15)
+	.maxstack 8
+	IL_0000:  ldc.i4.2 
+	IL_0001:  ldarg.0 
+	IL_0002:  ldfld int32 Bless.Gui.Areas.Plugins.OffsetArea::bytes
+	IL_0007:  mul 
+	IL_0008:  ldarg.0 
+	IL_0009:  ldfld class [Bless.Gui.Drawers]Bless.Gui.Drawers.Drawer [Bless.Gui.Areas]Bless.Gui.Areas.Area::drawer
+	IL_000e:  callvirt instance int32 class [Bless.Gui.Drawers]Bless.Gui.Drawers.Drawer::get_Width()
+	IL_0013:  mul 
+	IL_0014:  ret 
+    } // end of method OffsetArea::CalcWidth
+
+    // method line 37
+    .method public virtual hidebysig 
+           instance default void GetDisplayInfoByOffset (int64 'off', [out] int32& orow, [out] int32& obyte, [out] int32& ox, [out] int32& oy)  cil managed 
+    {
+        // Method begins at RVA 0x322c
+	// Code size 70 (0x46)
+	.maxstack 3
+	IL_0000:  ldarg.2 
+	IL_0001:  ldarg.1 
+	IL_0002:  ldarg.0 
+	IL_0003:  ldfld class [Bless.Gui.Areas]Bless.Gui.Areas.AreaGroup [Bless.Gui.Areas]Bless.Gui.Areas.Area::areaGroup
+	IL_0008:  callvirt instance int64 class [Bless.Gui.Areas]Bless.Gui.Areas.AreaGroup::get_Offset()
+	IL_000d:  sub 
+	IL_000e:  ldarg.0 
+	IL_000f:  ldfld int32 [Bless.Gui.Areas]Bless.Gui.Areas.Area::bpr
+	IL_0014:  conv.i8 
+	IL_0015:  div 
+	IL_0016:  conv.i4 
+	IL_0017:  stind.i4 
+	IL_0018:  ldarg.3 
+	IL_0019:  ldarg.1 
+	IL_001a:  ldarg.0 
+	IL_001b:  ldfld class [Bless.Gui.Areas]Bless.Gui.Areas.AreaGroup [Bless.Gui.Areas]Bless.Gui.Areas.Area::areaGroup
+	IL_0020:  callvirt instance int64 class [Bless.Gui.Areas]Bless.Gui.Areas.AreaGroup::get_Offset()
+	IL_0025:  sub 
+	IL_0026:  ldarg.0 
+	IL_0027:  ldfld int32 [Bless.Gui.Areas]Bless.Gui.Areas.Area::bpr
+	IL_002c:  conv.i8 
+	IL_002d:  rem 
+	IL_002e:  conv.i4 
+	IL_002f:  stind.i4 
+	IL_0030:  ldarg.s 5
+	IL_0032:  ldarg.2 
+	IL_0033:  ldind.i4 
+	IL_0034:  ldarg.0 
+	IL_0035:  ldfld class [Bless.Gui.Drawers]Bless.Gui.Drawers.Drawer [Bless.Gui.Areas]Bless.Gui.Areas.Area::drawer
+	IL_003a:  callvirt instance int32 class [Bless.Gui.Drawers]Bless.Gui.Drawers.Drawer::get_Height()
+	IL_003f:  mul 
+	IL_0040:  stind.i4 
+	IL_0041:  ldarg.s 4
+	IL_0043:  ldc.i4.0 
+	IL_0044:  stind.i4 
+	IL_0045:  ret 
+    } // end of method OffsetArea::GetDisplayInfoByOffset
+
+    // method line 38
+    .method public virtual hidebysig 
+           instance default int64 GetOffsetByDisplayInfo (int32 x, int32 y, [out] int32& digit, [out] valuetype [Bless.Gui.Areas]Bless.Gui.Areas.Area/GetOffsetFlags& 'flags')  cil managed 
+    {
+        // Method begins at RVA 0x3280
+	// Code size 75 (0x4b)
+	.maxstack 3
+	.locals init (
+		int32	V_0,
+		int64	V_1)
+	IL_0000:  ldarg.s 4
+	IL_0002:  ldc.i4.0 
+	IL_0003:  stind.i4 
+	IL_0004:  ldarg.2 
+	IL_0005:  ldarg.0 
+	IL_0006:  ldfld class [Bless.Gui.Drawers]Bless.Gui.Drawers.Drawer [Bless.Gui.Areas]Bless.Gui.Areas.Area::drawer
+	IL_000b:  callvirt instance int32 class [Bless.Gui.Drawers]Bless.Gui.Drawers.Drawer::get_Height()
+	IL_0010:  div 
+	IL_0011:  stloc.0 
+	IL_0012:  ldloc.0 
+	IL_0013:  ldarg.0 
+	IL_0014:  ldfld int32 [Bless.Gui.Areas]Bless.Gui.Areas.Area::bpr
+	IL_0019:  mul 
+	IL_001a:  conv.i8 
+	IL_001b:  ldarg.0 
+	IL_001c:  ldfld class [Bless.Gui.Areas]Bless.Gui.Areas.AreaGroup [Bless.Gui.Areas]Bless.Gui.Areas.Area::areaGroup
+	IL_0021:  callvirt instance int64 class [Bless.Gui.Areas]Bless.Gui.Areas.AreaGroup::get_Offset()
+	IL_0026:  add 
+	IL_0027:  stloc.1 
+	IL_0028:  ldloc.1 
+	IL_0029:  ldarg.0 
+	IL_002a:  ldfld class [Bless.Gui.Areas]Bless.Gui.Areas.AreaGroup [Bless.Gui.Areas]Bless.Gui.Areas.Area::areaGroup
+	IL_002f:  callvirt instance class [Bless.Buffers]Bless.Buffers.ByteBuffer class [Bless.Gui.Areas]Bless.Gui.Areas.AreaGroup::get_Buffer()
+	IL_0034:  callvirt instance int64 class [Bless.Buffers]Bless.Buffers.BaseBuffer::get_Size()
+	IL_0039:  blt IL_0046
+
+	IL_003e:  ldarg.s 4
+	IL_0040:  ldarg.s 4
+	IL_0042:  ldind.i4 
+	IL_0043:  ldc.i4.1 
+	IL_0044:  or 
+	IL_0045:  stind.i4 
+	IL_0046:  ldarg.3 
+	IL_0047:  ldc.i4.0 
+	IL_0048:  stind.i4 
+	IL_0049:  ldloc.1 
+	IL_004a:  ret 
+    } // end of method OffsetArea::GetOffsetByDisplayInfo
+
+    // method line 39
+    .method public virtual hidebysig 
+           instance default void Configure (class [System.Xml]System.Xml.XmlNode parentNode)  cil managed 
+    {
+        // Method begins at RVA 0x32d8
+	// Code size 161 (0xa1)
+	.maxstack 3
+	.locals init (
+		class [System.Xml]System.Xml.XmlNodeList	V_0,
+		class [System.Xml]System.Xml.XmlNode	V_1,
+		class [mscorlib]System.Collections.IEnumerator	V_2,
+		class [mscorlib]System.IDisposable	V_3)
+	IL_0000:  ldarg.0 
+	IL_0001:  ldarg.1 
+	IL_0002:  call instance void class [Bless.Gui.Areas]Bless.Gui.Areas.Area::Configure(class [System.Xml]System.Xml.XmlNode)
+	IL_0007:  ldarg.1 
+	IL_0008:  callvirt instance class [System.Xml]System.Xml.XmlNodeList class [System.Xml]System.Xml.XmlNode::get_ChildNodes()
+	IL_000d:  stloc.0 
+	IL_000e:  ldloc.0 
+	IL_000f:  callvirt instance class [mscorlib]System.Collections.IEnumerator class [System.Xml]System.Xml.XmlNodeList::GetEnumerator()
+	IL_0014:  stloc.2 
+	.try { // 0
+	  IL_0015:  br IL_007c
+
+	  IL_001a:  ldloc.2 
+	  IL_001b:  callvirt instance object class [mscorlib]System.Collections.IEnumerator::get_Current()
+	  IL_0020:  castclass [System.Xml]System.Xml.XmlNode
+	  IL_0025:  stloc.1 
+	  IL_0026:  ldloc.1 
+	  IL_0027:  callvirt instance string class [System.Xml]System.Xml.XmlNode::get_Name()
+	  IL_002c:  ldstr "case"
+	  IL_0031:  call bool string::op_Equality(string, string)
+	  IL_0036:  brfalse IL_0056
+
+	  IL_003b:  ldarg.0 
+	  IL_003c:  ldfld class [Bless.Gui.Drawers]Bless.Gui.Drawers.Drawer/Information [Bless.Gui.Areas]Bless.Gui.Areas.Area::drawerInformation
+	  IL_0041:  ldloc.1 
+	  IL_0042:  callvirt instance string class [System.Xml]System.Xml.XmlNode::get_InnerText()
+	  IL_0047:  ldstr "upper"
+	  IL_004c:  call bool string::op_Equality(string, string)
+	  IL_0051:  stfld bool [Bless.Gui.Drawers]Bless.Gui.Drawers.Drawer/Information::Uppercase
+	  IL_0056:  ldloc.1 
+	  IL_0057:  callvirt instance string class [System.Xml]System.Xml.XmlNode::get_Name()
+	  IL_005c:  ldstr "bytes"
+	  IL_0061:  call bool string::op_Equality(string, string)
+	  IL_0066:  brfalse IL_007c
+
+	  IL_006b:  ldarg.0 
+	  IL_006c:  ldloc.1 
+	  IL_006d:  callvirt instance string class [System.Xml]System.Xml.XmlNode::get_InnerText()
+	  IL_0072:  call int32 class [mscorlib]System.Convert::ToInt32(string)
+	  IL_0077:  call instance void class Bless.Gui.Areas.Plugins.OffsetArea::set_Bytes(int32)
+	  IL_007c:  ldloc.2 
+	  IL_007d:  callvirt instance bool class [mscorlib]System.Collections.IEnumerator::MoveNext()
+	  IL_0082:  brtrue IL_001a
+
+	  IL_0087:  leave IL_00a0
+
+	} // end .try 0
+	finally  { // 0
+	  IL_008c:  ldloc.2 
+	  IL_008d:  isinst [mscorlib]System.IDisposable
+	  IL_0092:  dup 
+	  IL_0093:  stloc.3 
+	  IL_0094:  brfalse IL_009f
+
+	  IL_0099:  ldloc.3 
+	  IL_009a:  callvirt instance void class [mscorlib]System.IDisposable::Dispose()
+	  IL_009f:  endfinally 
+	} // end handler 0
+	IL_00a0:  ret 
+    } // end of method OffsetArea::Configure
+
+    // method line 40
     .method public virtual hidebysig 
            instance default void Realize ()  cil managed 
     {
-        // Method begins at RVA 0x3140
-    } // end of method DecimalArea::Realize
+        // Method begins at RVA 0x3398
+    } // end of method OffsetArea::Realize
 
-  } // end of class Bless.Gui.Areas.Plugins.DecimalArea
+	.property instance int32 Bytes ()
+	{
+		.get instance default int32 Bless.Gui.Areas.Plugins.OffsetArea::get_Bytes () 
+		.set instance default void Bless.Gui.Areas.Plugins.OffsetArea::set_Bytes (int32 'value') 
+	}
+  } // end of class Bless.Gui.Areas.Plugins.OffsetArea
 }
 
 .namespace Bless.Gui.Areas.Plugins
@@ -1099,11 +1426,11 @@
   	extends [Bless.Plugins]Bless.Plugins.AreaPlugin
   {
 
-    // method line 30
+    // method line 41
     .method public hidebysig specialname rtspecialname 
            instance default void '.ctor' ()  cil managed 
     {
-        // Method begins at RVA 0x3171
+        // Method begins at RVA 0x33c9
 	// Code size 29 (0x1d)
 	.maxstack 8
 	IL_0000:  ldarg.0 
@@ -1117,34 +1444,12 @@
 	IL_001c:  ret 
     } // end of method HexAreaPlugin::.ctor
 
-    // method line 31
+    // method line 42
     .method public virtual hidebysig 
            instance default class [Bless.Gui.Areas]Bless.Gui.Areas.Area CreateArea (class [Bless.Gui.Areas]Bless.Gui.Areas.AreaGroup ag)  cil managed 
     {
-        // Method begins at RVA 0x318f
+        // Method begins at RVA 0x33e7
 	// Code size 7 (0x7)
 	.maxstack 8
 	IL_0000:  ldarg.1 
-	IL_0001:  newobj instance void class Bless.Gui.Areas.Plugins.HexArea::'.ctor'(class [Bless.Gui.Areas]Bless.Gui.Areas.AreaGroup)
-	IL_0006:  ret 
-    } // end of method HexAreaPlugin::CreateArea
-
-  } // end of class Bless.Gui.Areas.Plugins.HexAreaPlugin
-}
-
-.namespace Bless.Gui.Areas.Plugins
-{
-  .class public auto ansi beforefieldinit HexArea
-  	extends Bless.Gui.Areas.Plugins.GroupedArea
-  {
-
-    // method line 32
-    .method public hidebysig specialname rtspecialname 
-           instance default void '.ctor' (class [Bless.Gui.Areas]Bless.Gui.Areas.AreaGroup ag)  cil managed 
-    {
-        // Method begins at RVA 0x3197
-	// Code size 26 (0x1a)
-	.maxstack 8
-	IL_0000:  ldarg.0 
-	IL_0001:  ldarg.1 
-	IL_0002:  
\ No newline at end of file
+	IL_0001:  newobj instance void class
\ No newline at end of file
PE32 Mono/.Net assembly: /usr/lib64/bless/Bless.Gui.Drawers.dll
PE32 Mono/.Net assembly: /usr/lib64/bless/Bless.Gui.Plugins.dll
/usr/lib64/bless/Bless.Gui.Plugins.dll differs (PE32 executable (DLL) (console) Intel 80386, Mono/.Net assembly, for MS Windows)
--- old /usr/lib64/bless/Bless.Gui.Plugins.dll (monodis)
+++ new /usr/lib64/bless/Bless.Gui.Plugins.dll (monodis)
@@ -1,25 +1,29 @@
+.assembly extern Bless.Gui
+{
+  .ver 0:0:0:0
+}
 .assembly extern 'gtk-sharp'
 {
   .ver 2:12:0:0
   .publickeytoken = (35 E1 01 95 DA B3 C9 9F ) // 5.......
 }
-.assembly extern Bless.Gui
+.assembly extern Bless.Buffers
 {
   .ver 0:0:0:0
 }
-.assembly extern Bless.Tools.Find
+.assembly extern Bless.Util
 {
   .ver 0:0:0:0
 }
-.assembly extern Bless.Buffers
+.assembly extern Bless.Plugins
 {
   .ver 0:0:0:0
 }
-.assembly extern Bless.Util
+.assembly extern Bless.Tools.Find
 {
   .ver 0:0:0:0
 }
-.assembly extern Bless.Plugins
+.assembly extern Bless.Tools
 {
   .ver 0:0:0:0
 }
@@ -33,16 +37,17 @@
   .ver 4:0:0:0
   .publickeytoken = (B7 7A 5C 56 19 34 E0 89 ) // .z\V.4..
 }
+.assembly extern 'glade-sharp'
+{
+  .ver 2:12:0:0
+  .publickeytoken = (35 E1 01 95 DA B3 C9 9F ) // 5.......
+}
 .assembly extern System
 {
   .ver 4:0:0:0
   .publickeytoken = (B7 7A 5C 56 19 34 E0 89 ) // .z\V.4..
 }
-.assembly extern Bless.Tools
-{
-  .ver 0:0:0:0
-}
-.assembly extern 'glade-sharp'
+.assembly extern 'gdk-sharp'
 {
   .ver 2:12:0:0
   .publickeytoken = (35 E1 01 95 DA B3 C9 9F ) // 5.......
@@ -51,11 +56,6 @@
 {
   .ver 0:0:0:0
 }
-.assembly extern 'gdk-sharp'
-{
-  .ver 2:12:0:0
-  .publickeytoken = (35 E1 01 95 DA B3 C9 9F ) // 5.......
-}
 .assembly extern Bless.Gui.Drawers
 {
   .ver 0:0:0:0
@@ -79,44 +79,1309 @@
 
 .namespace Bless.Gui.Plugins
 {
-  .class public auto ansi beforefieldinit HelpOperationsPlugin
+  .class public auto ansi beforefieldinit ConversionTablePlugin
   	extends [Bless.Plugins]Bless.Plugins.GuiPlugin
   {
-    .field private static literal  string uiXml = "<menubar>\t<menu action=\"Help\">\t\t<menuitem name=\"Contents\" action=\"ContentsAction\" />\t\t<menuitem name=\"About\" action=\"AboutAction\" />\t\t<separator/>\t</menu></menubar>"
-    .field  private  <BROKEN CLASS token_ 1000001 due to Could not load file or assembly or one of its dependencies. assembly:gtk-sharp, Version=2.12.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f type:<unknown type> member:<none>> uiManager
+    .field  private  <BROKEN CLASS token_ 1000001 due to Could not load file or assembly or one of its dependencies. assembly:gtk-sharp, Version=2.12.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f type:<unknown type> member:<none>> dataBook
+    .field  private  <BROKEN CLASS token_ 2000003 due to Could not load file or assembly or one of its dependencies. assembly:gtk-sharp, Version=2.12.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f type:<unknown type> member:<none>> widget
+    .field  private  <BROKEN CLASS token_ 1000002 due to Could not load file or assembly or one of its dependencies. assembly:gtk-sharp, Version=2.12.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f type:<unknown type> member:<none>> mainWindow
+    .field  private  <BROKEN CLASS token_ 1000003 due to Could not load file or assembly or one of its dependencies. assembly:gtk-sharp, Version=2.12.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f type:<unknown type> member:<none>> conversionTableAction
+    .field  private  <BROKEN CLASS token_ 1000004 due to Could not load file or assembly or one of its dependencies. assembly:gtk-sharp, Version=2.12.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f type:<unknown type> member:<none>> uiManager
+    .field private static literal  string uiXml = "<menubar>\t<menu action=\"Tools\">\t\t<menuitem name=\"ConversionTable\" action=\"ConversionTableAction\" />\t</menu></menubar>"
 
     // method line 1
     .method public hidebysig specialname rtspecialname 
            (null) cil managed 
     {
         // Method begins at RVA 0x2050
-	// Code size 47 (0x2f)
+	// Code size 54 (0x36)
 	.maxstack 8
 	IL_0000:  ldarg.0 
 	IL_0001:  call instance void class [Bless.Plugins]Bless.Plugins.GuiPlugin::'.ctor'()
 	IL_0006:  ldarg.0 
-	IL_0007:  ldarg.2 
-	IL_0008:  stfld <BROKEN CLASS token_ 1000001 due to Could not load file or assembly or one of its dependencies. assembly:gtk-sharp, Version=2.12.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f type:<unknown type> member:<none>> Bless.Gui.Plugins.HelpOperationsPlugin::uiManager
+	IL_0007:  ldarg.1 
+	IL_0008:  stfld <BROKEN CLASS token_ 1000002 due to Could not load file or assembly or one of its dependencies. assembly:gtk-sharp, Version=2.12.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f type:<unknown type> member:<none>> Bless.Gui.Plugins.ConversionTablePlugin::mainWindow
 	IL_000d:  ldarg.0 
-	IL_000e:  ldstr "HelpOperations"
-	IL_0013:  stfld string [Bless.Plugins]Bless.Plugins.Plugin::name
-	IL_0018:  ldarg.0 
-	IL_0019:  ldstr "Alexandros Frantzis"
-	IL_001e:  stfld string [Bless.Plugins]Bless.Plugins.Plugin::author
-	IL_0023:  ldarg.0 
-	IL_0024:  ldstr "Provides access to basic help operations"
-	IL_0029:  stfld string [Bless.Plugins]Bless.Plugins.Plugin::description
-	IL_002e:  ret 
-    } // end of method HelpOperationsPlugin::<NULL METHOD SIGNATURE>
+	IL_000e:  ldarg.2 
+	IL_000f:  stfld <BROKEN CLASS token_ 1000004 due to Could not load file or assembly or one of its dependencies. assembly:gtk-sharp, Version=2.12.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f type:<unknown type> member:<none>> Bless.Gui.Plugins.ConversionTablePlugin::uiManager
+	IL_0014:  ldarg.0 
+	IL_0015:  ldstr "ConversionTable"
+	IL_001a:  stfld string [Bless.Plugins]Bless.Plugins.Plugin::name
+	IL_001f:  ldarg.0 
+	IL_0020:  ldstr "Alexandros Frantzis"
+	IL_0025:  stfld string [Bless.Plugins]Bless.Plugins.Plugin::author
+	IL_002a:  ldarg.0 
+	IL_002b:  ldstr "Convert"
+	IL_0030:  stfld string [Bless.Plugins]Bless.Plugins.Plugin::description
+	IL_0035:  ret 
+    } // end of method ConversionTablePlugin::<NULL METHOD SIGNATURE>
 
     // method line 2
     .method public virtual hidebysig 
            instance default bool Load ()  cil managed 
     {
-        // Method begins at RVA 0x2080
-	// Code size 21 (0x15)
+        // Method begins at RVA 0x2088
+    } // end of method ConversionTablePlugin::Load
+
+    // method line 3
+    .method private hidebysig 
+           (null) cil managed 
+    {
+        // Method begins at RVA 0x2110
+    } // end of method ConversionTablePlugin::<NULL METHOD SIGNATURE>
+
+    // method line 4
+    .method public hidebysig 
+           instance default void OnViewConversionTableToggled (object o, class [mscorlib]System.EventArgs args)  cil managed 
+    {
+        // Method begins at RVA 0x2198
+	// Code size 46 (0x2e)
+	.maxstack 4
+	.locals init (
+		bool	V_0)
+	IL_0000:  call class [Bless.Tools]Bless.Tools.PreferencesProxy class [Bless.Tools]Bless.Tools.Preferences::get_Proxy()
+	IL_0005:  ldstr "Tools.ConversionTable.Show"
+	IL_000a:  ldarg.0 
+	IL_000b:  ldfld <BROKEN CLASS token_ 1000003 due to Could not load file or assembly or one of its dependencies. assembly:gtk-sharp, Version=2.12.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f type:<unknown type> member:<none>> Bless.Gui.Plugins.ConversionTablePlugin::conversionTableAction
+	IL_0010:  callvirt instance bool ['gtk-sharp']Gtk.ToggleAction::get_Active()
+	IL_0015:  stloc.0 
+	IL_0016:  ldloca.s 0
+	IL_0018:  constrained. [mscorlib]System.Boolean
+	IL_001e:  callvirt instance string object::ToString()
+	IL_0023:  ldstr "ct1"
+	IL_0028:  callvirt instance void class [Bless.Tools]Bless.Tools.PreferencesProxy::Change(string, string, string)
+	IL_002d:  ret 
+    } // end of method ConversionTablePlugin::OnViewConversionTableToggled
+
+    // method line 5
+    .method private hidebysig 
+           instance default void OnPreferencesChanged (class [Bless.Tools]Bless.Tools.Preferences prefs)  cil managed 
+    {
+        // Method begins at RVA 0x21d2
+	// Code size 56 (0x38)
+	.maxstack 8
+	IL_0000:  ldarg.1 
+	IL_0001:  ldstr "Tools.ConversionTable.Show"
+	IL_0006:  callvirt instance string class [Bless.Tools]Bless.Tools.Preferences::get_Item(string)
+	IL_000b:  ldstr "True"
+	IL_0010:  call bool string::op_Equality(string, string)
+	IL_0015:  brfalse IL_002b
+
+	IL_001a:  ldarg.0 
+	IL_001b:  ldfld <BROKEN CLASS token_ 1000003 due to Could not load file or assembly or one of its dependencies. assembly:gtk-sharp, Version=2.12.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f type:<unknown type> member:<none>> Bless.Gui.Plugins.ConversionTablePlugin::conversionTableAction
+	IL_0020:  ldc.i4.1 
+	IL_0021:  callvirt instance void ['gtk-sharp']Gtk.ToggleAction::set_Active(bool)
+	IL_0026:  br IL_0037
+
+	IL_002b:  ldarg.0 
+	IL_002c:  ldfld <BROKEN CLASS token_ 1000003 due to Could not load file or assembly or one of its dependencies. assembly:gtk-sharp, Version=2.12.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f type:<unknown type> member:<none>> Bless.Gui.Plugins.ConversionTablePlugin::conversionTableAction
+	IL_0031:  ldc.i4.0 
+	IL_0032:  callvirt instance void ['gtk-sharp']Gtk.ToggleAction::set_Active(bool)
+	IL_0037:  ret 
+    } // end of method ConversionTablePlugin::OnPreferencesChanged
+
+  } // end of class Bless.Gui.Plugins.ConversionTablePlugin
+}
+
+.namespace Bless.Gui.Plugins
+{
+  .class public auto ansi beforefieldinit ConversionTable
+  	extends ['gtk-sharp']Gtk.HBox
+  {
+    .field  private  <BROKEN CLASS token_ 1000005 due to Could not load file or assembly or one of its dependencies. assembly:gtk-sharp, Version=2.12.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f type:<unknown type> member:<none>> ConversionTableWidget
+    .custom instance void ['glade-sharp']Glade.WidgetAttribute::.ctor() =  (01 00 00 00 ) // ....
+
+    .field  private  <BROKEN CLASS token_ 1000006 due to Could not load file or assembly or one of its dependencies. assembly:gtk-sharp, Version=2.12.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f type:<unknown type> member:<none>> Signed8bitEntry
+    .custom instance void ['glade-sharp']Glade.WidgetAttribute::.ctor() =  (01 00 00 00 ) // ....
+
+    .field  private  <BROKEN CLASS token_ 1000006 due to Could not load file or assembly or one of its dependencies. assembly:gtk-sharp, Version=2.12.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f type:<unknown type> member:<none>> Unsigned8bitEntry
+    .custom instance void ['glade-sharp']Glade.WidgetAttribute::.ctor() =  (01 00 00 00 ) // ....
+
+    .field  private  <BROKEN CLASS token_ 1000006 due to Could not load file or assembly or one of its dependencies. assembly:gtk-sharp, Version=2.12.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f type:<unknown type> member:<none>> Signed16bitEntry
+    .custom instance void ['glade-sharp']Glade.WidgetAttribute::.ctor() =  (01 00 00 00 ) // ....
+
+    .field  private  <BROKEN CLASS token_ 1000006 due to Could not load file or assembly or one of its dependencies. assembly:gtk-sharp, Version=2.12.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f type:<unknown type> member:<none>> Unsigned16bitEntry
+    .custom instance void ['glade-sharp']Glade.WidgetAttribute::.ctor() =  (01 00 00 00 ) // ....
+
+    .field  private  <BROKEN CLASS token_ 1000006 due to Could not load file or assembly or one of its dependencies. assembly:gtk-sharp, Version=2.12.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f type:<unknown type> member:<none>> Signed32bitEntry
+    .custom instance void ['glade-sharp']Glade.WidgetAttribute::.ctor() =  (01 00 00 00 ) // ....
+
+    .field  private  <BROKEN CLASS token_ 1000006 due to Could not load file or assembly or one of its dependencies. assembly:gtk-sharp, Version=2.12.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f type:<unknown type> member:<none>> Unsigned32bitEntry
+    .custom instance void ['glade-sharp']Glade.WidgetAttribute::.ctor() =  (01 00 00 00 ) // ....
+
+    .field  private  <BROKEN CLASS token_ 1000006 due to Could not load file or assembly or one of its dependencies. assembly:gtk-sharp, Version=2.12.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f type:<unknown type> member:<none>> Float32bitEntry
+    .custom instance void ['glade-sharp']Glade.WidgetAttribute::.ctor() =  (01 00 00 00 ) // ....
+
+    .field  private  <BROKEN CLASS token_ 1000006 due to Could not load file or assembly or one of its dependencies. assembly:gtk-sharp, Version=2.12.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f type:<unknown type> member:<none>> Float64bitEntry
+    .custom instance void ['glade-sharp']Glade.WidgetAttribute::.ctor() =  (01 00 00 00 ) // ....
+
+    .field  private  <BROKEN CLASS token_ 1000006 due to Could not load file or assembly or one of its dependencies. assembly:gtk-sharp, Version=2.12.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f type:<unknown type> member:<none>> HexadecimalEntry
+    .custom instance void ['glade-sharp']Glade.WidgetAttribute::.ctor() =  (01 00 00 00 ) // ....
+
+    .field  private  <BROKEN CLASS token_ 1000006 due to Could not load file or assembly or one of its dependencies. assembly:gtk-sharp, Version=2.12.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f type:<unknown type> member:<none>> DecimalEntry
+    .custom instance void ['glade-sharp']Glade.WidgetAttribute::.ctor() =  (01 00 00 00 ) // ....
+
+    .field  private  <BROKEN CLASS token_ 1000006 due to Could not load file or assembly or one of its dependencies. assembly:gtk-sharp, Version=2.12.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f type:<unknown type> member:<none>> OctalEntry
+    .custom instance void ['glade-sharp']Glade.WidgetAttribute::.ctor() =  (01 00 00 00 ) // ....
+
+    .field  private  <BROKEN CLASS token_ 1000006 due to Could not load file or assembly or one of its dependencies. assembly:gtk-sharp, Version=2.12.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f type:<unknown type> member:<none>> BinaryEntry
+    .custom instance void ['glade-sharp']Glade.WidgetAttribute::.ctor() =  (01 00 00 00 ) // ....
+
+    .field  private  <BROKEN CLASS token_ 1000006 due to Could not load file or assembly or one of its dependencies. assembly:gtk-sharp, Version=2.12.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f type:<unknown type> member:<none>> AsciiEntry
+    .custom instance void ['glade-sharp']Glade.WidgetAttribute::.ctor() =  (01 00 00 00 ) // ....
+
+    .field  private  <BROKEN CLASS token_ 1000007 due to Could not load file or assembly or one of its dependencies. assembly:gtk-sharp, Version=2.12.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f type:<unknown type> member:<none>> LittleEndianCheckButton
+    .custom instance void ['glade-sharp']Glade.WidgetAttribute::.ctor() =  (01 00 00 00 ) // ....
+
+    .field  private  <BROKEN CLASS token_ 1000007 due to Could not load file or assembly or one of its dependencies. assembly:gtk-sharp, Version=2.12.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f type:<unknown type> member:<none>> UnsignedAsHexCheckButton
+    .custom instance void ['glade-sharp']Glade.WidgetAttribute::.ctor() =  (01 00 00 00 ) // ....
+
+    .field  private  class [Bless.Gui]Bless.Gui.DataBook dataBook
+    .field  private  bool littleEndian
+    .field  private  bool unsignedAsHex
+
+    // method line 6
+    .method public hidebysig specialname rtspecialname 
+           instance default void '.ctor' (class [Bless.Gui]Bless.Gui.DataBook db)  cil managed 
+    {
+        // Method begins at RVA 0x220c
+    } // end of method ConversionTable::.ctor
+
+    // method line 7
+    .method private hidebysig 
+           instance default void OnDataViewAdded (class [Bless.Gui]Bless.Gui.DataView dv)  cil managed 
+    {
+        // Method begins at RVA 0x230a
+	// Code size 60 (0x3c)
+	.maxstack 8
+	IL_0000:  ldarg.1 
+	IL_0001:  callvirt instance class [Bless.Buffers]Bless.Buffers.ByteBuffer class [Bless.Gui]Bless.Gui.DataView::get_Buffer()
+	IL_0006:  ldarg.0 
+	IL_0007:  ldftn instance void class Bless.Gui.Plugins.ConversionTable::OnBufferContentsChanged(class [Bless.Buffers]Bless.Buffers.ByteBuffer)
+	IL_000d:  newobj instance void class [Bless.Buffers]Bless.Buffers.ByteBuffer/ChangedHandler::'.ctor'(object, native int)
+	IL_0012:  callvirt instance void class [Bless.Buffers]Bless.Buffers.ByteBuffer::add_Changed(class [Bless.Buffers]Bless.Buffers.ByteBuffer/ChangedHandler)
+	IL_0017:  ldarg.1 
+	IL_0018:  ldarg.0 
+	IL_0019:  ldftn instance void class Bless.Gui.Plugins.ConversionTable::OnBufferChanged(class [Bless.Gui]Bless.Gui.DataView)
+	IL_001f:  newobj instance void class [Bless.Gui]Bless.Gui.DataView/DataViewEventHandler::'.ctor'(object, native int)
+	IL_0024:  callvirt instance void class [Bless.Gui]Bless.Gui.DataView::add_BufferChanged(class [Bless.Gui]Bless.Gui.DataView/DataViewEventHandler)
+	IL_0029:  ldarg.1 
+	IL_002a:  ldarg.0 
+	IL_002b:  ldftn instance void class Bless.Gui.Plugins.ConversionTable::OnCursorChanged(class [Bless.Gui]Bless.Gui.DataView)
+	IL_0031:  newobj instance void class [Bless.Gui]Bless.Gui.DataView/DataViewEventHandler::'.ctor'(object, native int)
+	IL_0036:  callvirt instance void class [Bless.Gui]Bless.Gui.DataView::add_CursorChanged(class [Bless.Gui]Bless.Gui.DataView/DataViewEventHandler)
+	IL_003b:  ret 
+    } // end of method ConversionTable::OnDataViewAdded
+
+    // method line 8
+    .method private hidebysig 
+           (null) cil managed 
+    {
+        // Method begins at RVA 0x2348
+	// Code size 83 (0x53)
+	.maxstack 3
+	.locals init (
+		class [Bless.Gui]Bless.Gui.DataView	V_0)
+	IL_0000:  ldarg.2 
+	IL_0001:  callvirt instance <BROKEN CLASS token_ 1000017 due to Could not load file or assembly or one of its dependencies. assembly:gtk-sharp, Version=2.12.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f type:<unknown type> member:<none>> ['gtk-sharp']Gtk.RemovedArgs::get_Widget()
+	IL_0006:  castclass [Bless.Gui]Bless.Gui.DataViewDisplay
+	IL_000b:  callvirt instance class [Bless.Gui]Bless.Gui.DataView [Bless.Gui]Bless.Gui.DataViewDisplay::get_View()
+	IL_0010:  stloc.0 
+	IL_0011:  ldloc.0 
+	IL_0012:  callvirt instance class [Bless.Buffers]Bless.Buffers.ByteBuffer class [Bless.Gui]Bless.Gui.DataView::get_Buffer()
+	IL_0017:  ldarg.0 
+	IL_0018:  ldftn instance void class Bless.Gui.Plugins.ConversionTable::OnBufferContentsChanged(class [Bless.Buffers]Bless.Buffers.ByteBuffer)
+	IL_001e:  newobj instance void class [Bless.Buffers]Bless.Buffers.ByteBuffer/ChangedHandler::'.ctor'(object, native int)
+	IL_0023:  callvirt instance void class [Bless.Buffers]Bless.Buffers.ByteBuffer::remove_Changed(class [Bless.Buffers]Bless.Buffers.ByteBuffer/ChangedHandler)
+	IL_0028:  ldloc.0 
+	IL_0029:  ldarg.0 
+	IL_002a:  ldftn instance void class Bless.Gui.Plugins.ConversionTable::OnBufferChanged(class [Bless.Gui]Bless.Gui.DataView)
+	IL_0030:  newobj instance void class [Bless.Gui]Bless.Gui.DataView/DataViewEventHandler::'.ctor'(object, native int)
+	IL_0035:  callvirt instance void class [Bless.Gui]Bless.Gui.DataView::remove_BufferChanged(class [Bless.Gui]Bless.Gui.DataView/DataViewEventHandler)
+	IL_003a:  ldloc.0 
+	IL_003b:  ldarg.0 
+	IL_003c:  ldftn instance void class Bless.Gui.Plugins.ConversionTable::OnCursorChanged(class [Bless.Gui]Bless.Gui.DataView)
+	IL_0042:  newobj instance void class [Bless.Gui]Bless.Gui.DataView/DataViewEventHandler::'.ctor'(object, native int)
+	IL_0047:  callvirt instance void class [Bless.Gui]Bless.Gui.DataView::remove_CursorChanged(class [Bless.Gui]Bless.Gui.DataView/DataViewEventHandler)
+	IL_004c:  ldarg.0 
+	IL_004d:  call instance void class Bless.Gui.Plugins.ConversionTable::Update()
+	IL_0052:  ret 
+    } // end of method ConversionTable::<NULL METHOD SIGNATURE>
+
+    // method line 9
+    .method private hidebysig 
+           instance default void OnBufferChanged (class [Bless.Gui]Bless.Gui.DataView dv)  cil managed 
+    {
+        // Method begins at RVA 0x23a8
+	// Code size 43 (0x2b)
+	.maxstack 2
+	.locals init (
+		class [Bless.Gui]Bless.Gui.DataViewDisplay	V_0)
+	IL_0000:  ldarg.0 
+	IL_0001:  ldfld class [Bless.Gui]Bless.Gui.DataBook Bless.Gui.Plugins.ConversionTable::dataBook
+	IL_0006:  callvirt instance <BROKEN CLASS token_ 1000017 due to Could not load file or assembly or one of its dependencies. assembly:gtk-sharp, Version=2.12.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f type:<unknown type> member:<none>> ['gtk-sharp']Gtk.Notebook::get_CurrentPageWidget()
+	IL_000b:  castclass [Bless.Gui]Bless.Gui.DataViewDisplay
+	IL_0010:  stloc.0 
+	IL_0011:  ldloc.0 
+	IL_0012:  brfalse IL_0023
+
+	IL_0017:  ldloc.0 
+	IL_0018:  callvirt instance class [Bless.Gui]Bless.Gui.DataView [Bless.Gui]Bless.Gui.DataViewDisplay::get_View()
+	IL_001d:  ldarg.1 
+	IL_001e:  beq IL_0024
+
+	IL_0023:  ret 
+	IL_0024:  ldarg.0 
+	IL_0025:  call instance void class Bless.Gui.Plugins.ConversionTable::Update()
+	IL_002a:  ret 
+    } // end of method ConversionTable::OnBufferChanged
+
+    // method line 10
+    .method private hidebysig 
+           instance default void OnBufferContentsChanged (class [Bless.Buffers]Bless.Buffers.ByteBuffer bb)  cil managed 
+    {
+        // Method begins at RVA 0x23e0
+	// Code size 38 (0x26)
+	.maxstack 2
+	.locals init (
+		class Bless.Gui.Plugins.ConversionTable/'<OnBufferContentsChanged>c__AnonStorey0'	V_0)
+	IL_0000:  newobj instance void class Bless.Gui.Plugins.ConversionTable/'<OnBufferContentsChanged>c__AnonStorey0'::'.ctor'()
+	IL_0005:  stloc.0 
+	IL_0006:  ldloc.0 
+	IL_0007:  ldarg.1 
+	IL_0008:  stfld class [Bless.Buffers]Bless.Buffers.ByteBuffer Bless.Gui.Plugins.ConversionTable/'<OnBufferContentsChanged>c__AnonStorey0'::bb
+	IL_000d:  ldloc.0 
+	IL_000e:  ldarg.0 
+	IL_000f:  stfld class Bless.Gui.Plugins.ConversionTable Bless.Gui.Plugins.ConversionTable/'<OnBufferContentsChanged>c__AnonStorey0'::$this
+	IL_0014:  ldloc.0 
+	IL_0015:  ldftn instance void class Bless.Gui.Plugins.ConversionTable/'<OnBufferContentsChanged>c__AnonStorey0'::'<>m__0'(object, class [mscorlib]System.EventArgs)
+	IL_001b:  newobj instance void class [mscorlib]System.EventHandler::'.ctor'(object, native int)
+	IL_0020:  call void ['gtk-sharp']Gtk.Application::Invoke(class [mscorlib]System.EventHandler)
+	IL_0025:  ret 
+    } // end of method ConversionTable::OnBufferContentsChanged
+
+    // method line 11
+    .method private hidebysig 
+           (null) cil managed 
+    {
+        // Method begins at RVA 0x2412
+	// Code size 7 (0x7)
+	.maxstack 8
+	IL_0000:  ldarg.0 
+	IL_0001:  call instance void class Bless.Gui.Plugins.ConversionTable::Update()
+	IL_0006:  ret 
+    } // end of method ConversionTable::<NULL METHOD SIGNATURE>
+
+    // method line 12
+    .method private hidebysig 
+           instance default void OnCursorChanged (class [Bless.Gui]Bless.Gui.DataView dv)  cil managed 
+    {
+        // Method begins at RVA 0x241c
+	// Code size 37 (0x25)
+	.maxstack 2
+	.locals init (
+		class [Bless.Gui]Bless.Gui.DataView	V_0)
+	IL_0000:  ldarg.0 
+	IL_0001:  ldfld class [Bless.Gui]Bless.Gui.DataBook Bless.Gui.Plugins.ConversionTable::dataBook
+	IL_0006:  callvirt instance <BROKEN CLASS token_ 1000017 due to Could not load file or assembly or one of its dependencies. assembly:gtk-sharp, Version=2.12.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f type:<unknown type> member:<none>> ['gtk-sharp']Gtk.Notebook::get_CurrentPageWidget()
+	IL_000b:  castclass [Bless.Gui]Bless.Gui.DataViewDisplay
+	IL_0010:  callvirt instance class [Bless.Gui]Bless.Gui.DataView [Bless.Gui]Bless.Gui.DataViewDisplay::get_View()
+	IL_0015:  stloc.0 
+	IL_0016:  ldloc.0 
+	IL_0017:  ldarg.1 
+	IL_0018:  beq IL_001e
+
+	IL_001d:  ret 
+	IL_001e:  ldarg.0 
+	IL_001f:  call instance void class Bless.Gui.Plugins.ConversionTable::Update()
+	IL_0024:  ret 
+    } // end of method ConversionTable::OnCursorChanged
+
+    // method line 13
+    .method family virtual hidebysig 
+           instance default void OnHidden ()  cil managed 
+    {
+        // Method begins at RVA 0x2450
+	// Code size 72 (0x48)
+	.maxstack 4
+	.locals init (
+		class [Bless.Gui]Bless.Gui.DataViewDisplay	V_0)
+	IL_0000:  ldarg.0 
+	IL_0001:  call instance bool class Bless.Gui.Plugins.ConversionTable::IsFocusInTable()
+	IL_0006:  brfalse IL_0028
+
+	IL_000b:  ldarg.0 
+	IL_000c:  ldfld class [Bless.Gui]Bless.Gui.DataBook Bless.Gui.Plugins.ConversionTable::dataBook
+	IL_0011:  callvirt instance <BROKEN CLASS token_ 1000017 due to Could not load file or assembly or one of its dependencies. assembly:gtk-sharp, Version=2.12.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f type:<unknown type> member:<none>> ['gtk-sharp']Gtk.Notebook::get_CurrentPageWidget()
+	IL_0016:  castclass [Bless.Gui]Bless.Gui.DataViewDisplay
+	IL_001b:  stloc.0 
+	IL_001c:  ldloc.0 
+	IL_001d:  brfalse IL_0028
+
+	IL_0022:  ldloc.0 
+	IL_0023:  callvirt instance void [Bless.Gui]Bless.Gui.DataViewDisplay::GrabKeyboardFocus()
+	IL_0028:  call class [Bless.Tools]Bless.Tools.PreferencesProxy class [Bless.Tools]Bless.Tools.Preferences::get_Proxy()
+	IL_002d:  ldstr "Tools.ConversionTable.Show"
+	IL_0032:  ldstr "False"
+	IL_0037:  ldstr "ct2"
+	IL_003c:  callvirt instance void class [Bless.Tools]Bless.Tools.PreferencesProxy::Change(string, string, string)
+	IL_0041:  ldarg.0 
+	IL_0042:  call instance void ['gtk-sharp']Gtk.Widget::OnHidden()
+	IL_0047:  ret 
+    } // end of method ConversionTable::OnHidden
+
+    // method line 14
+    .method family virtual hidebysig 
+           instance default void OnShown ()  cil managed 
+    {
+        // Method begins at RVA 0x24a4
+	// Code size 38 (0x26)
+	.maxstack 8
+	IL_0000:  call class [Bless.Tools]Bless.Tools.PreferencesProxy class [Bless.Tools]Bless.Tools.Preferences::get_Proxy()
+	IL_0005:  ldstr "Tools.ConversionTable.Show"
+	IL_000a:  ldstr "True"
+	IL_000f:  ldstr "ct2"
+	IL_0014:  callvirt instance void class [Bless.Tools]Bless.Tools.PreferencesProxy::Change(string, string, string)
+	IL_0019:  ldarg.0 
+	IL_001a:  call instance void ['gtk-sharp']Gtk.Widget::OnShown()
+	IL_001f:  ldarg.0 
+	IL_0020:  call instance void class Bless.Gui.Plugins.ConversionTable::Update()
+	IL_0025:  ret 
+    } // end of method ConversionTable::OnShown
+
+    // method line 15
+    .method private hidebysig 
+           instance default bool IsFocusInTable ()  cil managed 
+    {
+        // Method begins at RVA 0x24cc
+    } // end of method ConversionTable::IsFocusInTable
+
+    // method line 16
+    .method private hidebysig 
+           instance default void OnLittleEndianToggled (object o, class [mscorlib]System.EventArgs args)  cil managed 
+    {
+        // Method begins at RVA 0x2533
+	// Code size 61 (0x3d)
 	.maxstack 8
 	IL_0000:  ldarg.0 
 	IL_0001:  ldarg.0 
-	IL_0002:  ldfld <BROKEN CLASS token_ 1000001 due to Could not load file or assembly or one of its dependencies. assembly:gtk-sharp, Version=2.12.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f type:<unknown type> member:<none>> Bless.Gui.Plugins.HelpOperationsPlugin::uiManager
-	IL_0007:  call Could not load signature of Bless.Gui.Plugins.HelpOperationsPlugin:AddMenuItems due to: Could not load file or assembly or one of its dependencies. assembly:gtk-sharp, Version=2.12.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f type:<unknown ty
\ No newline at end of file
+	IL_0002:  ldfld <BROKEN CLASS token_ 1000007 due to Could not load file or assembly or one of its dependencies. assembly:gtk-sharp, Version=2.12.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f type:<unknown type> member:<none>> Bless.Gui.Plugins.ConversionTable::LittleEndianCheckButton
+	IL_0007:  callvirt instance bool ['gtk-sharp']Gtk.ToggleButton::get_Active()
+	IL_000c:  stfld bool Bless.Gui.Plugins.ConversionTable::littleEndian
+	IL_0011:  call class [Bless.Tools]Bless.Tools.PreferencesProxy class [Bless.Tools]Bless.Tools.Preferences::get_Proxy()
+	IL_0016:  ldstr "Tools.ConversionTable.LEDecoding"
+	IL_001b:  ldarg.0 
+	IL_001c:  ldflda bool Bless.Gui.Plugins.ConversionTable::littleEndian
+	IL_0021:  constrained. [mscorlib]System.Boolean
+	IL_0027:  callvirt instance string object::ToString()
+	IL_002c:  ldstr "ct2"
+	IL_0031:  callvirt instance void class [Bless.Tools]Bless.Tools.PreferencesProxy::Change(string, string, string)
+	IL_0036:  ldarg.0 
+	IL_0037:  call instance void class Bless.Gui.Plugins.ConversionTable::Update()
+	IL_003c:  ret 
+    } // end of method ConversionTable::OnLittleEndianToggled
+
+    // method line 17
+    .method private hidebysig 
+           instance default void OnUnsignedAsHexToggled (object o, class [mscorlib]System.EventArgs args)  cil managed 
+    {
+        // Method begins at RVA 0x2571
+	// Code size 61 (0x3d)
+	.maxstack 8
+	IL_0000:  ldarg.0 
+	IL_0001:  ldarg.0 
+	IL_0002:  ldfld <BROKEN CLASS token_ 1000007 due to Could not load file or assembly or one of its dependencies. assembly:gtk-sharp, Version=2.12.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f type:<unknown type> member:<none>> Bless.Gui.Plugins.ConversionTable::UnsignedAsHexCheckButton
+	IL_0007:  callvirt instance bool ['gtk-sharp']Gtk.ToggleButton::get_Active()
+	IL_000c:  stfld bool Bless.Gui.Plugins.ConversionTable::unsignedAsHex
+	IL_0011:  call class [Bless.Tools]Bless.Tools.PreferencesProxy class [Bless.Tools]Bless.Tools.Preferences::get_Proxy()
+	IL_0016:  ldstr "Tools.ConversionTable.UnsignedAsHex"
+	IL_001b:  ldarg.0 
+	IL_001c:  ldflda bool Bless.Gui.Plugins.ConversionTable::unsignedAsHex
+	IL_0021:  constrained. [mscorlib]System.Boolean
+	IL_0027:  callvirt instance string object::ToString()
+	IL_002c:  ldstr "ct2"
+	IL_0031:  callvirt instance void class [Bless.Tools]Bless.Tools.PreferencesProxy::Change(string, string, string)
+	IL_0036:  ldarg.0 
+	IL_0037:  call instance void class Bless.Gui.Plugins.ConversionTable::Update()
+	IL_003c:  ret 
+    } // end of method ConversionTable::OnUnsignedAsHexToggled
+
+    // method line 18
+    .method private hidebysig 
+           instance default void OnPreferencesChanged (class [Bless.Tools]Bless.Tools.Preferences prefs)  cil managed 
+    {
+        // Method begins at RVA 0x25b0
+	// Code size 156 (0x9c)
+	.maxstack 2
+	IL_0000:  ldarg.1 
+	IL_0001:  ldstr "Tools.ConversionTable.LEDecoding"
+	IL_0006:  callvirt instance string class [Bless.Tools]Bless.Tools.Preferences::get_Item(string)
+	IL_000b:  ldstr "True"
+	IL_0010:  call bool string::op_Equality(string, string)
+	IL_0015:  brfalse IL_002b
+
+	IL_001a:  ldarg.0 
+	IL_001b:  ldfld <BROKEN CLASS token_ 1000007 due to Could not load file or assembly or one of its dependencies. assembly:gtk-sharp, Version=2.12.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f type:<unknown type> member:<none>> Bless.Gui.Plugins.ConversionTable::LittleEndianCheckButton
+	IL_0020:  ldc.i4.1 
+	IL_0021:  callvirt instance void ['gtk-sharp']Gtk.ToggleButton::set_Active(bool)
+	IL_0026:  br IL_0037
+
+	IL_002b:  ldarg.0 
+	IL_002c:  ldfld <BROKEN CLASS token_ 1000007 due to Could not load file or assembly or one of its dependencies. assembly:gtk-sharp, Version=2.12.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f type:<unknown type> member:<none>> Bless.Gui.Plugins.ConversionTable::LittleEndianCheckButton
+	IL_0031:  ldc.i4.0 
+	IL_0032:  callvirt instance void ['gtk-sharp']Gtk.ToggleButton::set_Active(bool)
+	IL_0037:  ldarg.1 
+	IL_0038:  ldstr "Tools.ConversionTable.UnsignedAsHex"
+	IL_003d:  callvirt instance string class [Bless.Tools]Bless.Tools.Preferences::get_Item(string)
+	IL_0042:  ldstr "True"
+	IL_0047:  call bool string::op_Equality(string, string)
+	IL_004c:  brfalse IL_0062
+
+	IL_0051:  ldarg.0 
+	IL_0052:  ldfld <BROKEN CLASS token_ 1000007 due to Could not load file or assembly or one of its dependencies. assembly:gtk-sharp, Version=2.12.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f type:<unknown type> member:<none>> Bless.Gui.Plugins.ConversionTable::UnsignedAsHexCheckButton
+	IL_0057:  ldc.i4.1 
+	IL_0058:  callvirt instance void ['gtk-sharp']Gtk.ToggleButton::set_Active(bool)
+	IL_005d:  br IL_006e
+
+	IL_0062:  ldarg.0 
+	IL_0063:  ldfld <BROKEN CLASS token_ 1000007 due to Could not load file or assembly or one of its dependencies. assembly:gtk-sharp, Version=2.12.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f type:<unknown type> member:<none>> Bless.Gui.Plugins.ConversionTable::UnsignedAsHexCheckButton
+	IL_0068:  ldc.i4.0 
+	IL_0069:  callvirt instance void ['gtk-sharp']Gtk.ToggleButton::set_Active(bool)
+	IL_006e:  ldarg.1 
+	IL_006f:  ldstr "Tools.ConversionTable.Show"
+	IL_0074:  callvirt instance string class [Bless.Tools]Bless.Tools.Preferences::get_Item(string)
+	IL_0079:  ldstr "True"
+	IL_007e:  call bool string::op_Equality(string, string)
+	IL_0083:  brfalse IL_0094
+
+	IL_0088:  ldarg.0 
+	IL_0089:  ldc.i4.1 
+	IL_008a:  call instance void ['gtk-sharp']Gtk.Widget::set_Visible(bool)
+	IL_008f:  br IL_009b
+
+	IL_0094:  ldarg.0 
+	IL_0095:  ldc.i4.0 
+	IL_0096:  call instance void ['gtk-sharp']Gtk.Widget::set_Visible(bool)
+	IL_009b:  ret 
+    } // end of method ConversionTable::OnPreferencesChanged
+
+    // method line 19
+    .method private hidebysig 
+           instance default void OnCloseButtonClicked (object o, class [mscorlib]System.EventArgs args)  cil managed 
+    {
+        // Method begins at RVA 0x2658
+	// Code size 21 (0x15)
+	.maxstack 8
+	IL_0000:  call class [Bless.Tools]Bless.Tools.Preferences class [Bless.Tools]Bless.Tools.Preferences::get_Instance()
+	IL_0005:  ldstr "Tools.ConversionTable.Show"
+	IL_000a:  ldstr "False"
+	IL_000f:  callvirt instance void class [Bless.Tools]Bless.Tools.Preferences::set_Item(string, string)
+	IL_0014:  ret 
+    } // end of method ConversionTable::OnCloseButtonClicked
+
+    // method line 20
+    .method private hidebysig 
+           instance default void Clear8bit ()  cil managed 
+    {
+        // Method begins at RVA 0x266e
+	// Code size 33 (0x21)
+	.maxstack 8
+	IL_0000:  ldarg.0 
+	IL_0001:  ldfld <BROKEN CLASS token_ 1000006 due to Could not load file or assembly or one of its dependencies. assembly:gtk-sharp, Version=2.12.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f type:<unknown type> member:<none>> Bless.Gui.Plugins.ConversionTable::Signed8bitEntry
+	IL_0006:  ldstr "---"
+	IL_000b:  callvirt instance void ['gtk-sharp']Gtk.Entry::set_Text(string)
+	IL_0010:  ldarg.0 
+	IL_0011:  ldfld <BROKEN CLASS token_ 1000006 due to Could not load file or assembly or one of its dependencies. assembly:gtk-sharp, Version=2.12.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f type:<unknown type> member:<none>> Bless.Gui.Plugins.ConversionTable::Unsigned8bitEntry
+	IL_0016:  ldstr "---"
+	IL_001b:  callvirt instance void ['gtk-sharp']Gtk.Entry::set_Text(string)
+	IL_0020:  ret 
+    } // end of method ConversionTable::Clear8bit
+
+    // method line 21
+    .method private hidebysig 
+           instance default void Clear16bit ()  cil managed 
+    {
+        // Method begins at RVA 0x2690
+	// Code size 33 (0x21)
+	.maxstack 8
+	IL_0000:  ldarg.0 
+	IL_0001:  ldfld <BROKEN CLASS token_ 1000006 due to Could not load file or assembly or one of its dependencies. assembly:gtk-sharp, Version=2.12.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f type:<unknown type> member:<none>> Bless.Gui.Plugins.ConversionTable::Signed16bitEntry
+	IL_0006:  ldstr "---"
+	IL_000b:  callvirt instance void ['gtk-sharp']Gtk.Entry::set_Text(string)
+	IL_0010:  ldarg.0 
+	IL_0011:  ldfld <BROKEN CLASS token_ 1000006 due to Could not load file or assembly or one of its dependencies. assembly:gtk-sharp, Version=2.12.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f type:<unknown type> member:<none>> Bless.Gui.Plugins.ConversionTable::Unsigned16bitEntry
+	IL_0016:  ldstr "---"
+	IL_001b:  callvirt instance void ['gtk-sharp']Gtk.Entry::set_Text(string)
+	IL_0020:  ret 
+    } // end of method ConversionTable::Clear16bit
+
+    // method line 22
+    .method private hidebysig 
+           instance default void Clear32bit ()  cil managed 
+    {
+        // Method begins at RVA 0x26b2
+	// Code size 33 (0x21)
+	.maxstack 8
+	IL_0000:  ldarg.0 
+	IL_0001:  ldfld <BROKEN CLASS token_ 1000006 due to Could not load file or assembly or one of its dependencies. assembly:gtk-sharp, Version=2.12.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f type:<unknown type> member:<none>> Bless.Gui.Plugins.ConversionTable::Signed32bitEntry
+	IL_0006:  ldstr "---"
+	IL_000b:  callvirt instance void ['gtk-sharp']Gtk.Entry::set_Text(string)
+	IL_0010:  ldarg.0 
+	IL_0011:  ldfld <BROKEN CLASS token_ 1000006 due to Could not load file or assembly or one of its dependencies. assembly:gtk-sharp, Version=2.12.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f type:<unknown type> member:<none>> Bless.Gui.Plugins.ConversionTable::Unsigned32bitEntry
+	IL_0016:  ldstr "---"
+	IL_001b:  callvirt instance void ['gtk-sharp']Gtk.Entry::set_Text(string)
+	IL_0020:  ret 
+    } // end of method ConversionTable::Clear32bit
+
+    // method line 23
+    .method private hidebysig 
+           instance default void ClearFloat ()  cil managed 
+    {
+        // Method begins at RVA 0x26d4
+	// Code size 33 (0x21)
+	.maxstack 8
+	IL_0000:  ldarg.0 
+	IL_0001:  ldfld <BROKEN CLASS token_ 1000006 due to Could not load file or assembly or one of its dependencies. assembly:gtk-sharp, Version=2.12.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f type:<unknown type> member:<none>> Bless.Gui.Plugins.ConversionTable::Float32bitEntry
+	IL_0006:  ldstr "---"
+	IL_000b:  callvirt instance void ['gtk-sharp']Gtk.Entry::set_Text(string)
+	IL_0010:  ldarg.0 
+	IL_0011:  ldfld <BROKEN CLASS token_ 1000006 due to Could not load file or assembly or one of its dependencies. assembly:gtk-sharp, Version=2.12.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f type:<unknown type> member:<none>> Bless.Gui.Plugins.ConversionTable::Float64bitEntry
+	IL_0016:  ldstr "---"
+	IL_001b:  callvirt instance void ['gtk-sharp']Gtk.Entry::set_Text(string)
+	IL_0020:  ret 
+    } // end of method ConversionTable::ClearFloat
+
+    // method line 24
+    .method private hidebysig 
+           instance default void ClearBases ()  cil managed 
+    {
+        // Method begins at RVA 0x26f8
+	// Code size 81 (0x51)
+	.maxstack 2
+	IL_0000:  ldarg.0 
+	IL_0001:  ldfld <BROKEN CLASS token_ 1000006 due to Could not load file or assembly or one of its dependencies. assembly:gtk-sharp, Version=2.12.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f type:<unknown type> member:<none>> Bless.Gui.Plugins.ConversionTable::HexadecimalEntry
+	IL_0006:  ldstr "---"
+	IL_000b:  callvirt instance void ['gtk-sharp']Gtk.Entry::set_Text(string)
+	IL_0010:  ldarg.0 
+	IL_0011:  ldfld <BROKEN CLASS token_ 1000006 due to Could not load file or assembly or one of its dependencies. assembly:gtk-sharp, Version=2.12.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f type:<unknown type> member:<none>> Bless.Gui.Plugins.ConversionTable::DecimalEntry
+	IL_0016:  ldstr "---"
+	IL_001b:  callvirt instance void ['gtk-sharp']Gtk.Entry::set_Text(string)
+	IL_0020:  ldarg.0 
+	IL_0021:  ldfld <BROKEN CLASS token_ 1000006 due to Could not load file or assembly or one of its dependencies. assembly:gtk-sharp, Version=2.12.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f type:<unknown type> member:<none>> Bless.Gui.Plugins.ConversionTable::OctalEntry
+	IL_0026:  ldstr "---"
+	IL_002b:  callvirt instance void ['gtk-sharp']Gtk.Entry::set_Text(string)
+	IL_0030:  ldarg.0 
+	IL_0031:  ldfld <BROKEN CLASS token_ 1000006 due to Could not load file or assembly or one of its dependencies. assembly:gtk-sharp, Version=2.12.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f type:<unknown type> member:<none>> Bless.Gui.Plugins.ConversionTable::BinaryEntry
+	IL_0036:  ldstr "---"
+	IL_003b:  callvirt instance void ['gtk-sharp']Gtk.Entry::set_Text(string)
+	IL_0040:  ldarg.0 
+	IL_0041:  ldfld <BROKEN CLASS token_ 1000006 due to Could not load file or assembly or one of its dependencies. assembly:gtk-sharp, Version=2.12.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f type:<unknown type> member:<none>> Bless.Gui.Plugins.ConversionTable::AsciiEntry
+	IL_0046:  ldstr "---"
+	IL_004b:  callvirt instance void ['gtk-sharp']Gtk.Entry::set_Text(string)
+	IL_0050:  ret 
+    } // end of method ConversionTable::ClearBases
+
+    // method line 25
+    .method private hidebysig 
+           instance default void Update8bit (class [Bless.Gui]Bless.Gui.DataView dv)  cil managed 
+    {
+        // Method begins at RVA 0x2758
+	// Code size 151 (0x97)
+	.maxstack 3
+	.locals init (
+		int64	V_0,
+		unsigned int8	V_1,
+		int8	V_2)
+	IL_0000:  ldarg.1 
+	IL_0001:  callvirt instance int64 class [Bless.Gui]Bless.Gui.DataView::get_CursorOffset()
+	IL_0006:  stloc.0 
+	IL_0007:  ldloc.0 
+	IL_0008:  ldarg.1 
+	IL_0009:  callvirt instance class [Bless.Buffers]Bless.Buffers.ByteBuffer class [Bless.Gui]Bless.Gui.DataView::get_Buffer()
+	IL_000e:  callvirt instance int64 class [Bless.Buffers]Bless.Buffers.BaseBuffer::get_Size()
+	IL_0013:  bge IL_0090
+
+	IL_0018:  ldloc.0 
+	IL_0019:  ldc.i4.0 
+	IL_001a:  conv.i8 
+	IL_001b:  blt IL_0090
+
+	IL_0020:  ldarg.1 
+	IL_0021:  callvirt instance class [Bless.Buffers]Bless.Buffers.ByteBuffer class [Bless.Gui]Bless.Gui.DataView::get_Buffer()
+	IL_0026:  ldloc.0 
+	IL_0027:  callvirt instance unsigned int8 class [Bless.Buffers]Bless.Buffers.BaseBuffer::get_Item(int64)
+	IL_002c:  stloc.1 
+	IL_002d:  ldloc.1 
+	IL_002e:  conv.i1 
+	IL_002f:  stloc.2 
+	IL_0030:  ldarg.0 
+	IL_0031:  ldfld <BROKEN CLASS token_ 1000006 due to Could not load file or assembly or one of its dependencies. assembly:gtk-sharp, Version=2.12.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f type:<unknown type> member:<none>> Bless.Gui.Plugins.ConversionTable::Signed8bitEntry
+	IL_0036:  ldloca.s 2
+	IL_0038:  constrained. [mscorlib]System.SByte
+	IL_003e:  callvirt instance string object::ToString()
+	IL_0043:  callvirt instance void ['gtk-sharp']Gtk.Entry::set_Text(string)
+	IL_0048:  ldarg.0 
+	IL_0049:  ldfld bool Bless.Gui.Plugins.ConversionTable::unsignedAsHex
+	IL_004e:  brfalse IL_0073
+
+	IL_0053:  ldarg.0 
+	IL_0054:  ldfld <BROKEN CLASS token_ 1000006 due to Could not load file or assembly or one of its dependencies. assembly:gtk-sharp, Version=2.12.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f type:<unknown type> member:<none>> Bless.Gui.Plugins.ConversionTable::Unsigned8bitEntry
+	IL_0059:  ldstr "0x{0:x}"
+	IL_005e:  ldloc.1 
+	IL_005f:  box [mscorlib]System.Byte
+	IL_0064:  call string string::Format(string, object)
+	IL_0069:  callvirt instance void ['gtk-sharp']Gtk.Entry::set_Text(string)
+	IL_006e:  br IL_008b
+
+	IL_0073:  ldarg.0 
+	IL_0074:  ldfld <BROKEN CLASS token_ 1000006 due to Could not load file or assembly or one of its dependencies. assembly:gtk-sharp, Version=2.12.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f type:<unknown type> member:<none>> Bless.Gui.Plugins.ConversionTable::Unsigned8bitEntry
+	IL_0079:  ldloca.s 1
+	IL_007b:  constrained. [mscorlib]System.Byte
+	IL_0081:  callvirt instance string object::ToString()
+	IL_0086:  callvirt instance void ['gtk-sharp']Gtk.Entry::set_Text(string)
+	IL_008b:  br IL_0096
+
+	IL_0090:  ldarg.0 
+	IL_0091:  call instance void class Bless.Gui.Plugins.ConversionTable::Clear8bit()
+	IL_0096:  ret 
+    } // end of method ConversionTable::Update8bit
+
+    // method line 26
+    .method private hidebysig 
+           instance default void Update16bit (class [Bless.Gui]Bless.Gui.DataView dv)  cil managed 
+    {
+        // Method begins at RVA 0x27fc
+	// Code size 235 (0xeb)
+	.maxstack 4
+	.locals init (
+		int64	V_0,
+		int16	V_1,
+		unsigned int16	V_2)
+	IL_0000:  ldarg.1 
+	IL_0001:  callvirt instance int64 class [Bless.Gui]Bless.Gui.DataView::get_CursorOffset()
+	IL_0006:  stloc.0 
+	IL_0007:  ldloc.0 
+	IL_0008:  ldarg.1 
+	IL_0009:  callvirt instance class [Bless.Buffers]Bless.Buffers.ByteBuffer class [Bless.Gui]Bless.Gui.DataView::get_Buffer()
+	IL_000e:  callvirt instance int64 class [Bless.Buffers]Bless.Buffers.BaseBuffer::get_Size()
+	IL_0013:  ldc.i4.1 
+	IL_0014:  conv.i8 
+	IL_0015:  sub 
+	IL_0016:  bge IL_00e4
+
+	IL_001b:  ldloc.0 
+	IL_001c:  ldc.i4.0 
+	IL_001d:  conv.i8 
+	IL_001e:  blt IL_00e4
+
+	IL_0023:  ldc.i4.0 
+	IL_0024:  stloc.1 
+	IL_0025:  ldarg.0 
+	IL_0026:  ldfld bool Bless.Gui.Plugins.ConversionTable::littleEndian
+	IL_002b:  brfalse IL_005b
+
+	IL_0030:  ldloc.1 
+	IL_0031:  ldarg.1 
+	IL_0032:  callvirt instance class [Bless.Buffers]Bless.Buffers.ByteBuffer class [Bless.Gui]Bless.Gui.DataView::get_Buffer()
+	IL_0037:  ldloc.0 
+	IL_0038:  ldc.i4.1 
+	IL_0039:  conv.i8 
+	IL_003a:  add 
+	IL_003b:  callvirt instance unsigned int8 class [Bless.Buffers]Bless.Buffers.BaseBuffer::get_Item(int64)
+	IL_0040:  ldc.i4.8 
+	IL_0041:  shl 
+	IL_0042:  conv.i2 
+	IL_0043:  add 
+	IL_0044:  conv.i2 
+	IL_0045:  stloc.1 
+	IL_0046:  ldloc.1 
+	IL_0047:  ldarg.1 
+	IL_0048:  callvirt instance class [Bless.Buffers]Bless.Buffers.ByteBuffer class [Bless.Gui]Bless.Gui.DataView::get_Buffer()
+	IL_004d:  ldloc.0 
+	IL_004e:  callvirt instance unsigned int8 class [Bless.Buffers]Bless.Buffers.BaseBuffer::get_Item(int64)
+	IL_0053:  add 
+	IL_0054:  conv.i2 
+	IL_0055:  stloc.1 
+	IL_0056:  br IL_0081
+
+	IL_005b:  ldloc.1 
+	IL_005c:  ldarg.1 
+	IL_005d:  callvirt instance class [Bless.Buffers]Bless.Buffers.ByteBuffer class [Bless.Gui]Bless.Gui.DataView::get_Buffer()
+	IL_0062:  ldloc.0 
+	IL_0063:  callvirt instance unsigned int8 class [Bless.Buffers]Bless.Buffers.BaseBuffer::get_Item(int64)
+	IL_0068:  ldc.i4.8 
+	IL_0069:  shl 
+	IL_006a:  conv.i2 
+	IL_006b:  add 
+	IL_006c:  conv.i2 
+	IL_006d:  stloc.1 
+	IL_006e:  ldloc.1 
+	IL_006f:  ldarg.1 
+	IL_0070:  callvirt instance class [Bless.Buffers]Bless.Buffers.ByteBuffer class [Bless.Gui]Bless.Gui.DataView::get_Buffer()
+	IL_0075:  ldloc.0 
+	IL_0076:  ldc.i4.1 
+	IL_0077:  conv.i8 
+	IL_0078:  add 
+	IL_0079:  callvirt instance unsigned int8 class [Bless.Buffers]Bless.Buffers.BaseBuffer::get_Item(int64)
+	IL_007e:  add 
+	IL_007f:  conv.i2 
+	IL_0080:  stloc.1 
+	IL_0081:  ldloc.1 
+	IL_0082:  conv.u2 
+	IL_0083:  stloc.2 
+	IL_0084:  ldarg.0 
+	IL_0085:  ldfld <BROKEN CLASS token_ 1000006 due to Could not load file or assembly or one of its dependencies. assembly:gtk-sharp, Version=2.12.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f type:<unknown type> member:<none>> Bless.Gui.Plugins.ConversionTable::Signed16bitEntry
+	IL_008a:  ldloca.s 1
+	IL_008c:  constrained. [mscorlib]System.Int16
+	IL_0092:  callvirt instance string object::ToString()
+	IL_0097:  callvirt instance void ['gtk-sharp']Gtk.Entry::set_Text(string)
+	IL_009c:  ldarg.0 
+	IL_009d:  ldfld bool Bless.Gui.Plugins.ConversionTable::unsignedAsHex
+	IL_00a2:  brfalse IL_00c7
+
+	IL_00a7:  ldarg.0 
+	IL_00a8:  ldfld <BROKEN CLASS token_ 1000006 due to Could not load file or assembly or one of its dependencies. assembly:gtk-sharp, Version=2.12.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f type:<unknown type> member:<none>> Bless.Gui.Plugins.ConversionTable::Unsigned16bitEntry
+	IL_00ad:  ldstr "0x{0:x}"
+	IL_00b2:  ldloc.2 
+	IL_00b3:  box [mscorlib]System.UInt16
+	IL_00b8:  call string string::Format(string, object)
+	IL_00bd:  callvirt instance void ['gtk-sharp']Gtk.Entry::set_Text(string)
+	IL_00c2:  br IL_00df
+
+	IL_00c7:  ldarg.0 
+	IL_00c8:  ldfld <BROKEN CLASS token_ 1000006 due to Could not load file or assembly or one of its dependencies. assembly:gtk-sharp, Version=2.12.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f type:<unknown type> member:<none>> Bless.Gui.Plugins.ConversionTable::Unsigned16bitEntry
+	IL_00cd:  ldloca.s 2
+	IL_00cf:  constrained. [mscorlib]System.UInt16
+	IL_00d5:  callvirt instance string object::ToString()
+	IL_00da:  callvirt instance void ['gtk-sharp']Gtk.Entry::set_Text(string)
+	IL_00df:  br IL_00ea
+
+	IL_00e4:  ldarg.0 
+	IL_00e5:  call instance void class Bless.Gui.Plugins.ConversionTable::Clear16bit()
+	IL_00ea:  ret 
+    } // end of method ConversionTable::Update16bit
+
+    // method line 27
+    .method private hidebysig 
+           instance default void Update32bit (class [Bless.Gui]Bless.Gui.DataView dv)  cil managed 
+    {
+        // Method begins at RVA 0x28f4
+	// Code size 312 (0x138)
+	.maxstack 4
+	.locals init (
+		int64	V_0,
+		int32	V_1,
+		unsigned int32	V_2)
+	IL_0000:  ldarg.1 
+	IL_0001:  callvirt instance int64 class [Bless.Gui]Bless.Gui.DataView::get_CursorOffset()
+	IL_0006:  stloc.0 
+	IL_0007:  ldloc.0 
+	IL_0008:  ldarg.1 
+	IL_0009:  callvirt instance class [Bless.Buffers]Bless.Buffers.ByteBuffer class [Bless.Gui]Bless.Gui.DataView::get_Buffer()
+	IL_000e:  callvirt instance int64 class [Bless.Buffers]Bless.Buffers.BaseBuffer::get_Size()
+	IL_0013:  ldc.i4.3 
+	IL_0014:  conv.i8 
+	IL_0015:  sub 
+	IL_0016:  bge IL_0131
+
+	IL_001b:  ldloc.0 
+	IL_001c:  ldc.i4.0 
+	IL_001d:  conv.i8 
+	IL_001e:  blt IL_0131
+
+	IL_0023:  ldc.i4.0 
+	IL_0024:  stloc.1 
+	IL_0025:  ldarg.0 
+	IL_0026:  ldfld bool Bless.Gui.Plugins.ConversionTable::littleEndian
+	IL_002b:  brfalse IL_0082
+
+	IL_0030:  ldloc.1 
+	IL_0031:  ldarg.1 
+	IL_0032:  callvirt instance class [Bless.Buffers]Bless.Buffers.ByteBuffer class [Bless.Gui]Bless.Gui.DataView::get_Buffer()
+	IL_0037:  ldloc.0 
+	IL_0038:  ldc.i4.3 
+	IL_0039:  conv.i8 
+	IL_003a:  add 
+	IL_003b:  callvirt instance unsigned int8 class [Bless.Buffers]Bless.Buffers.BaseBuffer::get_Item(int64)
+	IL_0040:  ldc.i4.s 0x18
+	IL_0042:  shl 
+	IL_0043:  add 
+	IL_0044:  stloc.1 
+	IL_0045:  ldloc.1 
+	IL_0046:  ldarg.1 
+	IL_0047:  callvirt instance class [Bless.Buffers]Bless.Buffers.ByteBuffer class [Bless.Gui]Bless.Gui.DataView::get_Buffer()
+	IL_004c:  ldloc.0 
+	IL_004d:  ldc.i4.2 
+	IL_004e:  conv.i8 
+	IL_004f:  add 
+	IL_0050:  callvirt instance unsigned int8 class [Bless.Buffers]Bless.Buffers.BaseBuffer::get_Item(int64)
+	IL_0055:  ldc.i4.s 0x10
+	IL_0057:  shl 
+	IL_0058:  add 
+	IL_0059:  stloc.1 
+	IL_005a:  ldloc.1 
+	IL_005b:  ldarg.1 
+	IL_005c:  callvirt instance class [Bless.Buffers]Bless.Buffers.ByteBuffer class [Bless.Gui]Bless.Gui.DataView::get_Buffer()
+	IL_0061:  ldloc.0 
+	IL_0062:  ldc.i4.1 
+	IL_0063:  conv.i8 
+	IL_0064:  add 
+	IL_0065:  callvirt instance unsigned int8 class [Bless.Buffers]Bless.Buffers.BaseBuffer::get_Item(int64)
+	IL_006a:  ldc.i4.8 
+	IL_006b:  shl 
+	IL_006c:  add 
+	IL_006d:  stloc.1 
+	IL_006e:  ldloc.1 
+	IL_006f:  ldarg.1 
+	IL_0070:  callvirt instance class [Bless.Buffers]Bless.Buffers.ByteBuffer class [Bless.Gui]Bless.Gui.DataView::get_Buffer()
+	IL_0075:  ldloc.0 
+	IL_0076:  callvirt instance unsigned int8 class [Bless.Buffers]Bless.Buffers.BaseBuffer::get_Item(int64)
+	IL_007b:  add 
+	IL_007c:  stloc.1 
+	IL_007d:  br IL_00cf
+
+	IL_0082:  ldloc.1 
+	IL_0083:  ldarg.1 
+	IL_0084:  callvirt instance class [Bless.Buffers]Bless.Buffers.ByteBuffer class [Bless.Gui]Bless.Gui.DataView::get_Buffer()
+	IL_0089:  ldloc.0 
+	IL_008a:  callvirt instance unsigned int8 class [Bless.Buffers]Bless.Buffers.BaseBuffer::get_Item(int64)
+	IL_008f:  ldc.i4.s 0x18
+	IL_0091:  shl 
+	IL_0092:  add 
+	IL_0093:  stloc.1 
+	IL_0094:  ldloc.1 
+	IL_0095:  ldarg.1 
+	IL_0096:  callvirt instance class [Bless.Buffers]Bless.Buffers.ByteBuffer class [Bless.Gui]Bless.Gui.DataView::get_Buffer()
+	IL_009b:  ldloc.0 
+	IL_009c:  ldc.i4.1 
+	IL_009d:  conv.i8 
+	IL_009e:  add 
+	IL_009f:  callvirt instance unsigned int8 class [Bless.Buffers]Bless.Buffers.BaseBuffer::get_Item(int64)
+	IL_00a4:  ldc.i4.s 0x10
+	IL_00a6:  shl 
+	IL_00a7:  add 
+	IL_00a8:  stloc.1 
+	IL_00a9:  ldloc.1 
+	IL_00aa:  ldarg.1 
+	IL_00ab:  callvirt instance class [Bless.Buffers]Bless.Buffers.ByteBuffer class [Bless.Gui]Bless.Gui.DataView::get_Buffer()
+	IL_00b0:  ldloc.0 
+	IL_00b1:  ldc.i4.2 
+	IL_00b2:  conv.i8 
+	IL_00b3:  add 
+	IL_00b4:  callvirt instance unsigned int8 class [Bless.Buffers]Bless.Buffers.BaseBuffer::get_Item(int64)
+	IL_00b9:  ldc.i4.8 
+	IL_00ba:  shl 
+	IL_00bb:  add 
+	IL_00bc:  stloc.1 
+	IL_00bd:  ldloc.1 
+	IL_00be:  ldarg.1 
+	IL_00bf:  callvirt instance class [Bless.Buffers]Bless.Buffers.ByteBuffer class [Bless.Gui]Bless.Gui.DataView::get_Buffer()
+	IL_00c4:  ldloc.0 
+	IL_00c5:  ldc.i4.3 
+	IL_00c6:  conv.i8 
+	IL_00c7:  add 
+	IL_00c8:  callvirt instance unsigned int8 class [Bless.Buffers]Bless.Buffers.BaseBuffer::get_Item(int64)
+	IL_00cd:  add 
+	IL_00ce:  stloc.1 
+	IL_00cf:  ldloc.1 
+	IL_00d0:  stloc.2 
+	IL_00d1:  ldarg.0 
+	IL_00d2:  ldfld <BROKEN CLASS token_ 1000006 due to Could not load file or assembly or one of its dependencies. assembly:gtk-sharp, Version=2.12.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f type:<unknown type> member:<none>> Bless.Gui.Plugins.ConversionTable::Signed32bitEntry
+	IL_00d7:  ldloca.s 1
+	IL_00d9:  constrained. [mscorlib]System.Int32
+	IL_00df:  callvirt instance string object::ToString()
+	IL_00e4:  callvirt instance void ['gtk-sharp']Gtk.Entry::set_Text(string)
+	IL_00e9:  ldarg.0 
+	IL_00ea:  ldfld bool Bless.Gui.Plugins.ConversionTable::unsignedAsHex
+	IL_00ef:  brfalse IL_0114
+
+	IL_00f4:  ldarg.0 
+	IL_00f5:  ldfld <BROKEN CLASS token_ 1000006 due to Could not load file or assembly or one of its dependencies. assembly:gtk-sharp, Version=2.12.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f type:<unknown type> member:<none>> Bless.Gui.Plugins.ConversionTable::Unsigned32bitEntry
+	IL_00fa:  ldstr "0x{0:x}"
+	IL_00ff:  ldloc.2 
+	IL_0100:  box [mscorlib]System.UInt32
+	IL_0105:  call string string::Format(string, object)
+	IL_010a:  callvirt instance void ['gtk-sharp']Gtk.Entry::set_Text(string)
+	IL_010f:  br IL_012c
+
+	IL_0114:  ldarg.0 
+	IL_0115:  ldfld <BROKEN CLASS token_ 1000006 due to Could not load file or assembly or one of its dependencies. assembly:gtk-sharp, Version=2.12.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f type:<unknown type> member:<none>> Bless.Gui.Plugins.ConversionTable::Unsigned32bitEntry
+	IL_011a:  ldloca.s 2
+	IL_011c:  constrained. [mscorlib]System.UInt32
+	IL_0122:  callvirt instance string object::ToString()
+	IL_0127:  callvirt instance void ['gtk-sharp']Gtk.Entry::set_Text(string)
+	IL_012c:  br IL_0137
+
+	IL_0131:  ldarg.0 
+	IL_0132:  call instance void class Bless.Gui.Plugins.ConversionTable::Clear32bit()
+	IL_0137:  ret 
+    } // end of method ConversionTable::Update32bit
+
+    // method line 28
+    .method private hidebysig 
+           instance default void UpdateFloat (class [Bless.Gui]Bless.Gui.DataView dv)  cil managed 
+    {
+        // Method begins at RVA 0x2a38
+	// Code size 353 (0x161)
+	.maxstack 5
+	.locals init (
+		int64	V_0,
+		unsigned int8[]	V_1,
+		int32	V_2,
+		int32	V_3,
+		float32	V_4,
+		int32	V_5,
+		int32	V_6,
+		float64	V_7)
+	IL_0000:  ldarg.1 
+	IL_0001:  callvirt instance int64 class [Bless.Gui]Bless.Gui.DataView::get_CursorOffset()
+	IL_0006:  stloc.0 
+	IL_0007:  ldloc.0 
+	IL_0008:  ldarg.1 
+	IL_0009:  callvirt instance class [Bless.Buffers]Bless.Buffers.ByteBuffer class [Bless.Gui]Bless.Gui.DataView::get_Buffer()
+	IL_000e:  callvirt instance int64 class [Bless.Buffers]Bless.Buffers.BaseBuffer::get_Size()
+	IL_0013:  ldc.i4.3 
+	IL_0014:  conv.i8 
+	IL_0015:  sub 
+	IL_0016:  bge IL_015a
+
+	IL_001b:  ldloc.0 
+	IL_001c:  ldc.i4.0 
+	IL_001d:  conv.i8 
+	IL_001e:  blt IL_015a
+
+	IL_0023:  ldc.i4.8 
+	IL_0024:  newarr [mscorlib]System.Byte
+	IL_0029:  stloc.1 
+	IL_002a:  ldarg.0 
+	IL_002b:  ldfld bool Bless.Gui.Plugins.ConversionTable::littleEndian
+	IL_0030:  brfalse IL_005e
+
+	IL_0035:  ldc.i4.0 
+	IL_0036:  stloc.2 
+	IL_0037:  br IL_0052
+
+	IL_003c:  ldloc.1 
+	IL_003d:  ldloc.2 
+	IL_003e:  ldarg.1 
+	IL_003f:  callvirt instance class [Bless.Buffers]Bless.Buffers.ByteBuffer class [Bless.Gui]Bless.Gui.DataView::get_Buffer()
+	IL_0044:  ldloc.0 
+	IL_0045:  ldloc.2 
+	IL_0046:  conv.i8 
+	IL_0047:  add 
+	IL_0048:  callvirt instance unsigned int8 class [Bless.Buffers]Bless.Buffers.BaseBuffer::get_Item(int64)
+	IL_004d:  stelem.i1 
+	IL_004e:  ldloc.2 
+	IL_004f:  ldc.i4.1 
+	IL_0050:  add 
+	IL_0051:  stloc.2 
+	IL_0052:  ldloc.2 
+	IL_0053:  ldc.i4.4 
+	IL_0054:  blt IL_003c
+
+	IL_0059:  br IL_0084
+
+	IL_005e:  ldc.i4.0 
+	IL_005f:  stloc.3 
+	IL_0060:  br IL_007d
+
+	IL_0065:  ldloc.1 
+	IL_0066:  ldc.i4.3 
+	IL_0067:  ldloc.3 
+	IL_0068:  sub 
+	IL_0069:  ldarg.1 
+	IL_006a:  callvirt instance class [Bless.Buffers]Bless.Buffers.ByteBuffer class [Bless.Gui]Bless.Gui.DataView::get_Buffer()
+	IL_006f:  ldloc.0 
+	IL_0070:  ldloc.3 
+	IL_0071:  conv.i8 
+	IL_0072:  add 
+	IL_0073:  callvirt instance unsigned int8 class [Bless.Buffers]Bless.Buffers.BaseBuffer::get_Item(int64)
+	IL_0078:  stelem.i1 
+	IL_0079:  ldloc.3 
+	IL_007a:  ldc.i4.1 
+	IL_007b:  add 
+	IL_007c:  stloc.3 
+	IL_007d:  ldloc.3 
+	IL_007e:  ldc.i4.4 
+	IL_007f:  blt IL_0065
+
+	IL_0084:  ldloc.1 
+	IL_0085:  ldc.i4.0 
+	IL_0086:  call float32 class [mscorlib]System.BitConverter::ToSingle(unsigned int8[], int32)
+	IL_008b:  stloc.s 4
+	IL_008d:  ldarg.0 
+	IL_008e:  ldfld <BROKEN CLASS token_ 1000006 due to Could not load file or assembly or one of its dependencies. assembly:gtk-sharp, Version=2.12.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f type:<unknown type> member:<none>> Bless.Gui.Plugins.ConversionTable::Float32bitEntry
+	IL_0093:  ldloca.s 4
+	IL_0095:  constrained. [mscorlib]System.Single
+	IL_009b:  callvirt instance string object::ToString()
+	IL_00a0:  callvirt instance void ['gtk-sharp']Gtk.Entry::set_Text(string)
+	IL_00a5:  ldloc.0 
+	IL_00a6:  ldarg.1 
+	IL_00a7:  callvirt instance class [Bless.Buffers]Bless.Buffers.ByteBuffer class [Bless.Gui]Bless.Gui.DataView::get_Buffer()
+	IL_00ac:  callvirt instance int64 class [Bless.Buffers]Bless.Buffers.BaseBuffer::get_Size()
+	IL_00b1:  ldc.i4.7 
+	IL_00b2:  conv.i8 
+	IL_00b3:  sub 
+	IL_00b4:  bge IL_0145
+
+	IL_00b9:  ldarg.0 
+	IL_00ba:  ldfld bool Bless.Gui.Plugins.ConversionTable::littleEndian
+	IL_00bf:  brfalse IL_00f3
+
+	IL_00c4:  ldc.i4.4 
+	IL_00c5:  stloc.s 5
+	IL_00c7:  br IL_00e6
+
+	IL_00cc:  ldloc.1 
+	IL_00cd:  ldloc.s 5
+	IL_00cf:  ldarg.1 
+	IL_00d0:  callvirt instance class [Bless.Buffers]Bless.Buffers.ByteBuffer class [Bless.Gui]Bless.Gui.DataView::get_Buffer()
+	IL_00d5:  ldloc.0 
+	IL_00d6:  ldloc.s 5
+	IL_00d8:  conv.i8 
+	IL_00d9:  add 
+	IL_00da:  callvirt instance unsigned int8 class [Bless.Buffers]Bless.Buffers.BaseBuffer::get_Item(int64)
+	IL_00df:  stelem.i1 
+	IL_00e0:  ldloc.s 5
+	IL_00e2:  ldc.i4.1 
+	IL_00e3:  add 
+	IL_00e4:  stloc.s 5
+	IL_00e6:  ldloc.s 5
+	IL_00e8:  ldc.i4.8 
+	IL_00e9:  blt IL_00cc
+
+	IL_00ee:  br IL_011f
+
+	IL_00f3:  ldc.i4.0 
+	IL_00f4:  stloc.s 6
+	IL_00f6:  br IL_0117
+
+	IL_00fb:  ldloc.1 
+	IL_00fc:  ldc.i4.7 
+	IL_00fd:  ldloc.s 6
+	IL_00ff:  sub 
+	IL_0100:  ldarg.1 
+	IL_0101:  callvirt instance class [Bless.Buffers]Bless.Buffers.ByteBuffer class [Bless.Gui]Bless.Gui.DataView::get_Buffer()
+	IL_0106:  ldloc.0 
+	IL_0107:  ldloc.s 6
+	IL_0109:  conv.i8 
+	IL_010a:  add 
+	IL_010b:  callvirt instance unsigned int8 class [Bless.Buffers]Bless.Buffers.BaseBuffer::get_Item(int64)
+	IL_0110:  stelem.i1 
+	IL_0111:  ldloc.s 6
+	IL_0113:  ldc.i4.1 
+	IL_0114:  add 
+	IL_0115:  stloc.s 6
+	IL_0117:  ldloc.s 6
+	IL_0119:  ldc.i4.8 
+	IL_011a:  blt IL_00fb
+
+	IL_011f:  ldloc.1 
+	IL_0120:  ldc.i4.0 
+	IL_0121:  call float64 class [mscorlib]System.BitConverter::ToDouble(unsigned int8[], int32)
+	IL_0126:  stloc.s 7
+	IL_0128:  ldarg.0 
+	IL_0129:  ldfld <BROKEN CLASS token_ 1000006 due to Could not load file or assembly or one of its dependencies. assembly:gtk-sharp, Version=2.12.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f type:<unknown type> member:<none>> Bless.Gui.Plugins.ConversionTable::Float64bitEntry
+	IL_012e:  ldloca.s 7
+	IL_0130:  constrained. [mscorlib]System.Double
+	IL_0136:  callvirt instance string object::ToString()
+	IL_013b:  callvirt instance void ['gtk-sharp']Gtk.Entry::set_Text(string)
+	IL_0140:  br IL_0155
+
+	IL_0145:  ldarg.0 
+	IL_0146:  ldfld <BROKEN CLASS token_ 1000006 due to Could not load file or assembly or one of its dependencies. assembly:gtk-sharp, Version=2.12.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f type:<unknown type> member:<none>> Bless.Gui.Plugins.ConversionTable::Float64bitEntry
+	IL_014b:  ldstr "---"
+	IL_0150:  callvirt instance void ['gtk-sharp']Gtk.Entry::set_Text(string)
+	IL_0155:  br IL_0160
+
+	IL_015a:  ldarg.0 
+	IL_015b:  call instance void class Bless.Gui.Plugins.ConversionTable::ClearFloat()
+	IL_0160:  ret 
+    } // end of method ConversionTable::UpdateFloat
+
+    // method line 29
+    .method private hidebysig 
+           instance default void UpdateBases (class [Bless.Gui]Bless.Gui.DataView dv)  cil managed 
+    {
+        // Method begins at RVA 0x2ba8
+	// Code size 232 (0xe8)
+	.maxstack 5
+	.locals init (
+		int64	V_0,
+		int64	V_1,
+		unsigned int8[]	V_2,
+		int32	V_3)
+	IL_0000:  ldarg.1 
+	IL_0001:  callvirt instance int64 class [Bless.Gui]Bless.Gui.DataView::get_CursorOffset()
+	IL_0006:  stloc.0 
+	IL_0007:  ldloc.0 
+	IL_0008:  ldc.i4.0 
+	IL_0009:  conv.i8 
+	IL_000a:  blt IL_0020
+
+	IL_000f:  ldloc.0 
+	IL_0010:  ldarg.1 
+	IL_0011:  callvirt instance class [Bless.Buffers]Bless.Buffers.ByteBuffer class [Bless.Gui]Bless.Gui.DataView::get_Buffer()
+	IL_0016:  callvirt instance int64 class [Bless.Buffers]Bless.Buffers.BaseBuffer::get_Size()
+	IL_001b:  blt IL_0028
+
+	IL_0020:  ldc.i4.0 
+	IL_0021:  conv.i8 
+	IL_0022:  stloc.1 
+	IL_0023:  br IL_0047
+
+	IL_0028:  ldarg.1 
+	IL_0029:  callvirt instance class [Bless.Buffers]Bless.Buffers.ByteBuffer class [Bless.Gui]Bless.Gui.DataView::get_Buffer()
+	IL_002e:  callvirt instance int64 class [Bless.Buffers]Bless.Buffers.BaseBuffer::get_Size()
+	IL_0033:  ldloc.0 
+	IL_0034:  sub 
+	IL_0035:  stloc.1 
+	IL_0036:  ldloc.1 
+	IL_0037:  ldc.i4.4 
+	IL_0038:  conv.i8 
+	IL_0039:  bge IL_0044
+
+	IL_003e:  ldloc.1 
+	IL_003f:  br IL_0046
+
+	IL_0044:  ldc.i4.4 
+	IL_0045:  conv.i8 
+	IL_0046:  stloc.1 
+	IL_0047:  ldloc.1 
+	IL_0048:  conv.i4 
+	IL_0049:  newarr [mscorlib]System.Byte
+	IL_004e:  stloc.2 
+	IL_004f:  ldc.i4.0 
+	IL_0050:  stloc.3 
+	IL_0051:  br IL_006c
+
+	IL_0056:  ldloc.2 
+	IL_0057:  ldloc.3 
+	IL_0058:  ldarg.1 
+	IL_0059:  callvirt instance class [Bless.Buffers]Bless.Buffers.ByteBuffer class [Bless.Gui]Bless.Gui.DataView::get_Buffer()
+	IL_005e:  ldloc.0 
+	IL_005f:  ldloc.3 
+	IL_0060:  conv.i8 
+	IL_0061:  add 
+	IL_0062:  callvirt instance unsigned int8 class [Bless.Buffers]Bless.Buffers.BaseBuffer::get_Item(int64)
+	IL_0067:  stelem.i1 
+	IL_0068:  ldloc.3 
+	IL_0069:  ldc.i4.1 
+	IL_006a:  add 
+	IL_006b:  stloc.3 
+	IL_006c:  ldloc.3 
+	IL_006d:  conv.i8 
+	IL_006e:  ldloc.1 
+	IL_006f:  blt IL_0056
+
+	IL_0074:  ldloc.1 
+	IL_0075:  ldc.i4.0 
+	IL_0076:  conv.i8 
+	IL_0077:  ble IL_00e1
+
+	IL_007c:  ldarg.0 
+	IL_007d:  ldfld <BROKEN CLASS token_ 1000006 due to Could not load file or assembly or one of its dependencies. assembly:gtk-sharp, Version=2.12.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f type:<unknown type> member:<none>> Bless.Gui.Plugins.ConversionTable::HexadecimalEntry
+	IL_0082:  ldloc.2 
+	IL_0083:  ldc.i4.s 0x10
+	IL_0085:  call string class [Bless.Util]Bless.Util.ByteArray::ToString(unsigned int8[], int32)
+	IL_008a:  callvirt instance void ['gtk-sharp']Gtk.Entry::set_Text(string)
+	IL_008f:  ldarg.0 
+	IL_0090:  ldfld <BROKEN CLASS token_ 1000006 due to Could not load file or assembly or one of its dependencies. assembly:gtk-sharp, Version=2.12.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f type:<unknown type> member:<none>> Bless.Gui.Plugins.ConversionTable::DecimalEntry
+	IL_0095:  ldloc.2 
+	IL_0096:  ldc.i4.s 0x0a
+	IL_0098:  call string class [Bless.Util]Bless.Util.ByteArray::ToString(unsigned int8[], int32)
+	IL_009d:  callvirt instance void ['gtk-sharp']Gtk.Entry::set_Text(string)
+	IL_00a2:  ldarg.0 
+	IL_00a3:  ldfld <BROKEN CLASS token_ 1000006 due to Could not load file or assembly or one of its dependencies. assembly:gtk-sharp, Version=2.12.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f type:<unknown type> member:<none>> Bless.Gui.Plugins.ConversionTable::OctalEntry
+	IL_00a8:  ldloc.2 
+	IL_00a9:  ldc.i4.8 
+	IL_00aa:  call string class [Bless.Util]Bless.Util.ByteArray::ToString(unsigned int8[], int32)
+	IL_00af:  callvirt instance void ['gtk-sharp']Gtk.Entry::set_Text(string)
+	IL_00b4:  ldarg.0 
+	IL_00b5:  ldfld <BROKEN CLASS token_ 1000006 due to Could not load file or assembly or one of its dependencies. assembly:gtk-sharp, Version=2.12.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f type:<unknown type> member:<none>> Bless.Gui.Plugins.ConversionTable::BinaryEntry
+	IL_00ba:  ldloc.2 
+	IL_00bb:  ldc.i4.2 
+	IL_00bc:  call string class [Bless.Util]Bless.Util.ByteArray::ToString(unsigned int8[], int32)
+	IL_00c1:  callvirt instance void ['gtk-sharp']Gtk.Entry::set_Text(string)
+	IL_00c6:  ldarg.0 
+	IL_00c7:  ldfld <BROKEN CLASS token_ 1000006 due to Could not load file or assembly or one of its dependencies. assembly:gtk-sharp, Version=2.12.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f type:<unknown type> member:<none>> Bless.Gui.Plugins.ConversionTable::AsciiEntry
+	IL_00cc:  call class [mscorlib]System.Text.Encoding class [mscorlib]System.Text.Encoding::get_ASCII()
+	IL_00d1:  ldloc.2 
+	IL_00d2:  callvirt instance string class [mscorlib]System.Text.Encoding::GetString(unsigned int8[])
+	IL_00d7:  callvirt instance void ['gtk-sharp']Gtk.Entry::set_Text(string)
+	IL_00dc:  br IL_00e7
+
+	IL_00e1:  ldarg.0 
+	IL_00e2:  call instance void class Bless.Gui.Plugins.ConversionTable::ClearBases()
+	IL_00e7:  ret 
+    } // end of method ConversionTable::UpdateBases
+
+    // method line 30
+    .method public hidebysig 
+           instance default void Update ()  cil managed 
+    {
+        // Method begins at RVA 0x2c9c
+	// Code size 85 (0x55)
+	.maxstack 2
+	.locals init (
+		class [Bless.Gui]Bless.Gui.DataViewDisplay	V_0,
+		class [Bless.Gui]Bless.Gui.DataView	V_1)
+	IL_0000:  ldarg.0 
+	IL_0001:  call instance bool ['gtk-sharp']Gtk.Widget::get_Visible()
+	IL_0006:  brtrue IL_000c
+
+	IL_000b:  ret 
+	IL_000c:  ldarg.0 
+	IL_000d:  ldfld class [Bless.Gui]Bless.Gui.DataBook Bless.Gui.Plugins.ConversionTable::dataBook
+	IL_0012:  callvirt instance <BROKEN CLASS token_ 1000017 due to Could not load file or assembly or one of its dependencies. assembly:gtk-sharp, Version=2.12.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f type:<unknown type> member:<none>> ['gtk-sharp']Gtk.Notebook::get_CurrentPageWidget()
+	IL_0017:  castclass [Bless.Gui]Bless.Gui.DataViewDisplay
+	IL_001c:  stloc.0 
+	IL_001d:  ldloc.0 
+	IL_001e:  brtrue IL_002a
+
+	IL_0023:  ldarg.0 
+	IL_0024:  call instance void class Bless.Gui.Plugins.ConversionTable::Clear()
+	IL_0029:  ret 
+	IL_002a:  ldloc.0 
+	IL_002b:  callvirt instance class [Bless.Gui]Bless.Gui.DataView [Bless.Gui]Bless.Gui.DataViewDisplay::get_View()
+	IL_0030:  stloc.1 
+	IL_0031:  ldarg.0 
+	IL_0032:  ldloc.1 
+	IL_0033:  call instance void class Bless.Gui.Plugins.ConversionTable::Update8bit(class [Bless.Gui]Bless.Gui.DataView)
+	IL_0038:  ldarg.0 
+	IL_0039:  ldloc.1 
+	IL_003a:  call instance void class Bless.Gui.Plugins.ConversionTable::Update16bit(class [Bless.Gui]Bless.Gui.DataView)
+	IL_003f:  ldarg.0 
+	IL_0040:  ldloc.1 
+	IL_0041:  call instance void class Bless.Gui.Plugins.ConversionTable::Update32bit(class [Bless.Gui]Bless.Gui.DataView)
+	IL_0046:  ldarg.0 
+	IL_0047:  ldloc.1 
+	IL_0048:  call instance void class Bless.Gui.Plugins.ConversionTable::UpdateFloat(class [Bless.Gui]Bless.Gui.DataView)
+	IL_004d:  ldarg.0 
+	IL_004e:  ldloc.1 
+	IL_004f:  call instance void class Bless.Gui.Plugins.ConversionTable::UpdateBases(class [Bless.Gui]Bless.Gui.DataView)
+	IL_0054:  ret 
+    } // end of method ConversionTable::Update
+
+    // method line 31
+    .method public hidebysig 
+           instance default void Clear ()  cil managed 
+    {
+        // Method begins at RVA 0x2cfd
+	// Code size 43 (0x2b)
+	.maxstack 8
+	IL_0000:  ldarg.0 
+	IL_0001:  call instance bool ['gtk-sharp']Gtk.Widget::get_Visible()
+	IL_0006:  brtrue IL_000c
+
+	IL_000b:  ret 
+	IL_000c:  ldarg.0 
+	IL_000d:  call instance void class Bless.Gui.Plugins.ConversionTable::Clear8bit()
+	IL_0012:  ldarg.0 
+	IL_0013:  call instance void class Bless.Gui.Plugins.ConversionTable::Clear16bit()
+	IL_0018:  ldarg.0 
+	IL_0019:  call instance void class Bless.Gui.Plugins.ConversionTable::Clear32bit()
+	IL_001e:  ldarg.0 
+	IL_001f:  call instance void class Bless.Gui.Plugins.ConversionTable::ClearFloat()
+	IL_0024:  ldarg.0 
+	IL_0025:  call instance void class
\ No newline at end of file
PE32 Mono/.Net assembly: /usr/lib64/bless/Bless.Gui.dll
/usr/lib64/bless/Bless.Gui.dll differs (PE32 executable (DLL) (console) Intel 80386, Mono/.Net assembly, for MS Windows)
--- old /usr/lib64/bless/Bless.Gui.dll (monodis)
+++ new /usr/lib64/bless/Bless.Gui.dll (monodis)
@@ -21,7 +21,7 @@
   .ver 4:0:0:0
   .publickeytoken = (B7 7A 5C 56 19 34 E0 89 ) // .z\V.4..
 }
-.assembly extern Bless.Tools.Find
+.assembly extern Bless.Buffers
 {
   .ver 0:0:0:0
 }
@@ -29,7 +29,7 @@
 {
   .ver 0:0:0:0
 }
-.assembly extern Bless.Buffers
+.assembly extern Bless.Tools.Find
 {
   .ver 0:0:0:0
 }
PE32 Mono/.Net assembly: /usr/lib64/bless/Bless.Plugins.dll
/usr/lib64/bless/Bless.Plugins.dll differs (PE32 executable (DLL) (console) Intel 80386, Mono/.Net assembly, for MS Windows)
--- old /usr/lib64/bless/Bless.Plugins.dll (monodis)
+++ new /usr/lib64/bless/Bless.Plugins.dll (monodis)
@@ -3,11 +3,6 @@
   .ver 4:0:0:0
   .publickeytoken = (B7 7A 5C 56 19 34 E0 89 ) // .z\V.4..
 }
-.assembly extern 'gtk-sharp'
-{
-  .ver 2:12:0:0
-  .publickeytoken = (35 E1 01 95 DA B3 C9 9F ) // 5.......
-}
 .assembly extern Bless.Util
 {
   .ver 0:0:0:0
@@ -17,14 +12,19 @@
   .ver 4:0:0:0
   .publickeytoken = (B7 7A 5C 56 19 34 E0 89 ) // .z\V.4..
 }
-.assembly extern Bless.Tools.Export
+.assembly extern 'gtk-sharp'
 {
-  .ver 0:0:0:0
+  .ver 2:12:0:0
+  .publickeytoken = (35 E1 01 95 DA B3 C9 9F ) // 5.......
 }
 .assembly extern Bless.Gui.Areas
 {
   .ver 0:0:0:0
 }
+.assembly extern Bless.Tools.Export
+{
+  .ver 0:0:0:0
+}
 .assembly 'Bless.Plugins'
 {
   .custom instance void class [mscorlib]System.Runtime.CompilerServices.RuntimeCompatibilityAttribute::'.ctor'() =  (
@@ -39,96 +39,15 @@
 
 .namespace Bless.Plugins
 {
-  .class public auto ansi beforefieldinit ExportPlugin
-  	extends Bless.Plugins.Plugin
-  {
-
-    // method line 1
-    .method family hidebysig specialname rtspecialname 
-           instance default void '.ctor' ()  cil managed 
-    {
-        // Method begins at RVA 0x20c2
-	// Code size 7 (0x7)
-	.maxstack 8
-	IL_0000:  ldarg.0 
-	IL_0001:  call instance void class Bless.Plugins.Plugin::'.ctor'()
-	IL_0006:  ret 
-    } // end of method ExportPlugin::.ctor
-
-    // method line 2
-    .method public virtual hidebysig newslot 
-           instance default class [Bless.Tools.Export]Bless.Tools.Export.IExportBuilder CreateBuilder (class [mscorlib]System.IO.Stream s)  cil managed 
-    {
-        // Method begins at RVA 0x20ca
-	// Code size 2 (0x2)
-	.maxstack 8
-	IL_0000:  ldnull 
-	IL_0001:  ret 
-    } // end of method ExportPlugin::CreateBuilder
-
-  } // end of class Bless.Plugins.ExportPlugin
-}
-
-.namespace Bless.Plugins
-{
-  .class public auto ansi beforefieldinit GuiPlugin
-  	extends Bless.Plugins.Plugin
-  {
-
-    // method line 3
-    .method public hidebysig specialname rtspecialname 
-           instance default void '.ctor' ()  cil managed 
-    {
-        // Method begins at RVA 0x20cd
-	// Code size 7 (0x7)
-	.maxstack 8
-	IL_0000:  ldarg.0 
-	IL_0001:  call instance void class Bless.Plugins.Plugin::'.ctor'()
-	IL_0006:  ret 
-    } // end of method GuiPlugin::.ctor
-
-    // method line 4
-    .method family hidebysig 
-           (null) cil managed 
-    {
-        // Method begins at RVA 0x20d8
-    } // end of method GuiPlugin::<NULL METHOD SIGNATURE>
-
-    // method line 5
-    .method family hidebysig 
-           (null) cil managed 
-    {
-        // Method begins at RVA 0x2178
-    } // end of method GuiPlugin::<NULL METHOD SIGNATURE>
-
-    // method line 6
-    .method family hidebysig 
-           (null) cil managed 
-    {
-        // Method begins at RVA 0x21d0
-    } // end of method GuiPlugin::<NULL METHOD SIGNATURE>
-
-    // method line 7
-    .method family hidebysig 
-           (null) cil managed 
-    {
-        // Method begins at RVA 0x2238
-    } // end of method GuiPlugin::<NULL METHOD SIGNATURE>
-
-  } // end of class Bless.Plugins.GuiPlugin
-}
-
-.namespace Bless.Plugins
-{
   .class public auto ansi beforefieldinit PluginDependencyException
   	extends [mscorlib]System.Exception
   {
 
-    // method line 8
+    // method line 1
     .method public hidebysig specialname rtspecialname 
            instance default void '.ctor' (string msg)  cil managed 
     {
-        // Method begins at RVA 0x2327
+        // Method begins at RVA 0x2050
 	// Code size 8 (0x8)
 	.maxstack 8
 	IL_0000:  ldarg.0 
@@ -151,11 +70,11 @@
     .field  private  class [mscorlib]System.Type pluginType
     .field  private static  class [mscorlib]System.Collections.Generic.Dictionary`2<class [mscorlib]System.Type,class Bless.Plugins.PluginManager> pluginManagers
 
-    // method line 9
+    // method line 2
     .method private hidebysig specialname rtspecialname 
            instance default void '.ctor' (class [mscorlib]System.Type pluginType, object[] args)  cil managed 
     {
-        // Method begins at RVA 0x2330
+        // Method begins at RVA 0x205c
 	// Code size 336 (0x150)
 	.maxstack 4
 	.locals init (
@@ -320,11 +239,11 @@
 	IL_014f:  ret 
     } // end of method PluginManager::.ctor
 
-    // method line 10
+    // method line 3
     .method private hidebysig 
            instance default void AddPluginFile (string file)  cil managed 
     {
-        // Method begins at RVA 0x249c
+        // Method begins at RVA 0x21c8
 	// Code size 130 (0x82)
 	.maxstack 3
 	.locals init (
@@ -395,11 +314,11 @@
 	IL_0081:  ret 
     } // end of method PluginManager::AddPluginFile
 
-    // method line 11
+    // method line 4
     .method private hidebysig 
            instance default void AddToPluginCollection (class Bless.Plugins.Plugin plugin)  cil managed 
     {
-        // Method begins at RVA 0x253c
+        // Method begins at RVA 0x2268
 	// Code size 19 (0x13)
 	.maxstack 8
 	IL_0000:  ldarg.0 
@@ -411,11 +330,11 @@
 	IL_0012:  ret 
     } // end of method PluginManager::AddToPluginCollection
 
-    // method line 12
+    // method line 5
     .method public hidebysig 
            instance default bool LoadPlugin (class Bless.Plugins.Plugin plugin)  cil managed 
     {
-        // Method begins at RVA 0x2550
+        // Method begins at RVA 0x227c
 	// Code size 15 (0xf)
 	.maxstack 3
 	.locals init (
@@ -429,11 +348,11 @@
 	IL_000e:  ret 
     } // end of method PluginManager::LoadPlugin
 
-    // method line 13
+    // method line 6
     .method private hidebysig 
            instance default bool LoadPluginInternal (class Bless.Plugins.Plugin plugin, class [System]System.Collections.Specialized.StringCollection visited)  cil managed 
     {
-        // Method begins at RVA 0x256c
+        // Method begins at RVA 0x2298
 	// Code size 300 (0x12c)
 	.maxstack 3
 	.locals init (
@@ -566,11 +485,11 @@
 	IL_012b:  ret 
     } // end of method PluginManager::LoadPluginInternal
 
-    // method line 14
+    // method line 7
     .method public hidebysig specialname 
            instance default class Bless.Plugins.Plugin[] get_Plugins ()  cil managed 
     {
-        // Method begins at RVA 0x26c0
+        // Method begins at RVA 0x23ec
 	// Code size 90 (0x5a)
 	.maxstack 4
 	.locals init (
@@ -621,11 +540,11 @@
 	IL_0059:  ret 
     } // end of method PluginManager::get_Plugins
 
-    // method line 15
+    // method line 8
     .method public static hidebysig 
            default void AddForType (class [mscorlib]System.Type pluginType, object[] args)  cil managed 
     {
-        // Method begins at RVA 0x2738
+        // Method begins at RVA 0x2464
 	// Code size 21 (0x15)
 	.maxstack 3
 	.locals init (
@@ -641,11 +560,11 @@
 	IL_0014:  ret 
     } // end of method PluginManager::AddForType
 
-    // method line 16
+    // method line 9
     .method public static hidebysig 
            default class Bless.Plugins.PluginManager GetForType (class [mscorlib]System.Type pluginType)  cil managed 
     {
-        // Method begins at RVA 0x275c
+        // Method begins at RVA 0x2488
 	// Code size 32 (0x20)
 	.maxstack 2
 	.locals init (
@@ -665,22 +584,22 @@
 	IL_001f:  ret 
     } // end of method PluginManager::GetForType
 
-    // method line 17
+    // method line 10
     .method public static hidebysig specialname 
            default class [mscorlib]System.Collections.Generic.IEnumerable`1<valuetype [mscorlib]System.Collections.Generic.KeyValuePair`2<class [mscorlib]System.Type, class Bless.Plugins.PluginManager>> get_AllManagers ()  cil managed 
     {
-        // Method begins at RVA 0x2788
+        // Method begins at RVA 0x24b4
 	// Code size 6 (0x6)
 	.maxstack 8
 	IL_0000:  ldsfld class [mscorlib]System.Collections.Generic.Dictionary`2<class [mscorlib]System.Type,class Bless.Plugins.PluginManager> Bless.Plugins.PluginManager::pluginManagers
 	IL_0005:  ret 
     } // end of method PluginManager::get_AllManagers
 
-    // method line 18
+    // method line 11
     .method private static hidebysig specialname rtspecialname 
            default void '.cctor' ()  cil managed 
     {
-        // Method begins at RVA 0x278f
+        // Method begins at RVA 0x24bb
 	// Code size 11 (0xb)
 	.maxstack 8
 	IL_0000:  newobj instance void class [mscorlib]System.Collections.Generic.Dictionary`2<class [mscorlib]System.Type, class Bless.Plugins.PluginManager>::'.ctor'()
@@ -701,38 +620,6 @@
 
 .namespace Bless.Plugins
 {
-  .class public auto ansi beforefieldinit AreaPlugin
-  	extends Bless.Plugins.Plugin
-  {
-
-    // method line 19
-    .method family hidebysig specialname rtspecialname 
-           instance default void '.ctor' ()  cil managed 
-    {
-        // Method begins at RVA 0x279b
-	// Code size 7 (0x7)
-	.maxstack 8
-	IL_0000:  ldarg.0 
-	IL_0001:  call instance void class Bless.Plugins.Plugin::'.ctor'()
-	IL_0006:  ret 
-    } // end of method AreaPlugin::.ctor
-
-    // method line 20
-    .method public virtual hidebysig newslot 
-           instance default class [Bless.Gui.Areas]Bless.Gui.Areas.Area CreateArea (class [Bless.Gui.Areas]Bless.Gui.Areas.AreaGroup ag)  cil managed 
-    {
-        // Method begins at RVA 0x27a3
-	// Code size 2 (0x2)
-	.maxstack 8
-	IL_0000:  ldnull 
-	IL_0001:  ret 
-    } // end of method AreaPlugin::CreateArea
-
-  } // end of class Bless.Plugins.AreaPlugin
-}
-
-.namespace Bless.Plugins
-{
   .class public auto ansi beforefieldinit Plugin
   	extends [mscorlib]System.Object
   {
@@ -743,11 +630,11 @@
     .field  family  class [mscorlib]System.Collections.Generic.List`1<string> dependencies
     .field  family  class [mscorlib]System.Collections.Generic.List`1<string> loadAfter
 
-    // method line 21
+    // method line 12
     .method public hidebysig specialname rtspecialname 
            instance default void '.ctor' ()  cil managed 
     {
-        // Method begins at RVA 0x2050
+        // Method begins at RVA 0x24c7
 	// Code size 29 (0x1d)
 	.maxstack 8
 	IL_0000:  ldarg.0 
@@ -761,33 +648,33 @@
 	IL_001c:  ret 
     } // end of method Plugin::.ctor
 
-    // method line 22
+    // method line 13
     .method public virtual hidebysig newslot 
            instance default bool Load ()  cil managed 
     {
-        // Method begins at RVA 0x206e
+        // Method begins at RVA 0x24e5
 	// Code size 2 (0x2)
 	.maxstack 8
 	IL_0000:  ldc.i4.0 
 	IL_0001:  ret 
     } // end of method Plugin::Load
 
-    // method line 23
+    // method line 14
     .method public virtual hidebysig newslot 
            instance default bool UnLoad ()  cil managed 
     {
-        // Method begins at RVA 0x2071
+        // Method begins at RVA 0x24e8
 	// Code size 2 (0x2)
 	.maxstack 8
 	IL_0000:  ldc.i4.0 
 	IL_0001:  ret 
     } // end of method Plugin::UnLoad
 
-    // method line 24
+    // method line 15
     .method public hidebysig specialname 
            instance default string get_Name ()  cil managed 
     {
-        // Method begins at RVA 0x2074
+        // Method begins at RVA 0x24eb
 	// Code size 7 (0x7)
 	.maxstack 8
 	IL_0000:  ldarg.0 
@@ -795,11 +682,11 @@
 	IL_0006:  ret 
     } // end of method Plugin::get_Name
 
-    // method line 25
+    // method line 16
     .method public hidebysig specialname 
            instance default void set_Name (string 'value')  cil managed 
     {
-        // Method begins at RVA 0x207c
+        // Method begins at RVA 0x24f3
 	// Code size 8 (0x8)
 	.maxstack 8
 	IL_0000:  ldarg.0 
@@ -808,11 +695,11 @@
 	IL_0007:  ret 
     } // end of method Plugin::set_Name
 
-    // method line 26
+    // method line 17
     .method public hidebysig specialname 
            instance default string get_Author ()  cil managed 
     {
-        // Method begins at RVA 0x2085
+        // Method begins at RVA 0x24fc
 	// Code size 7 (0x7)
 	.maxstack 8
 	IL_0000:  ldarg.0 
@@ -820,11 +707,11 @@
 	IL_0006:  ret 
     } // end of method Plugin::get_Author
 
-    // method line 27
+    // method line 18
     .method public hidebysig specialname 
            instance default void set_Author (string 'value')  cil managed 
     {
-        // Method begins at RVA 0x208d
+        // Method begins at RVA 0x2504
 	// Code size 8 (0x8)
 	.maxstack 8
 	IL_0000:  ldarg.0 
@@ -833,11 +720,11 @@
 	IL_0007:  ret 
     } // end of method Plugin::set_Author
 
-    // method line 28
+    // method line 19
     .method public hidebysig specialname 
            instance default string get_Description ()  cil managed 
     {
-        // Method begins at RVA 0x2096
+        // Method begins at RVA 0x250d
 	// Code size 7 (0x7)
 	.maxstack 8
 	IL_0000:  ldarg.0 
@@ -845,11 +732,11 @@
 	IL_0006:  ret 
     } // end of method Plugin::get_Description
 
-    // method line 29
+    // method line 20
     .method public hidebysig specialname 
            instance default void set_Description (string 'value')  cil managed 
     {
-        // Method begins at RVA 0x209e
+        // Method begins at RVA 0x2515
 	// Code size 8 (0x8)
 	.maxstack 8
 	IL_0000:  ldarg.0 
@@ -858,11 +745,11 @@
 	IL_0007:  ret 
     } // end of method Plugin::set_Description
 
-    // method line 30
+    // method line 21
     .method public hidebysig specialname 
            instance default bool get_Loaded ()  cil managed 
     {
-        // Method begins at RVA 0x20a7
+        // Method begins at RVA 0x251e
 	// Code size 7 (0x7)
 	.maxstack 8
 	IL_0000:  ldarg.0 
@@ -870,11 +757,11 @@
 	IL_0006:  ret 
     } // end of method Plugin::get_Loaded
 
-    // method line 31
+    // method line 22
     .method public hidebysig specialname 
            instance default class [mscorlib]System.Collections.Generic.IList`1<string> get_Dependencies ()  cil managed 
     {
-        // Method begins at RVA 0x20af
+        // Method begins at RVA 0x2526
 	// Code size 7 (0x7)
 	.maxstack 8
 	IL_0000:  ldarg.0 
@@ -882,11 +769,11 @@
 	IL_0006:  ret 
     } // end of method Plugin::get_Dependencies
 
-    // method line 32
+    // method line 23
     .method public hidebysig specialname 
            instance default class [mscorlib]System.Collections.Generic.IList`1<string> get_LoadAfter ()  cil managed 
     {
-        // Method begins at RVA 0x20b7
+        // Method begins at RVA 0x252e
 	// Code size 7 (0x7)
 	.maxstack 8
 	IL_0000:  ldarg.0 
@@ -894,11 +781,11 @@
 	IL_0006:  ret 
     } // end of method Plugin::get_LoadAfter
 
-    // method line 33
+    // method line 24
     .method public virtual hidebysig newslot specialname 
            instance default class IPluginPreferences get_PluginPreferences ()  cil managed 
     {
-        // Method begins at RVA 0x20bf
+        // Method begins at RVA 0x2536
 	// Code size 2 (0x2)
 	.maxstack 8
 	IL_0000:  ldnull 
@@ -942,21 +829,21 @@
   .class interface public auto ansi abstract IPluginPreferences
   {
 
-    // method line 34
+    // method line 25
     .method public virtual hidebysig newslot abstract specialname 
            (null) cil managed 
     {
         // Method begins at RVA 0x0
     } // end of method IPluginPreferences::<NULL METHOD SIGNATURE>
 
-    // method line 35
+    // method line 26
     .method public virtual hidebysig newslot abstract 
            instance default void SavePreferences ()  cil managed 
     {
         // Method begins at RVA 0x0
     } // end of method IPluginPreferences::SavePreferences
 
-    // method line 36
+    // method line 27
     .method public virtual hidebysig newslot abstract 
            instance default void LoadPreferences ()  cil managed 
     {
PE32 Mono/.Net assembly: /usr/lib64/bless/Bless.Tools.Export.Plugins.dll
/usr/lib64/bless/Bless.Tools.Export.Plugins.dll differs (PE32 executable (DLL) (console) Intel 80386, Mono/.Net assembly, for MS Windows)
--- old /usr/lib64/bless/Bless.Tools.Export.Plugins.dll (monodis)
+++ new /usr/lib64/bless/Bless.Tools.Export.Plugins.dll (monodis)
@@ -3,26 +3,26 @@
   .ver 4:0:0:0
   .publickeytoken = (B7 7A 5C 56 19 34 E0 89 ) // .z\V.4..
 }
-.assembly extern Bless.Plugins
+.assembly extern Bless.Tools.Export
 {
   .ver 0:0:0:0
 }
-.assembly extern Mono.Posix
+.assembly extern Bless.Util
 {
-  .ver 4:0:0:0
-  .publickeytoken = (07 38 EB 9F 13 2E D7 56 ) // .8.....V
+  .ver 0:0:0:0
 }
-.assembly extern Bless.Tools.Export
+.assembly extern Bless.Buffers
 {
   .ver 0:0:0:0
 }
-.assembly extern Bless.Util
+.assembly extern Bless.Plugins
 {
   .ver 0:0:0:0
 }
-.assembly extern Bless.Buffers
+.assembly extern Mono.Posix
 {
-  .ver 0:0:0:0
+  .ver 4:0:0:0
+  .publickeytoken = (07 38 EB 9F 13 2E D7 56 ) // .8.....V
 }
 .assembly 'Bless.Tools.Export.Plugins'
 {
@@ -38,107 +38,17 @@
 
 .namespace Bless.Tools.Export.Plugins
 {
-  .class public auto ansi beforefieldinit HTMLExportPlugin
-  	extends [Bless.Plugins]Bless.Plugins.ExportPlugin
-  {
-
-    // method line 1
-    .method public hidebysig specialname rtspecialname 
-           instance default void '.ctor' ()  cil managed 
-    {
-        // Method begins at RVA 0x2050
-	// Code size 61 (0x3d)
-	.maxstack 8
-	IL_0000:  ldarg.0 
-	IL_0001:  call instance void class [Bless.Plugins]Bless.Plugins.ExportPlugin::'.ctor'()
-	IL_0006:  ldarg.0 
-	IL_0007:  ldstr "HTMLExport"
-	IL_000c:  stfld string [Bless.Plugins]Bless.Plugins.Plugin::name
-	IL_0011:  ldarg.0 
-	IL_0012:  ldstr "Alexandros Frantzis"
-	IL_0017:  stfld string [Bless.Plugins]Bless.Plugins.Plugin::author
-	IL_001c:  ldarg.0 
-	IL_001d:  ldstr "Export as HTML"
-	IL_0022:  call string class [Mono.Posix]Mono.Unix.Catalog::GetString(string)
-	IL_0027:  stfld string [Bless.Plugins]Bless.Plugins.Plugin::description
-	IL_002c:  ldarg.0 
-	IL_002d:  ldfld class [mscorlib]System.Collections.Generic.List`1<string> [Bless.Plugins]Bless.Plugins.Plugin::dependencies
-	IL_0032:  ldstr "TextExport"
-	IL_0037:  callvirt instance void class [mscorlib]System.Collections.Generic.List`1<string>::Add(!0)
-	IL_003c:  ret 
-    } // end of method HTMLExportPlugin::.ctor
-
-    // method line 2
-    .method public virtual hidebysig 
-           instance default class [Bless.Tools.Export]Bless.Tools.Export.IExportBuilder CreateBuilder (class [mscorlib]System.IO.Stream s)  cil managed 
-    {
-        // Method begins at RVA 0x208e
-	// Code size 7 (0x7)
-	.maxstack 8
-	IL_0000:  ldarg.1 
-	IL_0001:  newobj instance void class Bless.Tools.Export.Plugins.HTMLExportBuilder::'.ctor'(class [mscorlib]System.IO.Stream)
-	IL_0006:  ret 
-    } // end of method HTMLExportPlugin::CreateBuilder
-
-  } // end of class Bless.Tools.Export.Plugins.HTMLExportPlugin
-}
-
-.namespace Bless.Tools.Export.Plugins
-{
-  .class public auto ansi beforefieldinit TextExportPlugin
-  	extends [Bless.Plugins]Bless.Plugins.ExportPlugin
-  {
-
-    // method line 3
-    .method public hidebysig specialname rtspecialname 
-           instance default void '.ctor' ()  cil managed 
-    {
-        // Method begins at RVA 0x2096
-	// Code size 45 (0x2d)
-	.maxstack 8
-	IL_0000:  ldarg.0 
-	IL_0001:  call instance void class [Bless.Plugins]Bless.Plugins.ExportPlugin::'.ctor'()
-	IL_0006:  ldarg.0 
-	IL_0007:  ldstr "TextExport"
-	IL_000c:  stfld string [Bless.Plugins]Bless.Plugins.Plugin::name
-	IL_0011:  ldarg.0 
-	IL_0012:  ldstr "Alexandros Frantzis"
-	IL_0017:  stfld string [Bless.Plugins]Bless.Plugins.Plugin::author
-	IL_001c:  ldarg.0 
-	IL_001d:  ldstr "Export as Text"
-	IL_0022:  call string class [Mono.Posix]Mono.Unix.Catalog::GetString(string)
-	IL_0027:  stfld string [Bless.Plugins]Bless.Plugins.Plugin::description
-	IL_002c:  ret 
-    } // end of method TextExportPlugin::.ctor
-
-    // method line 4
-    .method public virtual hidebysig 
-           instance default class [Bless.Tools.Export]Bless.Tools.Export.IExportBuilder CreateBuilder (class [mscorlib]System.IO.Stream s)  cil managed 
-    {
-        // Method begins at RVA 0x20c4
-	// Code size 7 (0x7)
-	.maxstack 8
-	IL_0000:  ldarg.1 
-	IL_0001:  newobj instance void class Bless.Tools.Export.Plugins.TextExportBuilder::'.ctor'(class [mscorlib]System.IO.Stream)
-	IL_0006:  ret 
-    } // end of method TextExportPlugin::CreateBuilder
-
-  } // end of class Bless.Tools.Export.Plugins.TextExportPlugin
-}
-
-.namespace Bless.Tools.Export.Plugins
-{
   .class public auto ansi beforefieldinit TextExportBuilder
   	extends [mscorlib]System.Object
   	implements [Bless.Tools.Export]Bless.Tools.Export.IExportBuilder  {
     .field  family  class [mscorlib]System.IO.StreamWriter writer
     .field  family  int32 'alignment'
 
-    // method line 5
+    // method line 1
     .method public hidebysig specialname rtspecialname 
            instance default void '.ctor' (class [mscorlib]System.IO.Stream 'stream')  cil managed 
     {
-        // Method begins at RVA 0x20cc
+        // Method begins at RVA 0x2050
 	// Code size 26 (0x1a)
 	.maxstack 8
 	IL_0000:  ldarg.0 
@@ -153,31 +63,31 @@
 	IL_0019:  ret 
     } // end of method TextExportBuilder::.ctor
 
-    // method line 6
+    // method line 2
     .method public virtual hidebysig newslot 
            instance default void BuildPrologue ()  cil managed 
     {
-        // Method begins at RVA 0x20e7
+        // Method begins at RVA 0x206b
 	// Code size 1 (0x1)
 	.maxstack 8
 	IL_0000:  ret 
     } // end of method TextExportBuilder::BuildPrologue
 
-    // method line 7
+    // method line 3
     .method public virtual hidebysig newslot 
            instance default void BuildEpilogue ()  cil managed 
     {
-        // Method begins at RVA 0x20e9
+        // Method begins at RVA 0x206d
 	// Code size 1 (0x1)
 	.maxstack 8
 	IL_0000:  ret 
     } // end of method TextExportBuilder::BuildEpilogue
 
-    // method line 8
+    // method line 4
     .method public virtual hidebysig newslot 
            instance default int32 BuildBytes (class [Bless.Buffers]Bless.Buffers.IBuffer buffer, int64 offset, valuetype [Bless.Tools.Export]Bless.Tools.Export.BuildBytesInfo info)  cil managed 
     {
-        // Method begins at RVA 0x20ec
+        // Method begins at RVA 0x2070
 	// Code size 87 (0x57)
 	.maxstack 6
 	.locals init (
@@ -234,11 +144,11 @@
 	IL_0056:  ret 
     } // end of method TextExportBuilder::BuildBytes
 
-    // method line 9
+    // method line 5
     .method public virtual hidebysig newslot 
            instance default void BuildString (string str)  cil managed 
     {
-        // Method begins at RVA 0x214f
+        // Method begins at RVA 0x20d3
 	// Code size 24 (0x18)
 	.maxstack 8
 	IL_0000:  ldarg.0 
@@ -251,11 +161,11 @@
 	IL_0017:  ret 
     } // end of method TextExportBuilder::BuildString
 
-    // method line 10
+    // method line 6
     .method public virtual hidebysig newslot 
            instance default void BuildCharacter (char c)  cil managed 
     {
-        // Method begins at RVA 0x2168
+        // Method begins at RVA 0x20ec
 	// Code size 24 (0x18)
 	.maxstack 8
 	IL_0000:  ldarg.0 
@@ -268,11 +178,11 @@
 	IL_0017:  ret 
     } // end of method TextExportBuilder::BuildCharacter
 
-    // method line 11
+    // method line 7
     .method public virtual hidebysig newslot 
            instance default void BuildAlignment (int32 align)  cil managed 
     {
-        // Method begins at RVA 0x2181
+        // Method begins at RVA 0x2105
 	// Code size 8 (0x8)
 	.maxstack 8
 	IL_0000:  ldarg.0 
@@ -281,11 +191,11 @@
 	IL_0007:  ret 
     } // end of method TextExportBuilder::BuildAlignment
 
-    // method line 12
+    // method line 8
     .method public virtual hidebysig newslot 
            instance default void BuildOffset (int64 offset, int32 length, char 'type')  cil managed 
     {
-        // Method begins at RVA 0x218c
+        // Method begins at RVA 0x2110
 	// Code size 47 (0x2f)
 	.maxstack 5
 	.locals init (
@@ -321,11 +231,11 @@
 	IL_002e:  ret 
     } // end of method TextExportBuilder::BuildOffset
 
-    // method line 13
+    // method line 9
     .method public final virtual hidebysig newslot specialname 
            instance default class [mscorlib]System.IO.Stream get_OutputStream ()  cil managed 
     {
-        // Method begins at RVA 0x21c7
+        // Method begins at RVA 0x214b
 	// Code size 12 (0xc)
 	.maxstack 8
 	IL_0000:  ldarg.0 
@@ -334,11 +244,11 @@
 	IL_000b:  ret 
     } // end of method TextExportBuilder::get_OutputStream
 
-    // method line 14
+    // method line 10
     .method family virtual hidebysig newslot 
            instance default int32 MatchAlignment (int64 offset, valuetype [Bless.Tools.Export]Bless.Tools.Export.BuildBytesInfo info)  cil managed 
     {
-        // Method begins at RVA 0x21d4
+        // Method begins at RVA 0x2158
 	// Code size 102 (0x66)
 	.maxstack 5
 	.locals init (
@@ -403,11 +313,11 @@
 	IL_0065:  ret 
     } // end of method TextExportBuilder::MatchAlignment
 
-    // method line 15
+    // method line 11
     .method family virtual hidebysig newslot 
            instance default int32 BuildByte (class [Bless.Buffers]Bless.Buffers.IBuffer buffer, int64 offset, valuetype [Bless.Tools.Export]Bless.Tools.Export.BuildBytesInfo info, bool dummy)  cil managed 
     {
-        // Method begins at RVA 0x2248
+        // Method begins at RVA 0x21cc
 	// Code size 320 (0x140)
 	.maxstack 5
 	.locals init (
@@ -548,11 +458,11 @@
 	IL_013f:  ret 
     } // end of method TextExportBuilder::BuildByte
 
-    // method line 16
+    // method line 12
     .method family virtual hidebysig newslot 
            instance default void BuildSeparator (string separator)  cil managed 
     {
-        // Method begins at RVA 0x2394
+        // Method begins at RVA 0x2318
 	// Code size 13 (0xd)
 	.maxstack 8
 	IL_0000:  ldarg.0 
@@ -562,11 +472,11 @@
 	IL_000c:  ret 
     } // end of method TextExportBuilder::BuildSeparator
 
-    // method line 17
+    // method line 13
     .method family virtual hidebysig newslot 
            instance default void BuildEmpty (string str, string empty)  cil managed 
     {
-        // Method begins at RVA 0x23a4
+        // Method begins at RVA 0x2328
 	// Code size 86 (0x56)
 	.maxstack 4
 	.locals init (
@@ -612,11 +522,11 @@
 	IL_0055:  ret 
     } // end of method TextExportBuilder::BuildEmpty
 
-    // method line 18
+    // method line 14
     .method family virtual hidebysig newslot 
            instance default void BuildPrefix (string str)  cil managed 
     {
-        // Method begins at RVA 0x2406
+        // Method begins at RVA 0x238a
 	// Code size 13 (0xd)
 	.maxstack 8
 	IL_0000:  ldarg.0 
@@ -626,11 +536,11 @@
 	IL_000c:  ret 
     } // end of method TextExportBuilder::BuildPrefix
 
-    // method line 19
+    // method line 15
     .method family virtual hidebysig newslot 
            instance default void BuildSuffix (string str)  cil managed 
     {
-        // Method begins at RVA 0x2414
+        // Method begins at RVA 0x2398
 	// Code size 13 (0xd)
 	.maxstack 8
 	IL_0000:  ldarg.0 
@@ -640,11 +550,11 @@
 	IL_000c:  ret 
     } // end of method TextExportBuilder::BuildSuffix
 
-    // method line 20
+    // method line 16
     .method family virtual hidebysig newslot 
            instance default void BuildByteData (string str)  cil managed 
     {
-        // Method begins at RVA 0x2422
+        // Method begins at RVA 0x23a6
 	// Code size 13 (0xd)
 	.maxstack 8
 	IL_0000:  ldarg.0 
@@ -654,11 +564,11 @@
 	IL_000c:  ret 
     } // end of method TextExportBuilder::BuildByteData
 
-    // method line 21
+    // method line 17
     .method private hidebysig 
            instance default int32 GetBaseFromArgument (char 'type', [out] bool& lowercase)  cil managed 
     {
-        // Method begins at RVA 0x2430
+        // Method begins at RVA 0x23b4
 	// Code size 103 (0x67)
 	.maxstack 2
 	.locals init (
@@ -731,11 +641,11 @@
   	extends Bless.Tools.Export.Plugins.TextExportBuilder
   {
 
-    // method line 22
+    // method line 18
     .method public hidebysig specialname rtspecialname 
            instance default void '.ctor' (class [mscorlib]System.IO.Stream 'stream')  cil managed 
     {
-        // Method begins at RVA 0x24a3
+        // Method begins at RVA 0x2427
 	// Code size 8 (0x8)
 	.maxstack 8
 	IL_0000:  ldarg.0 
@@ -744,11 +654,11 @@
 	IL_0007:  ret 
     } // end of method HTMLExportBuilder::.ctor
 
-    // method line 23
+    // method line 19
     .method public virtual hidebysig 
            instance default void BuildPrologue ()  cil managed 
     {
-        // Method begins at RVA 0x24ac
+        // Method begins at RVA 0x2430
 	// Code size 22 (0x16)
 	.maxstack 8
 	IL_0000:  ldstr "Writing prologue"
@@ -759,11 +669,11 @@
 	IL_0015:  ret 
     } // end of method HTMLExportBuilder::BuildPrologue
 
-    // method line 24
+    // method line 20
     .method public virtual hidebysig 
            instance default void BuildEpilogue ()  cil managed 
     {
-        // Method begins at RVA 0x24c3
+        // Method begins at RVA 0x2447
 	// Code size 22 (0x16)
 	.maxstack 8
 	IL_0000:  ldstr "Writing epilogue"
@@ -774,11 +684,11 @@
 	IL_0015:  ret 
     } // end of method HTMLExportBuilder::BuildEpilogue
 
-    // method line 25
+    // method line 21
     .method family virtual hidebysig 
            instance default int32 BuildByte (class [Bless.Buffers]Bless.Buffers.IBuffer buf, int64 offset, valuetype [Bless.Tools.Export]Bless.Tools.Export.BuildBytesInfo info, bool dummy)  cil managed 
     {
-        // Method begins at RVA 0x24dc
+        // Method begins at RVA 0x2460
 	// Code size 58 (0x3a)
 	.maxstack 5
 	.locals init (
@@ -819,3 +729,93 @@
   } // end of class Bless.Tools.Export.Plugins.HTMLExportBuilder
 }
 
+.namespace Bless.Tools.Export.Plugins
+{
+  .class public auto ansi beforefieldinit TextExportPlugin
+  	extends [Bless.Plugins]Bless.Plugins.ExportPlugin
+  {
+
+    // method line 22
+    .method public hidebysig specialname rtspecialname 
+           instance default void '.ctor' ()  cil managed 
+    {
+        // Method begins at RVA 0x24a6
+	// Code size 45 (0x2d)
+	.maxstack 8
+	IL_0000:  ldarg.0 
+	IL_0001:  call instance void class [Bless.Plugins]Bless.Plugins.ExportPlugin::'.ctor'()
+	IL_0006:  ldarg.0 
+	IL_0007:  ldstr "TextExport"
+	IL_000c:  stfld string [Bless.Plugins]Bless.Plugins.Plugin::name
+	IL_0011:  ldarg.0 
+	IL_0012:  ldstr "Alexandros Frantzis"
+	IL_0017:  stfld string [Bless.Plugins]Bless.Plugins.Plugin::author
+	IL_001c:  ldarg.0 
+	IL_001d:  ldstr "Export as Text"
+	IL_0022:  call string class [Mono.Posix]Mono.Unix.Catalog::GetString(string)
+	IL_0027:  stfld string [Bless.Plugins]Bless.Plugins.Plugin::description
+	IL_002c:  ret 
+    } // end of method TextExportPlugin::.ctor
+
+    // method line 23
+    .method public virtual hidebysig 
+           instance default class [Bless.Tools.Export]Bless.Tools.Export.IExportBuilder CreateBuilder (class [mscorlib]System.IO.Stream s)  cil managed 
+    {
+        // Method begins at RVA 0x24d4
+	// Code size 7 (0x7)
+	.maxstack 8
+	IL_0000:  ldarg.1 
+	IL_0001:  newobj instance void class Bless.Tools.Export.Plugins.TextExportBuilder::'.ctor'(class [mscorlib]System.IO.Stream)
+	IL_0006:  ret 
+    } // end of method TextExportPlugin::CreateBuilder
+
+  } // end of class Bless.Tools.Export.Plugins.TextExportPlugin
+}
+
+.namespace Bless.Tools.Export.Plugins
+{
+  .class public auto ansi beforefieldinit HTMLExportPlugin
+  	extends [Bless.Plugins]Bless.Plugins.ExportPlugin
+  {
+
+    // method line 24
+    .method public hidebysig specialname rtspecialname 
+           instance default void '.ctor' ()  cil managed 
+    {
+        // Method begins at RVA 0x24dc
+	// Code size 61 (0x3d)
+	.maxstack 8
+	IL_0000:  ldarg.0 
+	IL_0001:  call instance void class [Bless.Plugins]Bless.Plugins.ExportPlugin::'.ctor'()
+	IL_0006:  ldarg.0 
+	IL_0007:  ldstr "HTMLExport"
+	IL_000c:  stfld string [Bless.Plugins]Bless.Plugins.Plugin::name
+	IL_0011:  ldarg.0 
+	IL_0012:  ldstr "Alexandros Frantzis"
+	IL_0017:  stfld string [Bless.Plugins]Bless.Plugins.Plugin::author
+	IL_001c:  ldarg.0 
+	IL_001d:  ldstr "Export as HTML"
+	IL_0022:  call string class [Mono.Posix]Mono.Unix.Catalog::GetString(string)
+	IL_0027:  stfld string [Bless.Plugins]Bless.Plugins.Plugin::description
+	IL_002c:  ldarg.0 
+	IL_002d:  ldfld class [mscorlib]System.Collections.Generic.List`1<string> [Bless.Plugins]Bless.Plugins.Plugin::dependencies
+	IL_0032:  ldstr "TextExport"
+	IL_0037:  callvirt instance void class [mscorlib]System.Collections.Generic.List`1<string>::Add(!0)
+	IL_003c:  ret 
+    } // end of method HTMLExportPlugin::.ctor
+
+    // method line 25
+    .method public virtual hidebysig 
+           instance default class [Bless.Tools.Export]Bless.Tools.Export.IExportBuilder CreateBuilder (class [mscorlib]System.IO.Stream s)  cil managed 
+    {
+        // Method begins at RVA 0x251a
+	// Code size 7 (0x7)
+	.maxstack 8
+	IL_0000:  ldarg.1 
+	IL_0001:  newobj instance void class Bless.Tools.Export.Plugins.HTMLExportBuilder::'.ctor'(class [mscorlib]System.IO.Stream)
+	IL_0006:  ret 
+    } // end of method HTMLExportPlugin::CreateBuilder
+
+  } // end of class Bless.Tools.Export.Plugins.HTMLExportPlugin
+}
+
PE32 Mono/.Net assembly: /usr/lib64/bless/Bless.Tools.Export.dll
/usr/lib64/bless/Bless.Tools.Export.dll differs (PE32 executable (DLL) (console) Intel 80386, Mono/.Net assembly, for MS Windows)
--- old /usr/lib64/bless/Bless.Tools.Export.dll (monodis)
+++ new /usr/lib64/bless/Bless.Tools.Export.dll (monodis)
@@ -1,13 +1,9 @@
-.assembly extern Bless.Buffers
-{
-  .ver 0:0:0:0
-}
 .assembly extern mscorlib
 {
   .ver 4:0:0:0
   .publickeytoken = (B7 7A 5C 56 19 34 E0 89 ) // .z\V.4..
 }
-.assembly extern Bless.Util
+.assembly extern Bless.Buffers
 {
   .ver 0:0:0:0
 }
@@ -16,6 +12,10 @@
   .ver 4:0:0:0
   .publickeytoken = (07 38 EB 9F 13 2E D7 56 ) // .8.....V
 }
+.assembly extern Bless.Util
+{
+  .ver 0:0:0:0
+}
 .assembly 'Bless.Tools.Export'
 {
   .custom instance void class [mscorlib]System.Runtime.CompilerServices.RuntimeCompatibilityAttribute::'.ctor'() =  (
@@ -57,168 +57,39 @@
 
 .namespace Bless.Tools.Export
 {
-  .class public auto ansi beforefieldinit ExportOperation
-  	extends [Bless.Util]Bless.Util.ThreadedAsyncOperation
+  .class interface public auto ansi abstract IExporter
   {
-    .field  private  class Bless.Tools.Export.IExporter exporter
-    .field  private  class [Bless.Buffers]Bless.Buffers.IBuffer buffer
-    .field  private  int64 rangeStart
-    .field  private  int64 rangeEnd
 
     // method line 3
-    .method public hidebysig specialname rtspecialname 
-           instance default void '.ctor' (class Bless.Tools.Export.IExporter ex, class [Bless.Buffers]Bless.Buffers.IBuffer buf, int64 start, int64 end, class [Bless.Util]Bless.Util.ProgressCallback progressCb, class [mscorlib]System.AsyncCallback endCb)  cil managed 
+    .method public virtual hidebysig newslot abstract 
+           instance default void Export (class [Bless.Buffers]Bless.Buffers.IBuffer buffer, int64 start, int64 end, bool& cancelled)  cil managed 
     {
-        // Method begins at RVA 0x2050
-	// Code size 41 (0x29)
-	.maxstack 8
-	IL_0000:  ldarg.0 
-	IL_0001:  ldarg.s 5
-	IL_0003:  ldarg.s 6
-	IL_0005:  ldc.i4.1 
-	IL_0006:  call instance void class [Bless.Util]Bless.Util.ThreadedAsyncOperation::'.ctor'(class [Bless.Util]Bless.Util.ProgressCallback, class [mscorlib]System.AsyncCallback, bool)
-	IL_000b:  ldarg.0 
-	IL_000c:  ldarg.1 
-	IL_000d:  stfld class Bless.Tools.Export.IExporter Bless.Tools.Export.ExportOperation::exporter
-	IL_0012:  ldarg.0 
-	IL_0013:  ldarg.2 
-	IL_0014:  stfld class [Bless.Buffers]Bless.Buffers.IBuffer Bless.Tools.Export.ExportOperation::buffer
-	IL_0019:  ldarg.0 
-	IL_001a:  ldarg.3 
-	IL_001b:  stfld int64 Bless.Tools.Export.ExportOperation::rangeStart
-	IL_0020:  ldarg.0 
-	IL_0021:  ldarg.s 4
-	IL_0023:  stfld int64 Bless.Tools.Export.ExportOperation::rangeEnd
-	IL_0028:  ret 
-    } // end of method ExportOperation::.ctor
+        // Method begins at RVA 0x0
+    } // end of method IExporter::Export
 
     // method line 4
-    .method public hidebysig specialname 
-           instance default class Bless.Tools.Export.IExporter get_Exporter ()  cil managed 
+    .method public virtual hidebysig newslot abstract specialname 
+           instance default class Bless.Tools.Export.IExportBuilder get_Builder ()  cil managed 
     {
-        // Method begins at RVA 0x207a
-	// Code size 7 (0x7)
-	.maxstack 8
-	IL_0000:  ldarg.0 
-	IL_0001:  ldfld class Bless.Tools.Export.IExporter Bless.Tools.Export.ExportOperation::exporter
-	IL_0006:  ret 
-    } // end of method ExportOperation::get_Exporter
+        // Method begins at RVA 0x0
+    } // end of method IExporter::get_Builder
 
     // method line 5
-    .method private hidebysig 
-           instance default float64 CalculatePercentDone ()  cil managed 
-    {
-        // Method begins at RVA 0x2082
-	// Code size 35 (0x23)
-	.maxstack 8
-	IL_0000:  ldarg.0 
-	IL_0001:  ldfld class Bless.Tools.Export.IExporter Bless.Tools.Export.ExportOperation::exporter
-	IL_0006:  callvirt instance int64 class Bless.Tools.Export.IExporter::get_CurrentPosition()
-	IL_000b:  ldarg.0 
-	IL_000c:  ldfld int64 Bless.Tools.Export.ExportOperation::rangeStart
-	IL_0011:  sub 
-	IL_0012:  conv.r8 
-	IL_0013:  ldarg.0 
-	IL_0014:  ldfld int64 Bless.Tools.Export.ExportOperation::rangeEnd
-	IL_0019:  ldarg.0 
-	IL_001a:  ldfld int64 Bless.Tools.Export.ExportOperation::rangeStart
-	IL_001f:  sub 
-	IL_0020:  conv.r8 
-	IL_0021:  div 
-	IL_0022:  ret 
-    } // end of method ExportOperation::CalculatePercentDone
-
-    // method line 6
-    .method family virtual hidebysig 
-           instance default bool StartProgress ()  cil managed 
-    {
-        // Method begins at RVA 0x20a6
-	// Code size 24 (0x18)
-	.maxstack 8
-	IL_0000:  ldarg.0 
-	IL_0001:  ldfld class [Bless.Util]Bless.Util.ProgressCallback [Bless.Util]Bless.Util.ThreadedAsyncOperation::progressCallback
-	IL_0006:  ldarg.0 
-	IL_0007:  call instance float64 class Bless.Tools.Export.ExportOperation::CalculatePercentDone()
-	IL_000c:  box [mscorlib]System.Double
-	IL_0011:  ldc.i4.0 
-	IL_0012:  callvirt instance bool class [Bless.Util]Bless.Util.ProgressCallback::Invoke(object, valuetype [Bless.Util]Bless.Util.ProgressAction)
-	IL_0017:  ret 
-    } // end of method ExportOperation::StartProgress
-
-    // method line 7
-    .method family virtual hidebysig 
-           instance default bool UpdateProgress ()  cil managed 
-    {
-        // Method begins at RVA 0x20bf
-	// Code size 24 (0x18)
-	.maxstack 8
-	IL_0000:  ldarg.0 
-	IL_0001:  ldfld class [Bless.Util]Bless.Util.ProgressCallback [Bless.Util]Bless.Util.ThreadedAsyncOperation::progressCallback
-	IL_0006:  ldarg.0 
-	IL_0007:  call instance float64 class Bless.Tools.Export.ExportOperation::CalculatePercentDone()
-	IL_000c:  box [mscorlib]System.Double
-	IL_0011:  ldc.i4.2 
-	IL_0012:  callvirt instance bool class [Bless.Util]Bless.Util.ProgressCallback::Invoke(object, valuetype [Bless.Util]Bless.Util.ProgressAction)
-	IL_0017:  ret 
-    } // end of method ExportOperation::UpdateProgress
-
-    // method line 8
-    .method family virtual hidebysig 
-           instance default bool EndProgress ()  cil managed 
-    {
-        // Method begins at RVA 0x20d8
-	// Code size 24 (0x18)
-	.maxstack 8
-	IL_0000:  ldarg.0 
-	IL_0001:  ldfld class [Bless.Util]Bless.Util.ProgressCallback [Bless.Util]Bless.Util.ThreadedAsyncOperation::progressCallback
-	IL_0006:  ldarg.0 
-	IL_0007:  call instance float64 class Bless.Tools.Export.ExportOperation::CalculatePercentDone()
-	IL_000c:  box [mscorlib]System.Double
-	IL_0011:  ldc.i4.1 
-	IL_0012:  callvirt instance bool class [Bless.Util]Bless.Util.ProgressCallback::Invoke(object, valuetype [Bless.Util]Bless.Util.ProgressAction)
-	IL_0017:  ret 
-    } // end of method ExportOperation::EndProgress
-
-    // method line 9
-    .method family virtual hidebysig 
-           instance default void DoOperation ()  cil managed 
-    {
-        // Method begins at RVA 0x20f1
-	// Code size 56 (0x38)
-	.maxstack 8
-	IL_0000:  ldstr "Starting export"
-	IL_0005:  call void class [mscorlib]System.Console::WriteLine(string)
-	IL_000a:  ldarg.0 
-	IL_000b:  ldfld class Bless.Tools.Export.IExporter Bless.Tools.Export.ExportOperation::exporter
-	IL_0010:  ldarg.0 
-	IL_0011:  ldfld class [Bless.Buffers]Bless.Buffers.IBuffer Bless.Tools.Export.ExportOperation::buffer
-	IL_0016:  ldarg.0 
-	IL_0017:  ldfld int64 Bless.Tools.Export.ExportOperation::rangeStart
-	IL_001c:  ldarg.0 
-	IL_001d:  ldfld int64 Bless.Tools.Export.ExportOperation::rangeEnd
-	IL_0022:  ldarg.0 
-	IL_0023:  ldflda bool [Bless.Util]Bless.Util.ThreadedAsyncOperation::cancelled
-	IL_0028:  callvirt instance void class Bless.Tools.Export.IExporter::Export(class [Bless.Buffers]Bless.Buffers.IBuffer, int64, int64, [out] bool&)
-	IL_002d:  ldstr "Ending export"
-	IL_0032:  call void class [mscorlib]System.Console::WriteLine(string)
-	IL_0037:  ret 
-    } // end of method ExportOperation::DoOperation
-
-    // method line 10
-    .method family virtual hidebysig 
-           instance default void EndOperation ()  cil managed 
+    .method public virtual hidebysig newslot abstract specialname 
+           instance default int64 get_CurrentPosition ()  cil managed 
     {
-        // Method begins at RVA 0x212a
-	// Code size 1 (0x1)
-	.maxstack 8
-	IL_0000:  ret 
-    } // end of method ExportOperation::EndOperation
+        // Method begins at RVA 0x0
+    } // end of method IExporter::get_CurrentPosition
 
-	.property instance class Bless.Tools.Export.IExporter Exporter ()
+	.property instance class Bless.Tools.Export.IExportBuilder Builder ()
 	{
-		.get instance default class Bless.Tools.Export.IExporter Bless.Tools.Export.ExportOperation::get_Exporter () 
+		.get instance default class Bless.Tools.Export.IExportBuilder Bless.Tools.Export.IExporter::get_Builder () 
 	}
-  } // end of class Bless.Tools.Export.ExportOperation
+	.property instance int64 CurrentPosition ()
+	{
+		.get instance default int64 Bless.Tools.Export.IExporter::get_CurrentPosition () 
+	}
+  } // end of class Bless.Tools.Export.IExporter
 }
 
 .namespace Bless.Tools.Export
@@ -242,56 +113,56 @@
   .class interface public auto ansi abstract IExportBuilder
   {
 
-    // method line 11
+    // method line 6
     .method public virtual hidebysig newslot abstract 
            instance default void BuildPrologue ()  cil managed 
     {
         // Method begins at RVA 0x0
     } // end of method IExportBuilder::BuildPrologue
 
-    // method line 12
+    // method line 7
     .method public virtual hidebysig newslot abstract 
            instance default void BuildEpilogue ()  cil managed 
     {
         // Method begins at RVA 0x0
     } // end of method IExportBuilder::BuildEpilogue
 
-    // method line 13
+    // method line 8
     .method public virtual hidebysig newslot abstract 
            instance default int32 BuildBytes (class [Bless.Buffers]Bless.Buffers.IBuffer buffer, int64 offset, valuetype Bless.Tools.Export.BuildBytesInfo info)  cil managed 
     {
         // Method begins at RVA 0x0
     } // end of method IExportBuilder::BuildBytes
 
-    // method line 14
+    // method line 9
     .method public virtual hidebysig newslot abstract 
            instance default void BuildString (string str)  cil managed 
     {
         // Method begins at RVA 0x0
     } // end of method IExportBuilder::BuildString
 
-    // method line 15
+    // method line 10
     .method public virtual hidebysig newslot abstract 
            instance default void BuildCharacter (char c)  cil managed 
     {
         // Method begins at RVA 0x0
     } // end of method IExportBuilder::BuildCharacter
 
-    // method line 16
+    // method line 11
     .method public virtual hidebysig newslot abstract 
            instance default void BuildAlignment (int32 align)  cil managed 
     {
         // Method begins at RVA 0x0
     } // end of method IExportBuilder::BuildAlignment
 
-    // method line 17
+    // method line 12
     .method public virtual hidebysig newslot abstract 
            instance default void BuildOffset (int64 offset, int32 length, char 'type')  cil managed 
     {
         // Method begins at RVA 0x0
     } // end of method IExportBuilder::BuildOffset
 
-    // method line 18
+    // method line 13
     .method public virtual hidebysig newslot abstract specialname 
            instance default class [mscorlib]System.IO.Stream get_OutputStream ()  cil managed 
     {
@@ -315,17 +186,17 @@
     .field  private  int32 patternIndex
     .field  private  char characterData
     .field  private  string stringData
-    .field  private  <BROKEN CLASS token_ 1000003 due to Could not resolve type with token 01000003 assembly:mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 type:System.Collections.Generic.Stack`1 member:<none>><int64> positionStack
+    .field  private  <BROKEN CLASS token_ 1000002 due to Could not resolve type with token 01000002 assembly:mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 type:System.Collections.Generic.Stack`1 member:<none>><int64> positionStack
     .field  private  int64 rangeStart
     .field  private  int64 rangeEnd
     .field  private  int64 bufPos
     .field  private  class [Bless.Buffers]Bless.Buffers.IBuffer buffer
 
-    // method line 19
+    // method line 14
     .method public hidebysig specialname rtspecialname 
            instance default void '.ctor' (class Bless.Tools.Export.IExportBuilder ieb)  cil managed 
     {
-        // Method begins at RVA 0x212c
+        // Method begins at RVA 0x2050
 	// Code size 25 (0x19)
 	.maxstack 8
 	IL_0000:  ldarg.0 
@@ -334,16 +205,16 @@
 	IL_0007:  ldarg.1 
 	IL_0008:  stfld class Bless.Tools.Export.IExportBuilder Bless.Tools.Export.InterpretedPatternExporter::builder
 	IL_000d:  ldarg.0 
-	IL_000e:  newobj instance void <BROKEN CLASS token_ 1000003 due to Could not resolve type with token 01000003 assembly:mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 type:System.Collections.Generic.Stack`1 member:<none>><int64>::.ctor()
-	IL_0013:  stfld <BROKEN CLASS token_ 1000003 due to Could not resolve type with token 01000003 assembly:mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 type:System.Collections.Generic.Stack`1 member:<none>><int64> Bless.Tools.Export.InterpretedPatternExporter::positionStack
+	IL_000e:  newobj instance void <BROKEN CLASS token_ 1000002 due to Could not resolve type with token 01000002 assembly:mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 type:System.Collections.Generic.Stack`1 member:<none>><int64>::.ctor()
+	IL_0013:  stfld <BROKEN CLASS token_ 1000002 due to Could not resolve type with token 01000002 assembly:mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 type:System.Collections.Generic.Stack`1 member:<none>><int64> Bless.Tools.Export.InterpretedPatternExporter::positionStack
 	IL_0018:  ret 
     } // end of method InterpretedPatternExporter::.ctor
 
-    // method line 20
+    // method line 15
     .method public final virtual hidebysig newslot 
            instance default void Export (class [Bless.Buffers]Bless.Buffers.IBuffer buf, int64 start, int64 end, bool& cancelled)  cil managed 
     {
-        // Method begins at RVA 0x2148
+        // Method begins at RVA 0x206c
 	// Code size 431 (0x1af)
 	.maxstack 4
 	.locals init (
@@ -513,11 +384,11 @@
 	IL_01ae:  ret 
     } // end of method InterpretedPatternExporter::Export
 
-    // method line 21
+    // method line 16
     .method public final virtual hidebysig newslot specialname 
            instance default class Bless.Tools.Export.IExportBuilder get_Builder ()  cil managed 
     {
-        // Method begins at RVA 0x2303
+        // Method begins at RVA 0x2227
 	// Code size 7 (0x7)
 	.maxstack 8
 	IL_0000:  ldarg.0 
@@ -525,11 +396,11 @@
 	IL_0006:  ret 
     } // end of method InterpretedPatternExporter::get_Builder
 
-    // method line 22
+    // method line 17
     .method public final virtual hidebysig newslot specialname 
            instance default int64 get_CurrentPosition ()  cil managed 
     {
-        // Method begins at RVA 0x230b
+        // Method begins at RVA 0x222f
 	// Code size 7 (0x7)
 	.maxstack 8
 	IL_0000:  ldarg.0 
@@ -537,11 +408,11 @@
 	IL_0006:  ret 
     } // end of method InterpretedPatternExporter::get_CurrentPosition
 
-    // method line 23
+    // method line 18
     .method public final virtual hidebysig newslot specialname 
            instance default string get_Pattern ()  cil managed 
     {
-        // Method begins at RVA 0x2313
+        // Method begins at RVA 0x2237
 	// Code size 7 (0x7)
 	.maxstack 8
 	IL_0000:  ldarg.0 
@@ -549,11 +420,11 @@
 	IL_0006:  ret 
     } // end of method InterpretedPatternExporter::get_Pattern
 
-    // method line 24
+    // method line 19
     .method public final virtual hidebysig newslot specialname 
            instance default void set_Pattern (string 'value')  cil managed 
     {
-        // Method begins at RVA 0x231b
+        // Method begins at RVA 0x223f
 	// Code size 8 (0x8)
 	.maxstack 8
 	IL_0000:  ldarg.0 
@@ -562,11 +433,11 @@
 	IL_0007:  ret 
     } // end of method InterpretedPatternExporter::set_Pattern
 
-    // method line 25
+    // method line 20
     .method private hidebysig 
            instance default int32 ExecuteCommand (class [mscorlib]System.Collections.Hashtable cmds)  cil managed 
     {
-        // Method begins at RVA 0x2324
+        // Method begins at RVA 0x2248
 	// Code size 640 (0x280)
 	.maxstack 4
 	.locals init (
@@ -777,38 +648,38 @@
 	IL_027f:  ret 
     } // end of method InterpretedPatternExporter::ExecuteCommand
 
-    // method line 26
+    // method line 21
     .method private hidebysig 
            instance default void SavePosition (int64 cur)  cil managed 
     {
-        // Method begins at RVA 0x25b0
+        // Method begins at RVA 0x24d4
 	// Code size 13 (0xd)
 	.maxstack 8
 	IL_0000:  ldarg.0 
-	IL_0001:  ldfld <BROKEN CLASS token_ 1000003 due to Could not resolve type with token 01000003 assembly:mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 type:System.Collections.Generic.Stack`1 member:<none>><int64> Bless.Tools.Export.InterpretedPatternExporter::positionStack
+	IL_0001:  ldfld <BROKEN CLASS token_ 1000002 due to Could not resolve type with token 01000002 assembly:mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 type:System.Collections.Generic.Stack`1 member:<none>><int64> Bless.Tools.Export.InterpretedPatternExporter::positionStack
 	IL_0006:  ldarg.1 
-	IL_0007:  callvirt instance void <BROKEN CLASS token_ 1000003 due to Could not resolve type with token 01000003 assembly:mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 type:System.Collections.Generic.Stack`1 member:<none>><int64>::Push(!0)
+	IL_0007:  callvirt instance void <BROKEN CLASS token_ 1000002 due to Could not resolve type with token 01000002 assembly:mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 type:System.Collections.Generic.Stack`1 member:<none>><int64>::Push(!0)
 	IL_000c:  ret 
     } // end of method InterpretedPatternExporter::SavePosition
 
-    // method line 27
+    // method line 22
     .method private hidebysig 
            instance default int64 RestorePosition ()  cil managed 
     {
-        // Method begins at RVA 0x25be
+        // Method begins at RVA 0x24e2
 	// Code size 12 (0xc)
 	.maxstack 8
 	IL_0000:  ldarg.0 
-	IL_0001:  ldfld <BROKEN CLASS token_ 1000003 due to Could not resolve type with token 01000003 assembly:mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 type:System.Collections.Generic.Stack`1 member:<none>><int64> Bless.Tools.Export.InterpretedPatternExporter::positionStack
-	IL_0006:  callvirt instance !0 <BROKEN CLASS token_ 1000003 due to Could not resolve type with token 01000003 assembly:mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 type:System.Collections.Generic.Stack`1 member:<none>><int64>::Pop()
+	IL_0001:  ldfld <BROKEN CLASS token_ 1000002 due to Could not resolve type with token 01000002 assembly:mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 type:System.Collections.Generic.Stack`1 member:<none>><int64> Bless.Tools.Export.InterpretedPatternExporter::positionStack
+	IL_0006:  callvirt instance !0 <BROKEN CLASS token_ 1000002 due to Could not resolve type with token 01000002 assembly:mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 type:System.Collections.Generic.Stack`1 member:<none>><int64>::Pop()
 	IL_000b:  ret 
     } // end of method InterpretedPatternExporter::RestorePosition
 
-    // method line 28
+    // method line 23
     .method private hidebysig 
            instance default void RestartInterpreter ()  cil managed 
     {
-        // Method begins at RVA 0x25cb
+        // Method begins at RVA 0x24ef
 	// Code size 8 (0x8)
 	.maxstack 8
 	IL_0000:  ldarg.0 
@@ -817,11 +688,11 @@
 	IL_0007:  ret 
     } // end of method InterpretedPatternExporter::RestartInterpreter
 
-    // method line 29
+    // method line 24
     .method private hidebysig 
            instance default valuetype Bless.Tools.Export.InterpretedPatternExporter/Token NextToken ()  cil managed 
     {
-        // Method begins at RVA 0x25d4
+        // Method begins at RVA 0x24f8
 	// Code size 228 (0xe4)
 	.maxstack 3
 	.locals init (
@@ -922,11 +793,11 @@
 	IL_00e3:  ret 
     } // end of method InterpretedPatternExporter::NextToken
 
-    // method line 30
+    // method line 25
     .method private hidebysig 
            instance default valuetype Bless.Tools.Export.InterpretedPatternExporter/Token ParseString ()  cil managed 
     {
-        // Method begins at RVA 0x26c4
+        // Method begins at RVA 0x25e8
 	// Code size 214 (0xd6)
 	.maxstack 3
 	.locals init (
@@ -1027,11 +898,11 @@
 	IL_00d5:  ret 
     } // end of method InterpretedPatternExporter::ParseString
 
-    // method line 31
+    // method line 26
     .method private hidebysig 
            instance default valuetype Bless.Tools.Export.InterpretedPatternExporter/Token ParseEscapedCharacter ()  cil managed 
     {
-        // Method begins at RVA 0x27a8
+        // Method begins at RVA 0x26cc
 	// Code size 152 (0x98)
 	.maxstack 4
 	.locals init (
@@ -1107,11 +978,11 @@
 	IL_0097:  ret 
     } // end of method InterpretedPatternExporter::ParseEscapedCharacter
 
-    // method line 32
+    // method line 27
     .method private hidebysig 
            instance default valuetype Bless.Tools.Export.InterpretedPatternExporter/Token ParseCommand (class [mscorlib]System.Collections.Hashtable cmds)  cil managed 
     {
-        // Method begins at RVA 0x284c
+        // Method begins at RVA 0x2770
 	// Code size 135 (0x87)
 	.maxstack 3
 	.locals init (
@@ -1211,38 +1082,167 @@
 
 .namespace Bless.Tools.Export
 {
-  .class interface public auto ansi abstract IExporter
+  .class public auto ansi beforefieldinit ExportOperation
+  	extends [Bless.Util]Bless.Util.ThreadedAsyncOperation
   {
+    .field  private  class Bless.Tools.Export.IExporter exporter
+    .field  private  class [Bless.Buffers]Bless.Buffers.IBuffer buffer
+    .field  private  int64 rangeStart
+    .field  private  int64 rangeEnd
+
+    // method line 28
+    .method public hidebysig specialname rtspecialname 
+           instance default void '.ctor' (class Bless.Tools.Export.IExporter ex, class [Bless.Buffers]Bless.Buffers.IBuffer buf, int64 start, int64 end, class [Bless.Util]Bless.Util.ProgressCallback progressCb, class [mscorlib]System.AsyncCallback endCb)  cil managed 
+    {
+        // Method begins at RVA 0x2803
+	// Code size 41 (0x29)
+	.maxstack 8
+	IL_0000:  ldarg.0 
+	IL_0001:  ldarg.s 5
+	IL_0003:  ldarg.s 6
+	IL_0005:  ldc.i4.1 
+	IL_0006:  call instance void class [Bless.Util]Bless.Util.ThreadedAsyncOperation::'.ctor'(class [Bless.Util]Bless.Util.ProgressCallback, class [mscorlib]System.AsyncCallback, bool)
+	IL_000b:  ldarg.0 
+	IL_000c:  ldarg.1 
+	IL_000d:  stfld class Bless.Tools.Export.IExporter Bless.Tools.Export.ExportOperation::exporter
+	IL_0012:  ldarg.0 
+	IL_0013:  ldarg.2 
+	IL_0014:  stfld class [Bless.Buffers]Bless.Buffers.IBuffer Bless.Tools.Export.ExportOperation::buffer
+	IL_0019:  ldarg.0 
+	IL_001a:  ldarg.3 
+	IL_001b:  stfld int64 Bless.Tools.Export.ExportOperation::rangeStart
+	IL_0020:  ldarg.0 
+	IL_0021:  ldarg.s 4
+	IL_0023:  stfld int64 Bless.Tools.Export.ExportOperation::rangeEnd
+	IL_0028:  ret 
+    } // end of method ExportOperation::.ctor
+
+    // method line 29
+    .method public hidebysig specialname 
+           instance default class Bless.Tools.Export.IExporter get_Exporter ()  cil managed 
+    {
+        // Method begins at RVA 0x282d
+	// Code size 7 (0x7)
+	.maxstack 8
+	IL_0000:  ldarg.0 
+	IL_0001:  ldfld class Bless.Tools.Export.IExporter Bless.Tools.Export.ExportOperation::exporter
+	IL_0006:  ret 
+    } // end of method ExportOperation::get_Exporter
+
+    // method line 30
+    .method private hidebysig 
+           instance default float64 CalculatePercentDone ()  cil managed 
+    {
+        // Method begins at RVA 0x2835
+	// Code size 35 (0x23)
+	.maxstack 8
+	IL_0000:  ldarg.0 
+	IL_0001:  ldfld class Bless.Tools.Export.IExporter Bless.Tools.Export.ExportOperation::exporter
+	IL_0006:  callvirt instance int64 class Bless.Tools.Export.IExporter::get_CurrentPosition()
+	IL_000b:  ldarg.0 
+	IL_000c:  ldfld int64 Bless.Tools.Export.ExportOperation::rangeStart
+	IL_0011:  sub 
+	IL_0012:  conv.r8 
+	IL_0013:  ldarg.0 
+	IL_0014:  ldfld int64 Bless.Tools.Export.ExportOperation::rangeEnd
+	IL_0019:  ldarg.0 
+	IL_001a:  ldfld int64 Bless.Tools.Export.ExportOperation::rangeStart
+	IL_001f:  sub 
+	IL_0020:  conv.r8 
+	IL_0021:  div 
+	IL_0022:  ret 
+    } // end of method ExportOperation::CalculatePercentDone
+
+    // method line 31
+    .method family virtual hidebysig 
+           instance default bool StartProgress ()  cil managed 
+    {
+        // Method begins at RVA 0x2859
+	// Code size 24 (0x18)
+	.maxstack 8
+	IL_0000:  ldarg.0 
+	IL_0001:  ldfld class [Bless.Util]Bless.Util.ProgressCallback [Bless.Util]Bless.Util.ThreadedAsyncOperation::progressCallback
+	IL_0006:  ldarg.0 
+	IL_0007:  call instance float64 class Bless.Tools.Export.ExportOperation::CalculatePercentDone()
+	IL_000c:  box [mscorlib]System.Double
+	IL_0011:  ldc.i4.0 
+	IL_0012:  callvirt instance bool class [Bless.Util]Bless.Util.ProgressCallback::Invoke(object, valuetype [Bless.Util]Bless.Util.ProgressAction)
+	IL_0017:  ret 
+    } // end of method ExportOperation::StartProgress
+
+    // method line 32
+    .method family virtual hidebysig 
+           instance default bool UpdateProgress ()  cil managed 
+    {
+        // Method begins at RVA 0x2872
+	// Code size 24 (0x18)
+	.maxstack 8
+	IL_0000:  ldarg.0 
+	IL_0001:  ldfld class [Bless.Util]Bless.Util.ProgressCallback [Bless.Util]Bless.Util.ThreadedAsyncOperation::progressCallback
+	IL_0006:  ldarg.0 
+	IL_0007:  call instance float64 class Bless.Tools.Export.ExportOperation::CalculatePercentDone()
+	IL_000c:  box [mscorlib]System.Double
+	IL_0011:  ldc.i4.2 
+	IL_0012:  callvirt instance bool class [Bless.Util]Bless.Util.ProgressCallback::Invoke(object, valuetype [Bless.Util]Bless.Util.ProgressAction)
+	IL_0017:  ret 
+    } // end of method ExportOperation::UpdateProgress
 
     // method line 33
-    .method public virtual hidebysig newslot abstract 
-           instance default void Export (class [Bless.Buffers]Bless.Buffers.IBuffer buffer, int64 start, int64 end, bool& cancelled)  cil managed 
+    .method family virtual hidebysig 
+           instance default bool EndProgress ()  cil managed 
     {
-        // Method begins at RVA 0x0
-    } // end of method IExporter::Export
+        // Method begins at RVA 0x288b
+	// Code size 24 (0x18)
+	.maxstack 8
+	IL_0000:  ldarg.0 
+	IL_0001:  ldfld class [Bless.Util]Bless.Util.ProgressCallback [Bless.Util]Bless.Util.ThreadedAsyncOperation::progressCallback
+	IL_0006:  ldarg.0 
+	IL_0007:  call instance float64 class Bless.Tools.Export.ExportOperation::CalculatePercentDone()
+	IL_000c:  box [mscorlib]System.Double
+	IL_0011:  ldc.i4.1 
+	IL_0012:  callvirt instance bool class [Bless.Util]Bless.Util.ProgressCallback::Invoke(object, valuetype [Bless.Util]Bless.Util.ProgressAction)
+	IL_0017:  ret 
+    } // end of method ExportOperation::EndProgress
 
     // method line 34
-    .method public virtual hidebysig newslot abstract specialname 
-           instance default class Bless.Tools.Export.IExportBuilder get_Builder ()  cil managed 
+    .method family virtual hidebysig 
+           instance default void DoOperation ()  cil managed 
     {
-        // Method begins at RVA 0x0
-    } // end of method IExporter::get_Builder
+        // Method begins at RVA 0x28a4
+	// Code size 56 (0x38)
+	.maxstack 8
+	IL_0000:  ldstr "Starting export"
+	IL_0005:  call void class [mscorlib]System.Console::WriteLine(string)
+	IL_000a:  ldarg.0 
+	IL_000b:  ldfld class Bless.Tools.Export.IExporter Bless.Tools.Export.ExportOperation::exporter
+	IL_0010:  ldarg.0 
+	IL_0011:  ldfld class [Bless.Buffers]Bless.Buffers.IBuffer Bless.Tools.Export.ExportOperation::buffer
+	IL_0016:  ldarg.0 
+	IL_0017:  ldfld int64 Bless.Tools.Export.ExportOperation::rangeStart
+	IL_001c:  ldarg.0 
+	IL_001d:  ldfld int64 Bless.Tools.Export.ExportOperation::rangeEnd
+	IL_0022:  ldarg.0 
+	IL_0023:  ldflda bool [Bless.Util]Bless.Util.ThreadedAsyncOperation::cancelled
+	IL_0028:  callvirt instance void class Bless.Tools.Export.IExporter::Export(class [Bless.Buffers]Bless.Buffers.IBuffer, int64, int64, [out] bool&)
+	IL_002d:  ldstr "Ending export"
+	IL_0032:  call void class [mscorlib]System.Console::WriteLine(string)
+	IL_0037:  ret 
+    } // end of method ExportOperation::DoOperation
 
     // method line 35
-    .method public virtual hidebysig newslot abstract specialname 
-           instance default int64 get_CurrentPosition ()  cil managed 
+    .method family virtual hidebysig 
+           instance default void EndOperation ()  cil managed 
     {
-        // Method begins at RVA 0x0
-    } // end of method IExporter::get_CurrentPosition
+        // Method begins at RVA 0x28dd
+	// Code size 1 (0x1)
+	.maxstack 8
+	IL_0000:  ret 
+    } // end of method ExportOperation::EndOperation
 
-	.property instance class Bless.Tools.Export.IExportBuilder Builder ()
-	{
-		.get instance default class Bless.Tools.Export.IExportBuilder Bless.Tools.Export.IExporter::get_Builder () 
-	}
-	.property instance int64 CurrentPosition ()
+	.property instance class Bless.Tools.Export.IExporter Exporter ()
 	{
-		.get instance default int64 Bless.Tools.Export.IExporter::get_CurrentPosition () 
+		.get instance default class Bless.Tools.Export.IExporter Bless.Tools.Export.ExportOperation::get_Exporter () 
 	}
-  } // end of class Bless.Tools.Export.IExporter
+  } // end of class Bless.Tools.Export.ExportOperation
 }
 
PE32 Mono/.Net assembly: /usr/lib64/bless/Bless.Util.dll
/usr/lib64/bless/Bless.Util.dll differs (PE32 executable (DLL) (console) Intel 80386, Mono/.Net assembly, for MS Windows)
--- old /usr/lib64/bless/Bless.Util.dll (monodis)
+++ new /usr/lib64/bless/Bless.Util.dll (monodis)
@@ -27,2835 +27,2414 @@
 
 .namespace Bless.Util
 {
-  .class public auto ansi sealed ProgressAction
-  	extends [mscorlib]System.Enum
-  {
-    .field  public specialname rtspecialname  int32 value__
-    .field public static literal  valuetype Bless.Util.ProgressAction Show = int32(0x00000000)
-    .field public static literal  valuetype Bless.Util.ProgressAction Hide = int32(0x00000001)
-    .field public static literal  valuetype Bless.Util.ProgressAction Update = int32(0x00000002)
-    .field public static literal  valuetype Bless.Util.ProgressAction Message = int32(0x00000003)
-    .field public static literal  valuetype Bless.Util.ProgressAction Details = int32(0x00000004)
-    .field public static literal  valuetype Bless.Util.ProgressAction Destroy = int32(0x00000005)
-
-  } // end of class Bless.Util.ProgressAction
-}
-
-.namespace Bless.Util
-{
-  .class public auto ansi sealed ProgressCallback
-  	extends [mscorlib]System.MulticastDelegate
+  .class public auto ansi beforefieldinit ByteArray
+  	extends [mscorlib]System.Object
   {
 
     // method line 1
-    .method public hidebysig specialname rtspecialname 
-           instance default void '.ctor' (object 'object', native int 'method')  runtime managed 
+    .method private hidebysig specialname rtspecialname 
+           instance default void '.ctor' ()  cil managed 
     {
-        // Method begins at RVA 0x0
-          // Disassembly of native methods is not supported
-    } // end of method ProgressCallback::.ctor
+        // Method begins at RVA 0x2050
+	// Code size 7 (0x7)
+	.maxstack 8
+	IL_0000:  ldarg.0 
+	IL_0001:  call instance void object::'.ctor'()
+	IL_0006:  ret 
+    } // end of method ByteArray::.ctor
 
     // method line 2
-    .method public virtual hidebysig newslot 
-           instance default bool Invoke (object o, valuetype Bless.Util.ProgressAction action)  runtime managed 
+    .method public static hidebysig 
+           default unsigned int8[] FromString (string s, int32 baseNum)  cil managed 
     {
-        // Method begins at RVA 0x0
-          // Disassembly of native methods is not supported
-    } // end of method ProgressCallback::Invoke
+        // Method begins at RVA 0x2058
+	// Code size 167 (0xa7)
+	.maxstack 5
+	.locals init (
+		int32	V_0,
+		int32	V_1,
+		class [mscorlib]System.Collections.Generic.List`1<unsigned int8>	V_2,
+		int32	V_3)
+	IL_0000:  ldc.i4.0 
+	IL_0001:  stloc.0 
+	IL_0002:  ldarg.0 
+	IL_0003:  callvirt instance int32 string::get_Length()
+	IL_0008:  stloc.1 
+	IL_0009:  newobj instance void class [mscorlib]System.Collections.Generic.List`1<unsigned int8>::'.ctor'()
+	IL_000e:  stloc.2 
+	IL_000f:  br IL_0018
+
+	IL_0014:  ldloc.0 
+	IL_0015:  ldc.i4.1 
+	IL_0016:  add 
+	IL_0017:  stloc.0 
+	IL_0018:  ldloc.0 
+	IL_0019:  ldloc.1 
+	IL_001a:  bge IL_002d
+
+	IL_001f:  ldarg.0 
+	IL_0020:  ldloc.0 
+	IL_0021:  callvirt instance char string::get_Chars(int32)
+	IL_0026:  ldc.i4.s 0x20
+	IL_0028:  beq IL_0014
+
+	IL_002d:  br IL_0099
+
+	IL_0032:  ldc.i4.1 
+	IL_0033:  stloc.3 
+	IL_0034:  br IL_003d
+
+	IL_0039:  ldloc.3 
+	IL_003a:  ldc.i4.1 
+	IL_003b:  add 
+	IL_003c:  stloc.3 
+	IL_003d:  ldloc.0 
+	IL_003e:  ldloc.3 
+	IL_003f:  add 
+	IL_0040:  ldloc.1 
+	IL_0041:  bge IL_0063
+
+	IL_0046:  ldarg.0 
+	IL_0047:  ldloc.0 
+	IL_0048:  ldloc.3 
+	IL_0049:  add 
+	IL_004a:  callvirt instance char string::get_Chars(int32)
+	IL_004f:  ldc.i4.s 0x20
+	IL_0051:  beq IL_0063
+
+	IL_0056:  ldloc.3 
+	IL_0057:  ldsfld int32[] Bless.Util.BaseConverter::DefaultMinDigits
+	IL_005c:  ldarg.1 
+	IL_005d:  ldelem.i4 
+	IL_005e:  blt IL_0039
+
+	IL_0063:  ldloc.2 
+	IL_0064:  ldarg.0 
+	IL_0065:  ldloc.0 
+	IL_0066:  ldloc.0 
+	IL_0067:  ldloc.3 
+	IL_0068:  add 
+	IL_0069:  ldc.i4.1 
+	IL_006a:  sub 
+	IL_006b:  ldarg.1 
+	IL_006c:  call int64 class Bless.Util.BaseConverter::ConvertToNum(string, int32, int32, int32)
+	IL_0071:  conv.u1 
+	IL_0072:  callvirt instance void class [mscorlib]System.Collections.Generic.List`1<unsigned int8>::Add(!0)
+	IL_0077:  ldloc.0 
+	IL_0078:  ldloc.3 
+	IL_0079:  add 
+	IL_007a:  stloc.0 
+	IL_007b:  br IL_0084
+
+	IL_0080:  ldloc.0 
+	IL_0081:  ldc.i4.1 
+	IL_0082:  add 
+	IL_0083:  stloc.0 
+	IL_0084:  ldloc.0 
+	IL_0085:  ldloc.1 
+	IL_0086:  bge IL_0099
+
+	IL_008b:  ldarg.0 
+	IL_008c:  ldloc.0 
+	IL_008d:  callvirt instance char string::get_Chars(int32)
+	IL_0092:  ldc.i4.s 0x20
+	IL_0094:  beq IL_0080
+
+	IL_0099:  ldloc.0 
+	IL_009a:  ldloc.1 
+	IL_009b:  blt IL_0032
+
+	IL_00a0:  ldloc.2 
+	IL_00a1:  callvirt instance !0[] class [mscorlib]System.Collections.Generic.List`1<unsigned int8>::ToArray()
+	IL_00a6:  ret 
+    } // end of method ByteArray::FromString
 
     // method line 3
-    .method public virtual hidebysig newslot 
-           instance default class [mscorlib]System.IAsyncResult BeginInvoke (object o, valuetype Bless.Util.ProgressAction action, class [mscorlib]System.AsyncCallback callback, object 'object')  runtime managed 
+    .method public static hidebysig 
+           default string ToString (unsigned int8[] ba, int32 baseNum)  cil managed 
     {
-        // Method begins at RVA 0x0
-          // Disassembly of native methods is not supported
-    } // end of method ProgressCallback::BeginInvoke
+        // Method begins at RVA 0x210c
+	// Code size 99 (0x63)
+	.maxstack 4
+	.locals init (
+		class [mscorlib]System.Text.StringBuilder	V_0,
+		unsigned int8	V_1,
+		unsigned int8[]	V_2,
+		int32	V_3)
+	IL_0000:  ldarg.0 
+	IL_0001:  ldlen 
+	IL_0002:  conv.i4 
+	IL_0003:  brtrue IL_000e
 
-    // method line 4
-    .method public virtual hidebysig newslot 
-           instance default bool EndInvoke (class [mscorlib]System.IAsyncResult result)  runtime managed 
-    {
-        // Method begins at RVA 0x0
-          // Disassembly of native methods is not supported
-    } // end of method ProgressCallback::EndInvoke
+	IL_0008:  ldsfld string [mscorlib]System.String::Empty
+	IL_000d:  ret 
+	IL_000e:  ldarg.0 
+	IL_000f:  ldlen 
+	IL_0010:  conv.i4 
+	IL_0011:  ldsfld int32[] Bless.Util.BaseConverter::DefaultMinDigits
+	IL_0016:  ldarg.1 
+	IL_0017:  ldelem.i4 
+	IL_0018:  ldc.i4.1 
+	IL_0019:  add 
+	IL_001a:  mul 
+	IL_001b:  newobj instance void class [mscorlib]System.Text.StringBuilder::'.ctor'(int32)
+	IL_0020:  stloc.0 
+	IL_0021:  ldarg.0 
+	IL_0022:  stloc.2 
+	IL_0023:  ldc.i4.0 
+	IL_0024:  stloc.3 
+	IL_0025:  br IL_004a
 
-  } // end of class Bless.Util.ProgressCallback
+	IL_002a:  ldloc.2 
+	IL_002b:  ldloc.3 
+	IL_002c:  ldelem.u1 
+	IL_002d:  stloc.1 
+	IL_002e:  ldloc.0 
+	IL_002f:  ldloc.1 
+	IL_0030:  conv.i8 
+	IL_0031:  ldarg.1 
+	IL_0032:  call string class Bless.Util.BaseConverter::ConvertToString(int64, int32)
+	IL_0037:  callvirt instance class [mscorlib]System.Text.StringBuilder class [mscorlib]System.Text.StringBuilder::Append(string)
+	IL_003c:  pop 
+	IL_003d:  ldloc.0 
+	IL_003e:  ldc.i4.s 0x20
+	IL_0040:  callvirt instance class [mscorlib]System.Text.StringBuilder class [mscorlib]System.Text.StringBuilder::Append(char)
+	IL_0045:  pop 
+	IL_0046:  ldloc.3 
+	IL_0047:  ldc.i4.1 
+	IL_0048:  add 
+	IL_0049:  stloc.3 
+	IL_004a:  ldloc.3 
+	IL_004b:  ldloc.2 
+	IL_004c:  ldlen 
+	IL_004d:  conv.i4 
+	IL_004e:  blt IL_002a
+
+	IL_0053:  ldloc.0 
+	IL_0054:  ldc.i4.0 
+	IL_0055:  ldloc.0 
+	IL_0056:  callvirt instance int32 class [mscorlib]System.Text.StringBuilder::get_Length()
+	IL_005b:  ldc.i4.1 
+	IL_005c:  sub 
+	IL_005d:  callvirt instance string class [mscorlib]System.Text.StringBuilder::ToString(int32, int32)
+	IL_0062:  ret 
+    } // end of method ByteArray::ToString
+
+  } // end of class Bless.Util.ByteArray
 }
 
 .namespace Bless.Util
 {
-  .class public auto ansi beforefieldinit IntervalTree`1<(class Bless.Util.IRange) T>
-  	extends class Bless.Util.RedBlackTree`2<int64,!0>
+  .class public auto ansi beforefieldinit TempFile
+  	extends [mscorlib]System.Object
   {
-    .field  private  class [mscorlib]System.Collections.Generic.List`1<!0> searchResults
 
-    // method line 5
-    .method public hidebysig specialname rtspecialname 
+    // method line 4
+    .method private hidebysig specialname rtspecialname 
            instance default void '.ctor' ()  cil managed 
     {
-        // Method begins at RVA 0x2a0e
-	// Code size 12 (0xc)
+        // Method begins at RVA 0x217b
+	// Code size 7 (0x7)
 	.maxstack 8
 	IL_0000:  ldarg.0 
-	IL_0001:  newobj instance void class Bless.Util.IntervalTree`1/ITNodeFactory<!T>::'.ctor'()
-	IL_0006:  call instance void class Bless.Util.RedBlackTree`2<int64, !T>::'.ctor'(class Bless.Util.RedBlackTree`2/INodeFactory<!0,!1>)
-	IL_000b:  ret 
-    } // end of method IntervalTree`1::.ctor
+	IL_0001:  call instance void object::'.ctor'()
+	IL_0006:  ret 
+    } // end of method TempFile::.ctor
 
-    // method line 6
-    .method private hidebysig 
-           instance default bool RangesOverlap (class Bless.Util.IRange r1, class Bless.Util.IRange r2)  cil managed 
+    // method line 5
+    .method public static hidebysig 
+           default string CreateName (string dir)  cil managed 
     {
-        // Method begins at RVA 0x2a1c
-	// Code size 110 (0x6e)
-	.maxstack 2
-	IL_0000:  ldarg.1 
-	IL_0001:  callvirt instance int64 class Bless.Util.IRange::get_Start()
-	IL_0006:  ldarg.2 
-	IL_0007:  callvirt instance int64 class Bless.Util.IRange::get_Start()
-	IL_000c:  blt IL_0024
-
-	IL_0011:  ldarg.1 
-	IL_0012:  callvirt instance int64 class Bless.Util.IRange::get_Start()
-	IL_0017:  ldarg.2 
-	IL_0018:  callvirt instance int64 class Bless.Util.IRange::get_End()
-	IL_001d:  bgt IL_0024
+        // Method begins at RVA 0x2184
+	// Code size 132 (0x84)
+	.maxstack 4
+	.locals init (
+		string	V_0,
+		class [mscorlib]System.Random	V_1,
+		int32	V_2)
+	IL_0000:  newobj instance void class [mscorlib]System.Random::'.ctor'()
+	IL_0005:  stloc.1 
+	IL_0006:  ldsfld string [mscorlib]System.String::Empty
+	IL_000b:  stloc.0 
+	IL_000c:  ldc.i4.0 
+	IL_000d:  stloc.2 
+	IL_000e:  br IL_0039
 
-	IL_0022:  ldc.i4.1 
-	IL_0023:  ret 
-	IL_0024:  ldarg.1 
-	IL_0025:  callvirt instance int64 class Bless.Util.IRange::get_End()
-	IL_002a:  ldarg.2 
-	IL_002b:  callvirt instance int64 class Bless.Util.IRange::get_Start()
-	IL_0030:  blt IL_0048
+	IL_0013:  ldloc.0 
+	IL_0014:  ldloc.1 
+	IL_0015:  callvirt instance int32 class [mscorlib]System.Random::Next()
+	IL_001a:  ldc.i4.s 0x1a
+	IL_001c:  rem 
+	IL_001d:  ldc.i4.s 0x61
+	IL_001f:  call int32 class [mscorlib]System.Convert::ToInt32(char)
+	IL_0024:  add 
+	IL_0025:  call char class [mscorlib]System.Convert::ToChar(int32)
+	IL_002a:  box [mscorlib]System.Char
+	IL_002f:  call string string::Concat(object, object)
+	IL_0034:  stloc.0 
+	IL_0035:  ldloc.2 
+	IL_0036:  ldc.i4.1 
+	IL_0037:  add 
+	IL_0038:  stloc.2 
+	IL_0039:  ldloc.2 
+	IL_003a:  ldc.i4.8 
+	IL_003b:  blt IL_0013
 
-	IL_0035:  ldarg.1 
-	IL_0036:  callvirt instance int64 class Bless.Util.IRange::get_End()
-	IL_003b:  ldarg.2 
-	IL_003c:  callvirt instance int64 class Bless.Util.IRange::get_End()
-	IL_0041:  bgt IL_0048
+	IL_0040:  ldc.i4.4 
+	IL_0041:  newarr [mscorlib]System.Object
+	IL_0046:  dup 
+	IL_0047:  ldc.i4.0 
+	IL_0048:  ldarg.0 
+	IL_0049:  stelem.ref 
+	IL_004a:  dup 
+	IL_004b:  ldc.i4.1 
+	IL_004c:  ldsfld char [mscorlib]System.IO.Path::DirectorySeparatorChar
+	IL_0051:  box [mscorlib]System.Char
+	IL_0056:  stelem.ref 
+	IL_0057:  dup 
+	IL_0058:  ldc.i4.2 
+	IL_0059:  ldloc.0 
+	IL_005a:  stelem.ref 
+	IL_005b:  dup 
+	IL_005c:  ldc.i4.3 
+	IL_005d:  ldstr ".bless"
+	IL_0062:  stelem.ref 
+	IL_0063:  call string string::Concat(object[])
+	IL_0068:  call bool class [mscorlib]System.IO.File::Exists(string)
+	IL_006d:  brtrue IL_0006
 
-	IL_0046:  ldc.i4.1 
-	IL_0047:  ret 
-	IL_0048:  ldarg.1 
-	IL_0049:  callvirt instance int64 class Bless.Util.IRange::get_Start()
-	IL_004e:  ldarg.2 
-	IL_004f:  callvirt instance int64 class Bless.Util.IRange::get_Start()
-	IL_0054:  bgt IL_006c
+	IL_0072:  ldarg.0 
+	IL_0073:  ldloc.0 
+	IL_0074:  ldstr ".bless"
+	IL_0079:  call string string::Concat(string, string)
+	IL_007e:  call string class [mscorlib]System.IO.Path::Combine(string, string)
+	IL_0083:  ret 
+    } // end of method TempFile::CreateName
 
-	IL_0059:  ldarg.1 
-	IL_005a:  callvirt instance int64 class Bless.Util.IRange::get_End()
-	IL_005f:  ldarg.2 
-	IL_0060:  callvirt instance int64 class Bless.Util.IRange::get_End()
-	IL_0065:  blt IL_006c
+  } // end of class Bless.Util.TempFile
+}
 
-	IL_006a:  ldc.i4.1 
-	IL_006b:  ret 
-	IL_006c:  ldc.i4.0 
-	IL_006d:  ret 
-    } // end of method IntervalTree`1::RangesOverlap
+.namespace Bless.Util
+{
+  .class public auto ansi sealed ProgressAction
+  	extends [mscorlib]System.Enum
+  {
+    .field  public specialname rtspecialname  int32 value__
+    .field public static literal  valuetype Bless.Util.ProgressAction Show = int32(0x00000000)
+    .field public static literal  valuetype Bless.Util.ProgressAction Hide = int32(0x00000001)
+    .field public static literal  valuetype Bless.Util.ProgressAction Update = int32(0x00000002)
+    .field public static literal  valuetype Bless.Util.ProgressAction Message = int32(0x00000003)
+    .field public static literal  valuetype Bless.Util.ProgressAction Details = int32(0x00000004)
+    .field public static literal  valuetype Bless.Util.ProgressAction Destroy = int32(0x00000005)
+
+  } // end of class Bless.Util.ProgressAction
+}
+
+.namespace Bless.Util
+{
+  .class public auto ansi sealed ProgressCallback
+  	extends [mscorlib]System.MulticastDelegate
+  {
+
+    // method line 6
+    .method public hidebysig specialname rtspecialname 
+           instance default void '.ctor' (object 'object', native int 'method')  runtime managed 
+    {
+        // Method begins at RVA 0x0
+          // Disassembly of native methods is not supported
+    } // end of method ProgressCallback::.ctor
 
     // method line 7
-    .method family virtual hidebysig 
-           instance default void AddToValues (class Bless.Util.RedBlackTree`2/INode<int64, !T> n, !T val)  cil managed 
+    .method public virtual hidebysig newslot 
+           instance default bool Invoke (object o, valuetype Bless.Util.ProgressAction action)  runtime managed 
     {
-        // Method begins at RVA 0x2a96
-	// Code size 49 (0x31)
+        // Method begins at RVA 0x0
+          // Disassembly of native methods is not supported
+    } // end of method ProgressCallback::Invoke
+
+    // method line 8
+    .method public virtual hidebysig newslot 
+           instance default class [mscorlib]System.IAsyncResult BeginInvoke (object o, valuetype Bless.Util.ProgressAction action, class [mscorlib]System.AsyncCallback callback, object 'object')  runtime managed 
+    {
+        // Method begins at RVA 0x0
+          // Disassembly of native methods is not supported
+    } // end of method ProgressCallback::BeginInvoke
+
+    // method line 9
+    .method public virtual hidebysig newslot 
+           instance default bool EndInvoke (class [mscorlib]System.IAsyncResult result)  runtime managed 
+    {
+        // Method begins at RVA 0x0
+          // Disassembly of native methods is not supported
+    } // end of method ProgressCallback::EndInvoke
+
+  } // end of class Bless.Util.ProgressCallback
+}
+
+.namespace Bless.Util
+{
+  .class public auto ansi beforefieldinit RangeCollection
+  	extends [mscorlib]System.Collections.ArrayList
+  {
+
+    // method line 10
+    .method public hidebysig specialname rtspecialname 
+           instance default void '.ctor' ()  cil managed 
+    {
+        // Method begins at RVA 0x2214
+	// Code size 19 (0x13)
 	.maxstack 8
 	IL_0000:  ldarg.0 
-	IL_0001:  ldarg.1 
-	IL_0002:  ldarg.2 
-	IL_0003:  call instance void class Bless.Util.RedBlackTree`2<int64, !T>::AddToValues(class Bless.Util.RedBlackTree`2/INode<!0,!1>, !1)
-	IL_0008:  ldarg.1 
-	IL_0009:  isinst class Bless.Util.IntervalTree`1/ITNode<!0>
-	IL_000e:  ldarg.1 
-	IL_000f:  isinst class Bless.Util.IntervalTree`1/ITNode<!0>
-	IL_0014:  callvirt instance int64 class Bless.Util.IntervalTree`1/ITNode<!T>::get_Max()
-	IL_0019:  ldarga.s 2
-	IL_001b:  constrained. !0
-	IL_0021:  callvirt instance int64 class Bless.Util.IRange::get_End()
-	IL_0026:  call int64 class [mscorlib]System.Math::Max(int64, int64)
-	IL_002b:  callvirt instance void class Bless.Util.IntervalTree`1/ITNode<!T>::set_Max(int64)
-	IL_0030:  ret 
-    } // end of method IntervalTree`1::AddToValues
+	IL_0001:  call instance void class [mscorlib]System.Collections.ArrayList::'.ctor'()
+	IL_0006:  ldarg.0 
+	IL_0007:  newobj instance void class Bless.Util.Range::'.ctor'()
+	IL_000c:  callvirt instance int32 class [mscorlib]System.Collections.ArrayList::Add(object)
+	IL_0011:  pop 
+	IL_0012:  ret 
+    } // end of method RangeCollection::.ctor
 
-    // method line 8
-    .method public hidebysig 
-           instance default void Insert (!T r)  cil managed 
+    // method line 11
+    .method public hidebysig specialname 
+           instance default class Bless.Util.Range get_LastAdded ()  cil managed 
     {
-        // Method begins at RVA 0x2ac8
-	// Code size 21 (0x15)
+        // Method begins at RVA 0x2228
+	// Code size 20 (0x14)
 	.maxstack 8
 	IL_0000:  ldarg.0 
-	IL_0001:  ldarga.s 1
-	IL_0003:  constrained. !0
-	IL_0009:  callvirt instance int64 class Bless.Util.IRange::get_Start()
-	IL_000e:  ldarg.1 
-	IL_000f:  callvirt instance void class Bless.Util.RedBlackTree`2<int64, !T>::Insert(!0, !1)
-	IL_0014:  ret 
-    } // end of method IntervalTree`1::Insert
+	IL_0001:  ldarg.0 
+	IL_0002:  callvirt instance int32 class [mscorlib]System.Collections.ArrayList::get_Count()
+	IL_0007:  ldc.i4.1 
+	IL_0008:  sub 
+	IL_0009:  callvirt instance object class [mscorlib]System.Collections.ArrayList::get_Item(int32)
+	IL_000e:  castclass Bless.Util.Range
+	IL_0013:  ret 
+    } // end of method RangeCollection::get_LastAdded
 
-    // method line 9
+    // method line 12
     .method public hidebysig 
-           instance default class [mscorlib]System.Collections.Generic.IList`1<!T> SearchOverlap (class Bless.Util.IRange r)  cil managed 
+           instance default void UpdateRange (class Bless.Util.Range oldRange, class Bless.Util.Range newRange)  cil managed 
     {
-        // Method begins at RVA 0x2ae0
-	// Code size 70 (0x46)
+        // Method begins at RVA 0x2240
+	// Code size 24 (0x18)
 	.maxstack 3
 	.locals init (
-		object	V_0,
-		bool	V_1,
-		class [mscorlib]System.Collections.Generic.IList`1<!T>	V_2)
+		int32	V_0)
 	IL_0000:  ldarg.0 
-	IL_0001:  ldfld object class Bless.Util.RedBlackTree`2<int64,!0>::lockObj
-	IL_0006:  stloc.0 
-	IL_0007:  ldc.i4.0 
-	IL_0008:  stloc.1 
-	.try { // 0
-	  IL_0009:  ldloc.0 
-	  IL_000a:  ldloca.s 1
-	  IL_000c:  call void class [mscorlib]System.Threading.Monitor::Enter(object, [out] bool&)
-	  IL_0011:  ldarg.0 
-	  IL_0012:  newobj instance void class [mscorlib]System.Collections.Generic.List`1<!T>::'.ctor'()
-	  IL_0017:  stfld class [mscorlib]System.Collections.Generic.List`1<!0> class Bless.Util.IntervalTree`1<!0>::searchResults
-	  IL_001c:  ldarg.0 
-	  IL_001d:  ldarg.0 
-	  IL_001e:  ldfld class Bless.Util.RedBlackTree`2/INode<!0,!1> class Bless.Util.RedBlackTree`2<int64,!0>::root
-	  IL_0023:  isinst class Bless.Util.IntervalTree`1/ITNode<!0>
-	  IL_0028:  ldarg.1 
-	  IL_0029:  call instance void class Bless.Util.IntervalTree`1<!T>::SearchOverlap(class Bless.Util.IntervalTree`1/ITNode<!0>, class Bless.Util.IRange)
-	  IL_002e:  ldarg.0 
-	  IL_002f:  ldfld class [mscorlib]System.Collections.Generic.List`1<!0> class Bless.Util.IntervalTree`1<!0>::searchResults
-	  IL_0034:  stloc.2 
-	  IL_0035:  leave IL_0044
+	IL_0001:  ldarg.1 
+	IL_0002:  callvirt instance int32 class [mscorlib]System.Collections.ArrayList::IndexOf(object)
+	IL_0007:  stloc.0 
+	IL_0008:  ldarg.0 
+	IL_0009:  ldloc.0 
+	IL_000a:  callvirt instance void class [mscorlib]System.Collections.ArrayList::RemoveAt(int32)
+	IL_000f:  ldarg.0 
+	IL_0010:  ldloc.0 
+	IL_0011:  ldarg.2 
+	IL_0012:  callvirt instance void class [mscorlib]System.Collections.ArrayList::Insert(int32, object)
+	IL_0017:  ret 
+    } // end of method RangeCollection::UpdateRange
 
-	} // end .try 0
-	finally  { // 0
-	  IL_003a:  ldloc.1 
-	  IL_003b:  brfalse.s IL_0043
-
-	  IL_003d:  ldloc.0 
-	  IL_003e:  call void class [mscorlib]System.Threading.Monitor::Exit(object)
-	  IL_0043:  endfinally 
-	} // end handler 0
-	IL_0044:  ldloc.2 
-	IL_0045:  ret 
-    } // end of method IntervalTree`1::SearchOverlap
-
-    // method line 10
-    .method private hidebysig 
-           instance default void SearchOverlap (class Bless.Util.IntervalTree`1/ITNode<!T> n, class Bless.Util.IRange r)  cil managed 
-    {
-        // Method begins at RVA 0x2b44
-	// Code size 182 (0xb6)
-	.maxstack 3
-	.locals init (
-		!T	V_0,
-		class [mscorlib]System.Collections.Generic.IEnumerator`1<!T>	V_1)
-	IL_0000:  ldarg.1 
-	IL_0001:  brfalse IL_00b5
-
-	IL_0006:  ldarg.1 
-	IL_0007:  callvirt instance int64 class Bless.Util.IntervalTree`1/ITNode<!T>::get_Max()
-	IL_000c:  ldarg.2 
-	IL_000d:  callvirt instance int64 class Bless.Util.IRange::get_Start()
-	IL_0012:  blt IL_0087
-
-	IL_0017:  ldarg.1 
-	IL_0018:  callvirt instance class Bless.Util.RedBlackTree`2/INode<int64,!0> class Bless.Util.IntervalTree`1/ITNode<!T>::get_Left()
-	IL_001d:  brfalse IL_0034
-
-	IL_0022:  ldarg.0 
-	IL_0023:  ldarg.1 
-	IL_0024:  callvirt instance class Bless.Util.RedBlackTree`2/INode<int64,!0> class Bless.Util.IntervalTree`1/ITNode<!T>::get_Left()
-	IL_0029:  isinst class Bless.Util.IntervalTree`1/ITNode<!0>
-	IL_002e:  ldarg.2 
-	IL_002f:  call instance void class Bless.Util.IntervalTree`1<!T>::SearchOverlap(class Bless.Util.IntervalTree`1/ITNode<!0>, class Bless.Util.IRange)
-	IL_0034:  ldarg.1 
-	IL_0035:  callvirt instance class [mscorlib]System.Collections.Generic.IList`1<!0> class Bless.Util.IntervalTree`1/ITNode<!T>::get_Values()
-	IL_003a:  callvirt instance class [mscorlib]System.Collections.Generic.IEnumerator`1<!0> class [mscorlib]System.Collections.Generic.IEnumerable`1<!T>::GetEnumerator()
-	IL_003f:  stloc.1 
-	.try { // 0
-	  IL_0040:  br IL_006a
-
-	  IL_0045:  ldloc.1 
-	  IL_0046:  callvirt instance !0 class [mscorlib]System.Collections.Generic.IEnumerator`1<!T>::get_Current()
-	  IL_004b:  stloc.0 
-	  IL_004c:  ldarg.0 
-	  IL_004d:  ldloc.0 
-	  IL_004e:  box !0
-	  IL_0053:  ldarg.2 
-	  IL_0054:  call instance bool class Bless.Util.IntervalTree`1<!T>::RangesOverlap(class Bless.Util.IRange, class Bless.Util.IRange)
-	  IL_0059:  brfalse IL_006a
-
-	  IL_005e:  ldarg.0 
-	  IL_005f:  ldfld class [mscorlib]System.Collections.Generic.List`1<!0> class Bless.Util.IntervalTree`1<!0>::searchResults
-	  IL_0064:  ldloc.0 
-	  IL_0065:  callvirt instance void class [mscorlib]System.Collections.Generic.List`1<!T>::Add(!0)
-	  IL_006a:  ldloc.1 
-	  IL_006b:  callvirt instance bool class [mscorlib]System.Collections.IEnumerator::MoveNext()
-	  IL_0070:  brtrue IL_0045
-
-	  IL_0075:  leave IL_0087
-
-	} // end .try 0
-	finally  { // 0
-	  IL_007a:  ldloc.1 
-	  IL_007b:  brfalse IL_0086
-
-	  IL_0080:  ldloc.1 
-	  IL_0081:  callvirt instance void class [mscorlib]System.IDisposable::Dispose()
-	  IL_0086:  endfinally 
-	} // end handler 0
-	IL_0087:  ldarg.1 
-	IL_0088:  callvirt instance int64 class Bless.Util.IntervalTree`1/ITNode<!T>::get_Key()
-	IL_008d:  ldarg.2 
-	IL_008e:  callvirt instance int64 class Bless.Util.IRange::get_End()
-	IL_0093:  bgt IL_00b5
-
-	IL_0098:  ldarg.1 
-	IL_0099:  callvirt instance class Bless.Util.RedBlackTree`2/INode<int64,!0> class Bless.Util.IntervalTree`1/ITNode<!T>::get_Right()
-	IL_009e:  brfalse IL_00b5
-
-	IL_00a3:  ldarg.0 
-	IL_00a4:  ldarg.1 
-	IL_00a5:  callvirt instance class Bless.Util.RedBlackTree`2/INode<int64,!0> class Bless.Util.IntervalTree`1/ITNode<!T>::get_Right()
-	IL_00aa:  isinst class Bless.Util.IntervalTree`1/ITNode<!0>
-	IL_00af:  ldarg.2 
-	IL_00b0:  call instance void class Bless.Util.IntervalTree`1<!T>::SearchOverlap(class Bless.Util.IntervalTree`1/ITNode<!0>, class Bless.Util.IRange)
-	IL_00b5:  ret 
-    } // end of method IntervalTree`1::SearchOverlap
-
-    // method line 11
+    // method line 13
     .method public hidebysig 
-           instance default void Delete (!T r)  cil managed 
+           instance default void Clear ()  cil managed 
     {
-        // Method begins at RVA 0x2c18
-	// Code size 81 (0x51)
-	.maxstack 2
-	.locals init (
-		class Bless.Util.IntervalTree`1/ITNode<!T>	V_0)
+        // Method begins at RVA 0x2264
+	// Code size 19 (0x13)
+	.maxstack 8
 	IL_0000:  ldarg.0 
-	IL_0001:  ldarga.s 1
-	IL_0003:  constrained. !0
-	IL_0009:  callvirt instance int64 class Bless.Util.IRange::get_Start()
-	IL_000e:  callvirt instance class Bless.Util.RedBlackTree`2/INode<!0,!1> class Bless.Util.RedBlackTree`2<int64, !T>::SearchNode(!0)
-	IL_0013:  isinst class Bless.Util.IntervalTree`1/ITNode<!0>
-	IL_0018:  stloc.0 
-	IL_0019:  ldloc.0 
-	IL_001a:  brtrue IL_0020
-
-	IL_001f:  ret 
-	IL_0020:  ldloc.0 
-	IL_0021:  callvirt instance class [mscorlib]System.Collections.Generic.IList`1<!0> class Bless.Util.IntervalTree`1/ITNode<!T>::get_Values()
-	IL_0026:  ldarg.1 
-	IL_0027:  callvirt instance bool class [mscorlib]System.Collections.Generic.ICollection`1<!T>::Remove(!0)
-	IL_002c:  pop 
-	IL_002d:  ldloc.0 
-	IL_002e:  callvirt instance class [mscorlib]System.Collections.Generic.IList`1<!0> class Bless.Util.IntervalTree`1/ITNode<!T>::get_Values()
-	IL_0033:  callvirt instance int32 class [mscorlib]System.Collections.Generic.ICollection`1<!T>::get_Count()
-	IL_0038:  brtrue IL_0050
+	IL_0001:  call instance void class [mscorlib]System.Collections.ArrayList::Clear()
+	IL_0006:  ldarg.0 
+	IL_0007:  newobj instance void class Bless.Util.Range::'.ctor'()
+	IL_000c:  callvirt instance int32 class [mscorlib]System.Collections.ArrayList::Add(object)
+	IL_0011:  pop 
+	IL_0012:  ret 
+    } // end of method RangeCollection::Clear
 
-	IL_003d:  ldarg.0 
-	IL_003e:  ldarga.s 1
-	IL_0040:  constrained. !0
-	IL_0046:  callvirt instance int64 class Bless.Util.IRange::get_Start()
-	IL_004b:  callvirt instance void class Bless.Util.RedBlackTree`2<int64, !T>::Delete(!0)
-	IL_0050:  ret 
-    } // end of method IntervalTree`1::Delete
+	.property instance class Bless.Util.Range LastAdded ()
+	{
+		.get instance default class Bless.Util.Range Bless.Util.RangeCollection::get_LastAdded () 
+	}
+  } // end of class Bless.Util.RangeCollection
+}
 
-  .class nested family auto ansi beforefieldinit ITNode<(class Bless.Util.IRange) T>
+.namespace Bless.Util
+{
+  .class public auto ansi sealed beforefieldinit ConfigureDefines
   	extends [mscorlib]System.Object
-  	implements class Bless.Util.RedBlackTree`2/INode<int64,!0>  {
-    .field  private  int64 max
-    .field  private  int64 key
-    .field  private  class [mscorlib]System.Collections.Generic.IList`1<!0> values
-    .field  private  class Bless.Util.RedBlackTree`2/INode<int64,!0> left
-    .field  private  class Bless.Util.RedBlackTree`2/INode<int64,!0> right
-    .field  private  valuetype Bless.Util.RedBlackTree`2/Color<int64,!0> color
+  {
+    .field public static literal  string LOCALE_DIR = "/usr/share/locale/"
+    .field public static literal  string PACKAGE = "bless"
+    .field public static literal  string VERSION = "0.6.2"
+    .field public static literal  string GETTEXT_PACKAGE = "bless"
+    .field public static literal  string DATADIR = "/usr/share/bless/"
 
-    // method line 12
+    // method line 14
     .method public hidebysig specialname rtspecialname 
-           instance default void '.ctor' (int64 key, !T val, valuetype Bless.Util.RedBlackTree`2/Color<int64, !T> color)  cil managed 
-    {
-        // Method begins at RVA 0x2c75
-	// Code size 63 (0x3f)
-	.maxstack 8
-	IL_0000:  ldarg.0 
-	IL_0001:  call instance void object::'.ctor'()
-	IL_0006:  ldarg.0 
-	IL_0007:  ldarg.1 
-	IL_0008:  stfld int64 class Bless.Util.IntervalTree`1/ITNode<!0>::key
-	IL_000d:  ldarg.0 
-	IL_000e:  newobj instance void class [mscorlib]System.Collections.Generic.List`1<!T>::'.ctor'()
-	IL_0013:  stfld class [mscorlib]System.Collections.Generic.IList`1<!0> class Bless.Util.IntervalTree`1/ITNode<!0>::values
-	IL_0018:  ldarg.0 
-	IL_0019:  ldfld class [mscorlib]System.Collections.Generic.IList`1<!0> class Bless.Util.IntervalTree`1/ITNode<!0>::values
-	IL_001e:  ldarg.2 
-	IL_001f:  callvirt instance void class [mscorlib]System.Collections.Generic.ICollection`1<!T>::Add(!0)
-	IL_0024:  ldarg.0 
-	IL_0025:  ldarg.3 
-	IL_0026:  stfld valuetype Bless.Util.RedBlackTree`2/Color<int64,!0> class Bless.Util.IntervalTree`1/ITNode<!0>::color
-	IL_002b:  ldarg.0 
-	IL_002c:  ldarga.s 2
-	IL_002e:  constrained. !0
-	IL_0034:  callvirt instance int64 class Bless.Util.IRange::get_End()
-	IL_0039:  stfld int64 class Bless.Util.IntervalTree`1/ITNode<!0>::max
-	IL_003e:  ret 
-    } // end of method ITNode::.ctor
-
-    // method line 13
-    .method public hidebysig specialname 
-           instance default int64 get_Max ()  cil managed 
+           instance default void '.ctor' ()  cil managed 
     {
-        // Method begins at RVA 0x2cb5
+        // Method begins at RVA 0x2278
 	// Code size 7 (0x7)
 	.maxstack 8
 	IL_0000:  ldarg.0 
-	IL_0001:  ldfld int64 class Bless.Util.IntervalTree`1/ITNode<!0>::max
+	IL_0001:  call instance void object::'.ctor'()
 	IL_0006:  ret 
-    } // end of method ITNode::get_Max
+    } // end of method ConfigureDefines::.ctor
 
-    // method line 14
-    .method public hidebysig specialname 
-           instance default void set_Max (int64 'value')  cil managed 
-    {
-        // Method begins at RVA 0x2cbd
-	// Code size 8 (0x8)
-	.maxstack 8
-	IL_0000:  ldarg.0 
-	IL_0001:  ldarg.1 
-	IL_0002:  stfld int64 class Bless.Util.IntervalTree`1/ITNode<!0>::max
-	IL_0007:  ret 
-    } // end of method ITNode::set_Max
+  } // end of class Bless.Util.ConfigureDefines
+}
+
+  .class public auto ansi beforefieldinit Portable
+  	extends [mscorlib]System.Object
+  {
 
     // method line 15
-    .method public final virtual hidebysig newslot specialname 
-           instance default int64 get_Key ()  cil managed 
+    .method public hidebysig specialname rtspecialname 
+           instance default void '.ctor' ()  cil managed 
     {
-        // Method begins at RVA 0x2cc6
+        // Method begins at RVA 0x2280
 	// Code size 7 (0x7)
 	.maxstack 8
 	IL_0000:  ldarg.0 
-	IL_0001:  ldfld int64 class Bless.Util.IntervalTree`1/ITNode<!0>::key
+	IL_0001:  call instance void object::'.ctor'()
 	IL_0006:  ret 
-    } // end of method ITNode::get_Key
+    } // end of method Portable::.ctor
 
     // method line 16
-    .method public final virtual hidebysig newslot specialname 
-           instance default void set_Key (int64 'value')  cil managed 
+    .method public static hidebysig 
+           default int64 GetAvailableMemory ()  cil managed 
     {
-        // Method begins at RVA 0x2cce
-	// Code size 8 (0x8)
-	.maxstack 8
-	IL_0000:  ldarg.0 
-	IL_0001:  ldarg.1 
-	IL_0002:  stfld int64 class Bless.Util.IntervalTree`1/ITNode<!0>::key
-	IL_0007:  ret 
-    } // end of method ITNode::set_Key
+        // Method begins at RVA 0x2288
+	// Code size 22 (0x16)
+	.maxstack 2
+	.locals init (
+		int64	V_0,
+		int64	V_1,
+		int64	V_2)
+	IL_0000:  ldc.i4.s 0x56
+	IL_0002:  call int64 class [Mono.Posix]Mono.Unix.Native.Syscall::sysconf(valuetype [Mono.Posix]Mono.Unix.Native.SysconfName)
+	IL_0007:  stloc.0 
+	IL_0008:  ldc.i4.s 0x1e
+	IL_000a:  call int64 class [Mono.Posix]Mono.Unix.Native.Syscall::sysconf(valuetype [Mono.Posix]Mono.Unix.Native.SysconfName)
+	IL_000f:  stloc.1 
+	IL_0010:  ldloc.0 
+	IL_0011:  ldloc.1 
+	IL_0012:  mul 
+	IL_0013:  stloc.2 
+	IL_0014:  ldloc.2 
+	IL_0015:  ret 
+    } // end of method Portable::GetAvailableMemory
 
     // method line 17
-    .method public final virtual hidebysig newslot specialname 
-           instance default class [mscorlib]System.Collections.Generic.IList`1<!T> get_Values ()  cil managed 
+    .method public static hidebysig 
+           default int64 GetAvailableDiskSpace (string path)  cil managed 
     {
-        // Method begins at RVA 0x2cd7
-	// Code size 7 (0x7)
-	.maxstack 8
-	IL_0000:  ldarg.0 
-	IL_0001:  ldfld class [mscorlib]System.Collections.Generic.IList`1<!0> class Bless.Util.IntervalTree`1/ITNode<!0>::values
-	IL_0006:  ret 
-    } // end of method ITNode::get_Values
+        // Method begins at RVA 0x22ac
+	// Code size 35 (0x23)
+	.maxstack 2
+	.locals init (
+		valuetype [Mono.Posix]Mono.Unix.Native.Statvfs	V_0,
+		int64	V_1)
+	IL_0000:  ldloca.s 0
+	IL_0002:  initobj [Mono.Posix]Mono.Unix.Native.Statvfs
+	IL_0008:  ldarg.0 
+	IL_0009:  ldloca.s 0
+	IL_000b:  call int32 class [Mono.Posix]Mono.Unix.Native.Syscall::statvfs(string, [out] valuetype [Mono.Posix]Mono.Unix.Native.Statvfs&)
+	IL_0010:  pop 
+	IL_0011:  ldloca.s 0
+	IL_0013:  ldfld unsigned int64 [Mono.Posix]Mono.Unix.Native.Statvfs::f_bavail
+	IL_0018:  ldloca.s 0
+	IL_001a:  ldfld unsigned int64 [Mono.Posix]Mono.Unix.Native.Statvfs::f_bsize
+	IL_001f:  mul 
+	IL_0020:  stloc.1 
+	IL_0021:  ldloc.1 
+	IL_0022:  ret 
+    } // end of method Portable::GetAvailableDiskSpace
+
+  } // end of class Portable
+
+.namespace Bless.Util
+{
+  .class public auto ansi abstract beforefieldinit ThreadedAsyncOperation
+  	extends [mscorlib]System.Object
+  {
+    .field  family  bool cancelled
+    .field  family  class Bless.Util.ProgressCallback progressCallback
+    .field  family  class [mscorlib]System.AsyncCallback opFinishedCallback
+    .field  family  bool activateProgress
+    .field  private  class [mscorlib]System.Exception threadException
+    .field  private  valuetype Bless.Util.ThreadedAsyncOperation/OperationResult opResult
+    .field  private  bool useGLibIdle
+    .field  private  class [mscorlib]System.Threading.Timer showProgressTimer
+    .field  private  class [mscorlib]System.Threading.Timer progressTimer
 
     // method line 18
-    .method public final virtual hidebysig newslot specialname 
-           instance default void set_Values (class [mscorlib]System.Collections.Generic.IList`1<!T> 'value')  cil managed 
+    .method public hidebysig specialname rtspecialname 
+           instance default void '.ctor' (class Bless.Util.ProgressCallback pc, class [mscorlib]System.AsyncCallback ac, bool glibIdle)  cil managed 
     {
-        // Method begins at RVA 0x2cdf
-	// Code size 14 (0xe)
-	.maxstack 8
+        // Method begins at RVA 0x22dc
+	// Code size 94 (0x5e)
+	.maxstack 5
 	IL_0000:  ldarg.0 
-	IL_0001:  ldarg.1 
-	IL_0002:  stfld class [mscorlib]System.Collections.Generic.IList`1<!0> class Bless.Util.IntervalTree`1/ITNode<!0>::values
-	IL_0007:  ldarg.0 
-	IL_0008:  call instance void class Bless.Util.IntervalTree`1/ITNode<!T>::UpdateMax()
-	IL_000d:  ret 
-    } // end of method ITNode::set_Values
+	IL_0001:  call instance void object::'.ctor'()
+	IL_0006:  ldarg.0 
+	IL_0007:  ldarg.1 
+	IL_0008:  stfld class Bless.Util.ProgressCallback Bless.Util.ThreadedAsyncOperation::progressCallback
+	IL_000d:  ldarg.0 
+	IL_000e:  ldarg.2 
+	IL_000f:  stfld class [mscorlib]System.AsyncCallback Bless.Util.ThreadedAsyncOperation::opFinishedCallback
+	IL_0014:  ldarg.0 
+	IL_0015:  ldarg.3 
+	IL_0016:  stfld bool Bless.Util.ThreadedAsyncOperation::useGLibIdle
+	IL_001b:  ldarg.0 
+	IL_001c:  ldc.i4.0 
+	IL_001d:  stfld bool Bless.Util.ThreadedAsyncOperation::cancelled
+	IL_0022:  ldarg.0 
+	IL_0023:  ldc.i4.1 
+	IL_0024:  stfld bool Bless.Util.ThreadedAsyncOperation::activateProgress
+	IL_0029:  ldarg.0 
+	IL_002a:  ldarg.0 
+	IL_002b:  ldftn instance void class Bless.Util.ThreadedAsyncOperation::ShowProgressTimerExpired(object)
+	IL_0031:  newobj instance void class [mscorlib]System.Threading.TimerCallback::'.ctor'(object, native int)
+	IL_0036:  ldnull 
+	IL_0037:  ldc.i4.m1 
+	IL_0038:  ldc.i4.m1 
+	IL_0039:  newobj instance void class [mscorlib]System.Threading.Timer::'.ctor'(class [mscorlib]System.Threading.TimerCallback, object, int32, int32)
+	IL_003e:  stfld class [mscorlib]System.Threading.Timer Bless.Util.ThreadedAsyncOperation::showProgressTimer
+	IL_0043:  ldarg.0 
+	IL_0044:  ldarg.0 
+	IL_0045:  ldftn instance void class Bless.Util.ThreadedAsyncOperation::ProgressTimerExpired(object)
+	IL_004b:  newobj instance void class [mscorlib]System.Threading.TimerCallback::'.ctor'(object, native int)
+	IL_0050:  ldnull 
+	IL_0051:  ldc.i4.m1 
+	IL_0052:  ldc.i4.m1 
+	IL_0053:  newobj instance void class [mscorlib]System.Threading.Timer::'.ctor'(class [mscorlib]System.Threading.TimerCallback, object, int32, int32)
+	IL_0058:  stfld class [mscorlib]System.Threading.Timer Bless.Util.ThreadedAsyncOperation::progressTimer
+	IL_005d:  ret 
+    } // end of method ThreadedAsyncOperation::.ctor
 
     // method line 19
-    .method public final virtual hidebysig newslot specialname 
-           instance default class Bless.Util.RedBlackTree`2/INode<int64, !T> get_Left ()  cil managed 
+    .method public hidebysig specialname 
+           instance default valuetype Bless.Util.ThreadedAsyncOperation/OperationResult get_Result ()  cil managed 
     {
-        // Method begins at RVA 0x2cee
+        // Method begins at RVA 0x2346
 	// Code size 7 (0x7)
 	.maxstack 8
 	IL_0000:  ldarg.0 
-	IL_0001:  ldfld class Bless.Util.RedBlackTree`2/INode<int64,!0> class Bless.Util.IntervalTree`1/ITNode<!0>::left
+	IL_0001:  ldfld valuetype Bless.Util.ThreadedAsyncOperation/OperationResult Bless.Util.ThreadedAsyncOperation::opResult
 	IL_0006:  ret 
-    } // end of method ITNode::get_Left
+    } // end of method ThreadedAsyncOperation::get_Result
 
     // method line 20
-    .method public final virtual hidebysig newslot specialname 
-           instance default void set_Left (class Bless.Util.RedBlackTree`2/INode<int64, !T> 'value')  cil managed 
+    .method public hidebysig specialname 
+           instance default void set_Result (valuetype Bless.Util.ThreadedAsyncOperation/OperationResult 'value')  cil managed 
     {
-        // Method begins at RVA 0x2cf6
-	// Code size 14 (0xe)
+        // Method begins at RVA 0x234e
+	// Code size 8 (0x8)
 	.maxstack 8
 	IL_0000:  ldarg.0 
 	IL_0001:  ldarg.1 
-	IL_0002:  stfld class Bless.Util.RedBlackTree`2/INode<int64,!0> class Bless.Util.IntervalTree`1/ITNode<!0>::left
-	IL_0007:  ldarg.0 
-	IL_0008:  call instance void class Bless.Util.IntervalTree`1/ITNode<!T>::UpdateMax()
-	IL_000d:  ret 
-    } // end of method ITNode::set_Left
+	IL_0002:  stfld valuetype Bless.Util.ThreadedAsyncOperation/OperationResult Bless.Util.ThreadedAsyncOperation::opResult
+	IL_0007:  ret 
+    } // end of method ThreadedAsyncOperation::set_Result
 
     // method line 21
-    .method public final virtual hidebysig newslot specialname 
-           instance default class Bless.Util.RedBlackTree`2/INode<int64, !T> get_Right ()  cil managed 
+    .method public hidebysig specialname 
+           instance default class [mscorlib]System.Exception get_ThreadException ()  cil managed 
     {
-        // Method begins at RVA 0x2d05
+        // Method begins at RVA 0x2357
 	// Code size 7 (0x7)
 	.maxstack 8
 	IL_0000:  ldarg.0 
-	IL_0001:  ldfld class Bless.Util.RedBlackTree`2/INode<int64,!0> class Bless.Util.IntervalTree`1/ITNode<!0>::right
+	IL_0001:  ldfld class [mscorlib]System.Exception Bless.Util.ThreadedAsyncOperation::threadException
 	IL_0006:  ret 
-    } // end of method ITNode::get_Right
+    } // end of method ThreadedAsyncOperation::get_ThreadException
 
     // method line 22
-    .method public final virtual hidebysig newslot specialname 
-           instance default void set_Right (class Bless.Util.RedBlackTree`2/INode<int64, !T> 'value')  cil managed 
+    .method public hidebysig specialname 
+           instance default void set_ThreadException (class [mscorlib]System.Exception 'value')  cil managed 
     {
-        // Method begins at RVA 0x2d0d
-	// Code size 14 (0xe)
+        // Method begins at RVA 0x235f
+	// Code size 8 (0x8)
 	.maxstack 8
 	IL_0000:  ldarg.0 
 	IL_0001:  ldarg.1 
-	IL_0002:  stfld class Bless.Util.RedBlackTree`2/INode<int64,!0> class Bless.Util.IntervalTree`1/ITNode<!0>::right
-	IL_0007:  ldarg.0 
-	IL_0008:  call instance void class Bless.Util.IntervalTree`1/ITNode<!T>::UpdateMax()
-	IL_000d:  ret 
-    } // end of method ITNode::set_Right
+	IL_0002:  stfld class [mscorlib]System.Exception Bless.Util.ThreadedAsyncOperation::threadException
+	IL_0007:  ret 
+    } // end of method ThreadedAsyncOperation::set_ThreadException
 
     // method line 23
-    .method public final virtual hidebysig newslot specialname 
-           instance default valuetype Bless.Util.RedBlackTree`2/Color<int64, !T> get_Color ()  cil managed 
+    .method family virtual hidebysig newslot abstract 
+           instance default bool StartProgress ()  cil managed 
     {
-        // Method begins at RVA 0x2d1c
-	// Code size 7 (0x7)
-	.maxstack 8
-	IL_0000:  ldarg.0 
-	IL_0001:  ldfld valuetype Bless.Util.RedBlackTree`2/Color<int64,!0> class Bless.Util.IntervalTree`1/ITNode<!0>::color
-	IL_0006:  ret 
-    } // end of method ITNode::get_Color
+        // Method begins at RVA 0x0
+    } // end of method ThreadedAsyncOperation::StartProgress
 
     // method line 24
-    .method public final virtual hidebysig newslot specialname 
-           instance default void set_Color (valuetype Bless.Util.RedBlackTree`2/Color<int64, !T> 'value')  cil managed 
+    .method family virtual hidebysig newslot abstract 
+           instance default bool UpdateProgress ()  cil managed 
     {
-        // Method begins at RVA 0x2d24
-	// Code size 8 (0x8)
-	.maxstack 8
-	IL_0000:  ldarg.0 
-	IL_0001:  ldarg.1 
-	IL_0002:  stfld valuetype Bless.Util.RedBlackTree`2/Color<int64,!0> class Bless.Util.IntervalTree`1/ITNode<!0>::color
-	IL_0007:  ret 
-    } // end of method ITNode::set_Color
+        // Method begins at RVA 0x0
+    } // end of method ThreadedAsyncOperation::UpdateProgress
 
     // method line 25
-    .method private hidebysig 
-           instance default void UpdateMax ()  cil managed 
+    .method family virtual hidebysig newslot abstract 
+           instance default bool EndProgress ()  cil managed 
     {
-        // Method begins at RVA 0x2d30
-	// Code size 152 (0x98)
-	.maxstack 2
-	.locals init (
-		int64	V_0,
-		!T	V_1,
-		class [mscorlib]System.Collections.Generic.IEnumerator`1<!T>	V_2)
-	IL_0000:  ldc.i4.m1 
-	IL_0001:  conv.i8 
-	IL_0002:  stloc.0 
-	IL_0003:  ldarg.0 
-	IL_0004:  call instance class Bless.Util.RedBlackTree`2/INode<int64,!0> class Bless.Util.IntervalTree`1/ITNode<!T>::get_Left()
-	IL_0009:  brfalse IL_0025
+        // Method begins at RVA 0x0
+    } // end of method ThreadedAsyncOperation::EndProgress
 
-	IL_000e:  ldloc.0 
-	IL_000f:  ldarg.0 
-	IL_0010:  call instance class Bless.Util.RedBlackTree`2/INode<int64,!0> class Bless.Util.IntervalTree`1/ITNode<!T>::get_Left()
-	IL_0015:  isinst class Bless.Util.IntervalTree`1/ITNode<!0>
-	IL_001a:  callvirt instance int64 class Bless.Util.IntervalTree`1/ITNode<!T>::get_Max()
-	IL_001f:  call int64 class [mscorlib]System.Math::Max(int64, int64)
-	IL_0024:  stloc.0 
-	IL_0025:  ldarg.0 
-	IL_0026:  call instance class Bless.Util.RedBlackTree`2/INode<int64,!0> class Bless.Util.IntervalTree`1/ITNode<!T>::get_Right()
-	IL_002b:  brfalse IL_0047
+    // method line 26
+    .method family virtual hidebysig newslot abstract 
+           instance default void DoOperation ()  cil managed 
+    {
+        // Method begins at RVA 0x0
+    } // end of method ThreadedAsyncOperation::DoOperation
 
-	IL_0030:  ldloc.0 
-	IL_0031:  ldarg.0 
-	IL_0032:  call instance class Bless.Util.RedBlackTree`2/INode<int64,!0> class Bless.Util.IntervalTree`1/ITNode<!T>::get_Right()
-	IL_0037:  isinst class Bless.Util.IntervalTree`1/ITNode<!0>
-	IL_003c:  callvirt instance int64 class Bless.Util.IntervalTree`1/ITNode<!T>::get_Max()
-	IL_0041:  call int64 class [mscorlib]System.Math::Max(int64, int64)
-	IL_0046:  stloc.0 
-	IL_0047:  ldarg.0 
-	IL_0048:  call instance class [mscorlib]System.Collections.Generic.IList`1<!0> class Bless.Util.IntervalTree`1/ITNode<!T>::get_Values()
-	IL_004d:  callvirt instance class [mscorlib]System.Collections.Generic.IEnumerator`1<!0> class [mscorlib]System.Collections.Generic.IEnumerable`1<!T>::GetEnumerator()
-	IL_0052:  stloc.2 
-	.try { // 0
-	  IL_0053:  br IL_0073
+    // method line 27
+    .method family virtual hidebysig newslot abstract 
+           instance default void EndOperation ()  cil managed 
+    {
+        // Method begins at RVA 0x0
+    } // end of method ThreadedAsyncOperation::EndOperation
 
-	  IL_0058:  ldloc.2 
-	  IL_0059:  callvirt instance !0 class [mscorlib]System.Collections.Generic.IEnumerator`1<!T>::get_Current()
-	  IL_005e:  stloc.1 
-	  IL_005f:  ldloc.0 
-	  IL_0060:  ldloca.s 1
-	  IL_0062:  constrained. !0
-	  IL_0068:  callvirt instance int64 class Bless.Util.IRange::get_End()
-	  IL_006d:  call int64 class [mscorlib]System.Math::Max(int64, int64)
-	  IL_0072:  stloc.0 
-	  IL_0073:  ldloc.2 
-	  IL_0074:  callvirt instance bool class [mscorlib]System.Collections.IEnumerator::MoveNext()
-	  IL_0079:  brtrue IL_0058
+    // method line 28
+    .method private hidebysig 
+           instance default void OperationFinished ()  cil managed 
+    {
+        // Method begins at RVA 0x2368
+	// Code size 49 (0x31)
+	.maxstack 8
+	IL_0000:  ldarg.0 
+	IL_0001:  ldfld class Bless.Util.ProgressCallback Bless.Util.ThreadedAsyncOperation::progressCallback
+	IL_0006:  brfalse IL_0012
 
-	  IL_007e:  leave IL_0090
+	IL_000b:  ldarg.0 
+	IL_000c:  callvirt instance bool class Bless.Util.ThreadedAsyncOperation::EndProgress()
+	IL_0011:  pop 
+	IL_0012:  ldarg.0 
+	IL_0013:  ldfld class [mscorlib]System.AsyncCallback Bless.Util.ThreadedAsyncOperation::opFinishedCallback
+	IL_0018:  brfalse IL_0030
 
-	} // end .try 0
-	finally  { // 0
-	  IL_0083:  ldloc.2 
-	  IL_0084:  brfalse IL_008f
+	IL_001d:  ldarg.0 
+	IL_001e:  ldfld class [mscorlib]System.AsyncCallback Bless.Util.ThreadedAsyncOperation::opFinishedCallback
+	IL_0023:  ldarg.0 
+	IL_0024:  ldnull 
+	IL_0025:  ldc.i4.1 
+	IL_0026:  newobj instance void class Bless.Util.ThreadedAsyncResult::'.ctor'(object, class [mscorlib]System.Threading.WaitHandle, bool)
+	IL_002b:  callvirt instance void class [mscorlib]System.AsyncCallback::Invoke(class [mscorlib]System.IAsyncResult)
+	IL_0030:  ret 
+    } // end of method ThreadedAsyncOperation::OperationFinished
 
-	  IL_0089:  ldloc.2 
-	  IL_008a:  callvirt instance void class [mscorlib]System.IDisposable::Dispose()
-	  IL_008f:  endfinally 
-	} // end handler 0
-	IL_0090:  ldarg.0 
-	IL_0091:  ldloc.0 
-	IL_0092:  stfld int64 class Bless.Util.IntervalTree`1/ITNode<!0>::max
-	IL_0097:  ret 
-    } // end of method ITNode::UpdateMax
-
-	.property instance int64 Max ()
-	{
-		.get instance default int64 Bless.Util.IntervalTree`1/ITNode::get_Max () 
-		.set instance default void Bless.Util.IntervalTree`1/ITNode::set_Max (int64 'value') 
-	}
-	.property instance int64 Key ()
-	{
-		.get instance default int64 Bless.Util.IntervalTree`1/ITNode::get_Key () 
-		.set instance default void Bless.Util.IntervalTree`1/ITNode::set_Key (int64 'value') 
-	}
-	.property instance class [mscorlib]System.Collections.Generic.IList`1<!T> Values ()
-	{
-		.get instance default class [mscorlib]System.Collections.Generic.IList`1<!0> Bless.Util.IntervalTree`1/ITNode::get_Values () 
-		.set instance default void Bless.Util.IntervalTree`1/ITNode::set_Values (class [mscorlib]System.Collections.Generic.IList`1<!0> 'value') 
-	}
-	.property instance class Bless.Util.RedBlackTree`2/INode<int64, !T> Left ()
-	{
-		.get instance default class Bless.Util.RedBlackTree`2/INode<int64, !0> Bless.Util.IntervalTree`1/ITNode::get_Left () 
-		.set instance default void Bless.Util.IntervalTree`1/ITNode::set_Left (class Bless.Util.RedBlackTree`2/INode<int64, !0> 'value') 
-	}
-	.property instance class Bless.Util.RedBlackTree`2/INode<int64, !T> Right ()
-	{
-		.get instance default class Bless.Util.RedBlackTree`2/INode<int64, !0> Bless.Util.IntervalTree`1/ITNode::get_Right () 
-		.set instance default void Bless.Util.IntervalTree`1/ITNode::set_Right (class Bless.Util.RedBlackTree`2/INode<int64, !0> 'value') 
-	}
-	.property instance valuetype Bless.Util.RedBlackTree`2/Color<int64, !T> Color ()
-	{
-		.get instance default valuetype Bless.Util.RedBlackTree`2/Color<int64, !0> Bless.Util.IntervalTree`1/ITNode::get_Color () 
-		.set instance default void Bless.Util.IntervalTree`1/ITNode::set_Color (valuetype Bless.Util.RedBlackTree`2/Color<int64, !0> 'value') 
-	}
-  } // end of class ITNode
-
-  .class nested family auto ansi beforefieldinit ITNodeFactory<(class Bless.Util.IRange) T>
-  	extends [mscorlib]System.Object
-  	implements class Bless.Util.RedBlackTree`2/INodeFactory<int64,!0>  {
-
-    // method line 26
-    .method public hidebysig specialname rtspecialname 
-           instance default void '.ctor' ()  cil managed 
+    // method line 29
+    .method private hidebysig 
+           instance default void ShowProgressTimerExpired (object o)  cil managed 
     {
-        // Method begins at RVA 0x2de4
-	// Code size 7 (0x7)
+        // Method begins at RVA 0x239a
+	// Code size 54 (0x36)
 	.maxstack 8
 	IL_0000:  ldarg.0 
-	IL_0001:  call instance void object::'.ctor'()
-	IL_0006:  ret 
-    } // end of method ITNodeFactory::.ctor
-
-    // method line 27
-    .method public final virtual hidebysig newslot 
-           instance default class Bless.Util.RedBlackTree`2/INode<int64, !T> CreateNode (int64 key, !T val, valuetype Bless.Util.RedBlackTree`2/Color<int64, !T> color)  cil managed 
-    {
-        // Method begins at RVA 0x2dec
-	// Code size 9 (0x9)
-	.maxstack 8
-	IL_0000:  ldarg.1 
-	IL_0001:  ldarg.2 
-	IL_0002:  ldarg.3 
-	IL_0003:  newobj instance void class Bless.Util.IntervalTree`1/ITNode<!T>::'.ctor'(int64, !0, valuetype Bless.Util.RedBlackTree`2/Color<int64,!0>)
-	IL_0008:  ret 
-    } // end of method ITNodeFactory::CreateNode
+	IL_0001:  ldfld class Bless.Util.ProgressCallback Bless.Util.ThreadedAsyncOperation::progressCallback
+	IL_0006:  brfalse IL_0035
 
-  } // end of class ITNodeFactory
+	IL_000b:  ldarg.0 
+	IL_000c:  ldfld bool Bless.Util.ThreadedAsyncOperation::useGLibIdle
+	IL_0011:  brfalse IL_002e
 
-  } // end of class Bless.Util.IntervalTree`1
-}
+	IL_0016:  ldarg.0 
+	IL_0017:  dup 
+	IL_0018:  ldvirtftn instance bool class Bless.Util.ThreadedAsyncOperation::StartProgress()
+	IL_001e:  newobj instance void ['glib-sharp']GLib.IdleHandler::.ctor(object, native int)
+	IL_0023:  call unsigned int32 ['glib-sharp']GLib.Idle::Add(<BROKEN CLASS token_ 1000015 due to Could not load file or assembly or one of its dependencies. assembly:glib-sharp, Version=2.12.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f type:<unknown type> member:<none>>)
+	IL_0028:  pop 
+	IL_0029:  br IL_0035
 
-.namespace Bless.Util
-{
-  .class public auto ansi beforefieldinit FileResourcePath
-  	extends [mscorlib]System.Object
-  {
-    .field  private static  string dataPath
+	IL_002e:  ldarg.0 
+	IL_002f:  callvirt instance bool class Bless.Util.ThreadedAsyncOperation::StartProgress()
+	IL_0034:  pop 
+	IL_0035:  ret 
+    } // end of method ThreadedAsyncOperation::ShowProgressTimerExpired
 
-    // method line 28
-    .method private hidebysig specialname rtspecialname 
-           instance default void '.ctor' ()  cil managed 
+    // method line 30
+    .method private hidebysig 
+           instance default void ProgressTimerExpired (object o)  cil managed 
     {
-        // Method begins at RVA 0x2df6
-	// Code size 7 (0x7)
+        // Method begins at RVA 0x23d1
+	// Code size 58 (0x3a)
 	.maxstack 8
 	IL_0000:  ldarg.0 
-	IL_0001:  call instance void object::'.ctor'()
-	IL_0006:  ret 
-    } // end of method FileResourcePath::.ctor
-
-    // method line 29
-    .method public static hidebysig 
-           default string GetBinPath (string[] dirs)  cil managed 
-    {
-	.param [1]
-	.custom instance void class [mscorlib]System.ParamArrayAttribute::'.ctor'() =  (01 00 00 00 ) // ....
+	IL_0001:  ldfld class Bless.Util.ProgressCallback Bless.Util.ThreadedAsyncOperation::progressCallback
+	IL_0006:  brfalse IL_0039
 
-        // Method begins at RVA 0x2e00
-	// Code size 64 (0x40)
-	.maxstack 2
-	.locals init (
-		string	V_0,
-		string	V_1,
-		string	V_2,
-		string	V_3,
-		string[]	V_4,
-		int32	V_5)
-	IL_0000:  call class [mscorlib]System.Reflection.Assembly class [mscorlib]System.Reflection.Assembly::GetCallingAssembly()
-	IL_0005:  callvirt instance string class [mscorlib]System.Reflection.Assembly::get_Location()
-	IL_000a:  stloc.0 
-	IL_000b:  ldloc.0 
-	IL_000c:  call string class [mscorlib]System.IO.Path::GetDirectoryName(string)
-	IL_0011:  stloc.1 
-	IL_0012:  ldloc.1 
-	IL_0013:  stloc.2 
-	IL_0014:  ldarg.0 
-	IL_0015:  stloc.s 4
-	IL_0017:  ldc.i4.0 
-	IL_0018:  stloc.s 5
-	IL_001a:  br IL_0033
+	IL_000b:  ldarg.0 
+	IL_000c:  ldfld bool Bless.Util.ThreadedAsyncOperation::useGLibIdle
+	IL_0011:  brfalse IL_002d
 
-	IL_001f:  ldloc.s 4
-	IL_0021:  ldloc.s 5
-	IL_0023:  ldelem.ref 
-	IL_0024:  stloc.3 
-	IL_0025:  ldloc.2 
-	IL_0026:  ldloc.3 
-	IL_0027:  call string class [mscorlib]System.IO.Path::Combine(string, string)
-	IL_002c:  stloc.2 
-	IL_002d:  ldloc.s 5
-	IL_002f:  ldc.i4.1 
-	IL_0030:  add 
-	IL_0031:  stloc.s 5
-	IL_0033:  ldloc.s 5
-	IL_0035:  ldloc.s 4
-	IL_0037:  ldlen 
-	IL_0038:  conv.i4 
-	IL_0039:  blt IL_001f
+	IL_0016:  ldarg.0 
+	IL_0017:  ldftn instance bool class Bless.Util.ThreadedAsyncOperation::'<ProgressTimerExpired>m__0'()
+	IL_001d:  newobj instance void ['glib-sharp']GLib.IdleHandler::.ctor(object, native int)
+	IL_0022:  call unsigned int32 ['glib-sharp']GLib.Idle::Add(<BROKEN CLASS token_ 1000015 due to Could not load file or assembly or one of its dependencies. assembly:glib-sharp, Version=2.12.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f type:<unknown type> member:<none>>)
+	IL_0027:  pop 
+	IL_0028:  br IL_0039
 
-	IL_003e:  ldloc.2 
-	IL_003f:  ret 
-    } // end of method FileResourcePath::GetBinPath
+	IL_002d:  ldarg.0 
+	IL_002e:  ldarg.0 
+	IL_002f:  callvirt instance bool class Bless.Util.ThreadedAsyncOperation::UpdateProgress()
+	IL_0034:  stfld bool Bless.Util.ThreadedAsyncOperation::cancelled
+	IL_0039:  ret 
+    } // end of method ThreadedAsyncOperation::ProgressTimerExpired
 
-    // method line 30
-    .method public static hidebysig 
-           default string GetDataPath (string[] dirs)  cil managed 
+    // method line 31
+    .method family hidebysig 
+           instance default void ActivateProgressReport (bool activate)  cil managed 
     {
-	.param [1]
-	.custom instance void class [mscorlib]System.ParamArrayAttribute::'.ctor'() =  (01 00 00 00 ) // ....
-
-        // Method begins at RVA 0x2e4c
-	// Code size 200 (0xc8)
-	.maxstack 4
-	.locals init (
-		string	V_0,
-		string	V_1,
-		string	V_2,
-		string[]	V_3,
-		int32	V_4)
-	IL_0000:  ldsfld string Bless.Util.FileResourcePath::dataPath
-	IL_0005:  brtrue IL_0099
+        // Method begins at RVA 0x240c
+	// Code size 84 (0x54)
+	.maxstack 3
+	.try { // 0
+	  IL_0000:  ldarg.1 
+	  IL_0001:  brfalse IL_002c
 
-	IL_000a:  ldc.i4.2 
-	IL_000b:  newarr [mscorlib]System.String
-	IL_0010:  dup 
-	IL_0011:  ldc.i4.0 
-	IL_0012:  ldstr ".."
-	IL_0017:  stelem.ref 
-	IL_0018:  dup 
-	IL_0019:  ldc.i4.1 
-	IL_001a:  ldstr "data"
-	IL_001f:  stelem.ref 
-	IL_0020:  call string class Bless.Util.FileResourcePath::GetBinPath(string[])
-	IL_0025:  stloc.0 
-	IL_0026:  ldloc.0 
-	IL_0027:  call bool class [mscorlib]System.IO.Directory::Exists(string)
-	IL_002c:  brfalse IL_0051
+	  IL_0006:  ldarg.0 
+	  IL_0007:  ldfld class [mscorlib]System.Threading.Timer Bless.Util.ThreadedAsyncOperation::progressTimer
+	  IL_000c:  ldc.i4.0 
+	  IL_000d:  ldc.i4.s 0x32
+	  IL_000f:  callvirt instance bool class [mscorlib]System.Threading.Timer::Change(int32, int32)
+	  IL_0014:  pop 
+	  IL_0015:  ldarg.0 
+	  IL_0016:  ldfld class [mscorlib]System.Threading.Timer Bless.Util.ThreadedAsyncOperation::showProgressTimer
+	  IL_001b:  ldc.i4 500
+	  IL_0020:  ldc.i4.0 
+	  IL_0021:  callvirt instance bool class [mscorlib]System.Threading.Timer::Change(int32, int32)
+	  IL_0026:  pop 
+	  IL_0027:  br IL_0048
 
-	IL_0031:  ldloc.0 
-	IL_0032:  ldstr "bless.glade"
-	IL_0037:  call string class [mscorlib]System.IO.Path::Combine(string, string)
-	IL_003c:  call bool class [mscorlib]System.IO.File::Exists(string)
-	IL_0041:  brfalse IL_0051
+	  IL_002c:  ldarg.0 
+	  IL_002d:  ldfld class [mscorlib]System.Threading.Timer Bless.Util.ThreadedAsyncOperation::progressTimer
+	  IL_0032:  ldc.i4.m1 
+	  IL_0033:  ldc.i4.m1 
+	  IL_0034:  callvirt instance bool class [mscorlib]System.Threading.Timer::Change(int32, int32)
+	  IL_0039:  pop 
+	  IL_003a:  ldarg.0 
+	  IL_003b:  ldfld class [mscorlib]System.Threading.Timer Bless.Util.ThreadedAsyncOperation::showProgressTimer
+	  IL_0040:  ldc.i4.m1 
+	  IL_0041:  ldc.i4.m1 
+	  IL_0042:  callvirt instance bool class [mscorlib]System.Threading.Timer::Change(int32, int32)
+	  IL_0047:  pop 
+	  IL_0048:  leave IL_0053
 
-	IL_0046:  ldloc.0 
-	IL_0047:  stsfld string Bless.Util.FileResourcePath::dataPath
-	IL_004c:  br IL_0099
+	} // end .try 0
+	catch class [mscorlib]System.ObjectDisposedException { // 0
+	  IL_004d:  pop 
+	  IL_004e:  leave IL_0053
 
-	IL_0051:  ldstr "/usr/share/bless/"
-	IL_0056:  call bool class [mscorlib]System.IO.Directory::Exists(string)
-	IL_005b:  brfalse IL_0088
+	} // end handler 0
+	IL_0053:  ret 
+    } // end of method ThreadedAsyncOperation::ActivateProgressReport
 
-	IL_0060:  ldstr "/usr/share/bless/"
-	IL_0065:  ldstr "bless.glade"
-	IL_006a:  call string class [mscorlib]System.IO.Path::Combine(string, string)
-	IL_006f:  call bool class [mscorlib]System.IO.File::Exists(string)
-	IL_0074:  brfalse IL_0088
+    // method line 32
+    .method public hidebysig 
+           instance default void OperationThread ()  cil managed 
+    {
+        // Method begins at RVA 0x247c
+	// Code size 143 (0x8f)
+	.maxstack 2
+	.locals init (
+		class [mscorlib]System.Exception	V_0)
+	IL_0000:  ldarg.0 
+	IL_0001:  ldarg.0 
+	IL_0002:  ldfld bool Bless.Util.ThreadedAsyncOperation::activateProgress
+	IL_0007:  call instance void class Bless.Util.ThreadedAsyncOperation::ActivateProgressReport(bool)
+	.try { // 1
+	  .try { // 0
+	    IL_000c:  ldarg.0 
+	    IL_000d:  callvirt instance void class Bless.Util.ThreadedAsyncOperation::DoOperation()
+	    IL_0012:  ldarg.0 
+	    IL_0013:  ldfld bool Bless.Util.ThreadedAsyncOperation::cancelled
+	    IL_0018:  brfalse IL_0029
 
-	IL_0079:  ldstr "/usr/share/bless/"
-	IL_007e:  stsfld string Bless.Util.FileResourcePath::dataPath
-	IL_0083:  br IL_0099
+	    IL_001d:  ldarg.0 
+	    IL_001e:  ldc.i4.1 
+	    IL_001f:  stfld valuetype Bless.Util.ThreadedAsyncOperation/OperationResult Bless.Util.ThreadedAsyncOperation::opResult
+	    IL_0024:  br IL_0030
 
-	IL_0088:  ldloc.0 
-	IL_0089:  ldstr " or /usr/share/bless/"
-	IL_008e:  call string string::Concat(string, string)
-	IL_0093:  newobj instance void class [mscorlib]System.IO.DirectoryNotFoundException::'.ctor'(string)
-	IL_0098:  throw 
-	IL_0099:  ldsfld string Bless.Util.FileResourcePath::dataPath
-	IL_009e:  stloc.1 
-	IL_009f:  ldarg.0 
-	IL_00a0:  stloc.3 
-	IL_00a1:  ldc.i4.0 
-	IL_00a2:  stloc.s 4
-	IL_00a4:  br IL_00bc
+	    IL_0029:  ldarg.0 
+	    IL_002a:  ldc.i4.0 
+	    IL_002b:  stfld valuetype Bless.Util.ThreadedAsyncOperation/OperationResult Bless.Util.ThreadedAsyncOperation::opResult
+	    IL_0030:  leave IL_008e
 
-	IL_00a9:  ldloc.3 
-	IL_00aa:  ldloc.s 4
-	IL_00ac:  ldelem.ref 
-	IL_00ad:  stloc.2 
-	IL_00ae:  ldloc.1 
-	IL_00af:  ldloc.2 
-	IL_00b0:  call string class [mscorlib]System.IO.Path::Combine(string, string)
-	IL_00b5:  stloc.1 
-	IL_00b6:  ldloc.s 4
-	IL_00b8:  ldc.i4.1 
-	IL_00b9:  add 
-	IL_00ba:  stloc.s 4
-	IL_00bc:  ldloc.s 4
-	IL_00be:  ldloc.3 
-	IL_00bf:  ldlen 
-	IL_00c0:  conv.i4 
-	IL_00c1:  blt IL_00a9
+	  } // end .try 0
+	  catch class [mscorlib]System.Exception { // 0
+	    IL_0035:  stloc.0 
+	    IL_0036:  ldarg.0 
+	    IL_0037:  ldloc.0 
+	    IL_0038:  stfld class [mscorlib]System.Exception Bless.Util.ThreadedAsyncOperation::threadException
+	    IL_003d:  ldarg.0 
+	    IL_003e:  ldc.i4.2 
+	    IL_003f:  stfld valuetype Bless.Util.ThreadedAsyncOperation/OperationResult Bless.Util.ThreadedAsyncOperation::opResult
+	    IL_0044:  leave IL_008e
 
-	IL_00c6:  ldloc.1 
-	IL_00c7:  ret 
-    } // end of method FileResourcePath::GetDataPath
+	  } // end handler 0
+	} // end .try 1
+	finally  { // 1
+	  IL_0049:  ldarg.0 
+	  IL_004a:  ldfld class [mscorlib]System.Threading.Timer Bless.Util.ThreadedAsyncOperation::progressTimer
+	  IL_004f:  callvirt instance void class [mscorlib]System.Threading.Timer::Dispose()
+	  IL_0054:  ldarg.0 
+	  IL_0055:  ldfld class [mscorlib]System.Threading.Timer Bless.Util.ThreadedAsyncOperation::showProgressTimer
+	  IL_005a:  callvirt instance void class [mscorlib]System.Threading.Timer::Dispose()
+	  IL_005f:  ldarg.0 
+	  IL_0060:  callvirt instance void class Bless.Util.ThreadedAsyncOperation::EndOperation()
+	  IL_0065:  ldarg.0 
+	  IL_0066:  ldfld bool Bless.Util.ThreadedAsyncOperation::useGLibIdle
+	  IL_006b:  brfalse IL_0087
 
-    // method line 31
-    .method public static hidebysig 
-           default string GetUserPath (string[] dirs)  cil managed 
-    {
-	.param [1]
-	.custom instance void class [mscorlib]System.ParamArrayAttribute::'.ctor'() =  (01 00 00 00 ) // ....
+	  IL_0070:  ldarg.0 
+	  IL_0071:  ldftn instance bool class Bless.Util.ThreadedAsyncOperation::'<OperationThread>m__1'()
+	  IL_0077:  newobj instance void ['glib-sharp']GLib.IdleHandler::.ctor(object, native int)
+	  IL_007c:  call unsigned int32 ['glib-sharp']GLib.Idle::Add(<BROKEN CLASS token_ 1000015 due to Could not load file or assembly or one of its dependencies. assembly:glib-sharp, Version=2.12.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f type:<unknown type> member:<none>>)
+	  IL_0081:  pop 
+	  IL_0082:  br IL_008d
 
-        // Method begins at RVA 0x2f20
-	// Code size 54 (0x36)
-	.maxstack 2
-	.locals init (
-		string	V_0,
-		string	V_1,
-		string[]	V_2,
-		int32	V_3)
-	IL_0000:  ldc.i4.s 0x1a
-	IL_0002:  call string class [mscorlib]System.Environment::GetFolderPath(valuetype [mscorlib]System.Environment/SpecialFolder)
-	IL_0007:  ldstr "bless"
-	IL_000c:  call string class [mscorlib]System.IO.Path::Combine(string, string)
-	IL_0011:  stloc.0 
-	IL_0012:  ldarg.0 
-	IL_0013:  stloc.2 
-	IL_0014:  ldc.i4.0 
-	IL_0015:  stloc.3 
-	IL_0016:  br IL_002b
+	  IL_0087:  ldarg.0 
+	  IL_0088:  call instance void class Bless.Util.ThreadedAsyncOperation::OperationFinished()
+	  IL_008d:  endfinally 
+	} // end handler 1
+	IL_008e:  ret 
+    } // end of method ThreadedAsyncOperation::OperationThread
 
-	IL_001b:  ldloc.2 
-	IL_001c:  ldloc.3 
-	IL_001d:  ldelem.ref 
-	IL_001e:  stloc.1 
-	IL_001f:  ldloc.0 
-	IL_0020:  ldloc.1 
-	IL_0021:  call string class [mscorlib]System.IO.Path::Combine(string, string)
-	IL_0026:  stloc.0 
-	IL_0027:  ldloc.3 
-	IL_0028:  ldc.i4.1 
-	IL_0029:  add 
-	IL_002a:  stloc.3 
-	IL_002b:  ldloc.3 
-	IL_002c:  ldloc.2 
-	IL_002d:  ldlen 
-	IL_002e:  conv.i4 
-	IL_002f:  blt IL_001b
+    // method line 33
+    .method private hidebysig 
+           instance default bool '<ProgressTimerExpired>m__0' ()  cil managed 
+    {
+        .custom instance void class [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::'.ctor'() =  (01 00 00 00 ) // ....
 
-	IL_0034:  ldloc.0 
-	IL_0035:  ret 
-    } // end of method FileResourcePath::GetUserPath
+        // Method begins at RVA 0x2534
+	// Code size 14 (0xe)
+	.maxstack 8
+	IL_0000:  ldarg.0 
+	IL_0001:  ldarg.0 
+	IL_0002:  callvirt instance bool class Bless.Util.ThreadedAsyncOperation::UpdateProgress()
+	IL_0007:  stfld bool Bless.Util.ThreadedAsyncOperation::cancelled
+	IL_000c:  ldc.i4.0 
+	IL_000d:  ret 
+    } // end of method ThreadedAsyncOperation::<ProgressTimerExpired>m__0
 
-    // method line 32
-    .method private static hidebysig specialname rtspecialname 
-           default void '.cctor' ()  cil managed 
+    // method line 34
+    .method private hidebysig 
+           instance default bool '<OperationThread>m__1' ()  cil managed 
     {
-        // Method begins at RVA 0x2f62
-	// Code size 7 (0x7)
+        .custom instance void class [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::'.ctor'() =  (01 00 00 00 ) // ....
+
+        // Method begins at RVA 0x2543
+	// Code size 8 (0x8)
 	.maxstack 8
-	IL_0000:  ldnull 
-	IL_0001:  stsfld string Bless.Util.FileResourcePath::dataPath
-	IL_0006:  ret 
-    } // end of method FileResourcePath::.cctor
+	IL_0000:  ldarg.0 
+	IL_0001:  call instance void class Bless.Util.ThreadedAsyncOperation::OperationFinished()
+	IL_0006:  ldc.i4.0 
+	IL_0007:  ret 
+    } // end of method ThreadedAsyncOperation::<OperationThread>m__1
 
-  } // end of class Bless.Util.FileResourcePath
+	.property instance valuetype Bless.Util.ThreadedAsyncOperation/OperationResult Result ()
+	{
+		.get instance default valuetype Bless.Util.ThreadedAsyncOperation/OperationResult Bless.Util.ThreadedAsyncOperation::get_Result () 
+		.set instance default void Bless.Util.ThreadedAsyncOperation::set_Result (valuetype Bless.Util.ThreadedAsyncOperation/OperationResult 'value') 
+	}
+	.property instance class [mscorlib]System.Exception ThreadException ()
+	{
+		.get instance default class [mscorlib]System.Exception Bless.Util.ThreadedAsyncOperation::get_ThreadException () 
+		.set instance default void Bless.Util.ThreadedAsyncOperation::set_ThreadException (class [mscorlib]System.Exception 'value') 
+	}
+  .class nested private auto ansi sealed Event
+  	extends [mscorlib]System.Enum
+  {
+    .field  public specialname rtspecialname  int32 value__
+    .field public static literal  valuetype Bless.Util.ThreadedAsyncOperation/Event ShowProgress = int32(0x00000000)
+    .field public static literal  valuetype Bless.Util.ThreadedAsyncOperation/Event Finished = int32(0x00000001)
+    .field public static literal  valuetype Bless.Util.ThreadedAsyncOperation/Event Exception = int32(0x00000002)
+
+  } // end of class Event
+
+  .class nested public auto ansi sealed OperationResult
+  	extends [mscorlib]System.Enum
+  {
+    .field  public specialname rtspecialname  int32 value__
+    .field public static literal  valuetype Bless.Util.ThreadedAsyncOperation/OperationResult Finished = int32(0x00000000)
+    .field public static literal  valuetype Bless.Util.ThreadedAsyncOperation/OperationResult Cancelled = int32(0x00000001)
+    .field public static literal  valuetype Bless.Util.ThreadedAsyncOperation/OperationResult CaughtException = int32(0x00000002)
+
+  } // end of class OperationResult
+
+  } // end of class Bless.Util.ThreadedAsyncOperation
 }
 
 .namespace Bless.Util
 {
-  .class public auto ansi beforefieldinit Deque`1<T>
+  .class public auto ansi beforefieldinit ThreadedAsyncResult
   	extends [mscorlib]System.Object
-  	implements class [mscorlib]System.Collections.Generic.IEnumerable`1<!0>, [mscorlib]System.Collections.IEnumerable  {
-    .field  private  class Bless.Util.List`1<!0> list
+  	implements [mscorlib]System.IAsyncResult  {
+    .field  private  object asyncState
+    .field  private  class [mscorlib]System.Threading.WaitHandle asyncWaitHandle
+    .field  private  bool isCompleted
 
-    // method line 33
+    // method line 35
     .method public hidebysig specialname rtspecialname 
-           instance default void '.ctor' ()  cil managed 
+           instance default void '.ctor' (object state, class [mscorlib]System.Threading.WaitHandle handle, bool complete)  cil managed 
     {
-        // Method begins at RVA 0x2f6a
-	// Code size 18 (0x12)
+        // Method begins at RVA 0x254c
+	// Code size 28 (0x1c)
 	.maxstack 8
 	IL_0000:  ldarg.0 
 	IL_0001:  call instance void object::'.ctor'()
 	IL_0006:  ldarg.0 
-	IL_0007:  newobj instance void class Bless.Util.List`1<!T>::'.ctor'()
-	IL_000c:  stfld class Bless.Util.List`1<!0> class Bless.Util.Deque`1<!0>::list
-	IL_0011:  ret 
-    } // end of method Deque`1::.ctor
+	IL_0007:  ldarg.1 
+	IL_0008:  stfld object Bless.Util.ThreadedAsyncResult::asyncState
+	IL_000d:  ldarg.0 
+	IL_000e:  ldarg.2 
+	IL_000f:  stfld class [mscorlib]System.Threading.WaitHandle Bless.Util.ThreadedAsyncResult::asyncWaitHandle
+	IL_0014:  ldarg.0 
+	IL_0015:  ldarg.3 
+	IL_0016:  stfld bool Bless.Util.ThreadedAsyncResult::isCompleted
+	IL_001b:  ret 
+    } // end of method ThreadedAsyncResult::.ctor
 
-    // method line 34
-    .method public hidebysig 
-           instance default void AddFront (!T o)  cil managed 
+    // method line 36
+    .method public final virtual hidebysig newslot specialname 
+           instance default object get_AsyncState ()  cil managed 
     {
-        // Method begins at RVA 0x2f7d
-	// Code size 25 (0x19)
+        // Method begins at RVA 0x2569
+	// Code size 7 (0x7)
 	.maxstack 8
 	IL_0000:  ldarg.0 
-	IL_0001:  ldfld class Bless.Util.List`1<!0> class Bless.Util.Deque`1<!0>::list
-	IL_0006:  ldarg.0 
-	IL_0007:  ldfld class Bless.Util.List`1<!0> class Bless.Util.Deque`1<!0>::list
-	IL_000c:  callvirt instance class Bless.Util.List`1/Node<!0> class Bless.Util.List`1<!T>::get_First()
-	IL_0011:  ldarg.1 
-	IL_0012:  callvirt instance class Bless.Util.List`1/Node<!0> class Bless.Util.List`1<!T>::InsertBefore(class Bless.Util.List`1/Node<!0>, !0)
-	IL_0017:  pop 
-	IL_0018:  ret 
-    } // end of method Deque`1::AddFront
-
-    // method line 35
-    .method public hidebysig 
-           instance default void AddEnd (!T o)  cil managed 
-    {
-        // Method begins at RVA 0x2f97
-	// Code size 25 (0x19)
-	.maxstack 8
-	IL_0000:  ldarg.0 
-	IL_0001:  ldfld class Bless.Util.List`1<!0> class Bless.Util.Deque`1<!0>::list
-	IL_0006:  ldarg.0 
-	IL_0007:  ldfld class Bless.Util.List`1<!0> class Bless.Util.Deque`1<!0>::list
-	IL_000c:  callvirt instance class Bless.Util.List`1/Node<!0> class Bless.Util.List`1<!T>::get_Last()
-	IL_0011:  ldarg.1 
-	IL_0012:  callvirt instance class Bless.Util.List`1/Node<!0> class Bless.Util.List`1<!T>::InsertAfter(class Bless.Util.List`1/Node<!0>, !0)
-	IL_0017:  pop 
-	IL_0018:  ret 
-    } // end of method Deque`1::AddEnd
-
-    // method line 36
-    .method public hidebysig 
-           instance default !T RemoveFront ()  cil managed 
-    {
-        // Method begins at RVA 0x2fb4
-	// Code size 92 (0x5c)
-	.maxstack 2
-	.locals init (
-		!T	V_0,
-		!T	V_1)
-	IL_0000:  ldloca.s 1
-	IL_0002:  initobj !0
-	IL_0008:  ldloc.1 
-	IL_0009:  stloc.0 
-	IL_000a:  ldarg.0 
-	IL_000b:  ldfld class Bless.Util.List`1<!0> class Bless.Util.Deque`1<!0>::list
-	IL_0010:  callvirt instance class Bless.Util.List`1/Node<!0> class Bless.Util.List`1<!T>::get_First()
-	IL_0015:  brfalse IL_005a
-
-	IL_001a:  ldarg.0 
-	IL_001b:  ldfld class Bless.Util.List`1<!0> class Bless.Util.Deque`1<!0>::list
-	IL_0020:  callvirt instance class Bless.Util.List`1/Node<!0> class Bless.Util.List`1<!T>::get_First()
-	IL_0025:  ldfld !0 class Bless.Util.List`1/Node<!0>::data
-	IL_002a:  stloc.0 
-	IL_002b:  ldarg.0 
-	IL_002c:  ldfld class Bless.Util.List`1<!0> class Bless.Util.Deque`1<!0>::list
-	IL_0031:  callvirt instance class Bless.Util.List`1/Node<!0> class Bless.Util.List`1<!T>::get_First()
-	IL_0036:  ldloca.s 1
-	IL_0038:  initobj !0
-	IL_003e:  ldloc.1 
-	IL_003f:  stfld !0 class Bless.Util.List`1/Node<!0>::data
-	IL_0044:  ldarg.0 
-	IL_0045:  ldfld class Bless.Util.List`1<!0> class Bless.Util.Deque`1<!0>::list
-	IL_004a:  ldarg.0 
-	IL_004b:  ldfld class Bless.Util.List`1<!0> class Bless.Util.Deque`1<!0>::list
-	IL_0050:  callvirt instance class Bless.Util.List`1/Node<!0> class Bless.Util.List`1<!T>::get_First()
-	IL_0055:  callvirt instance void class Bless.Util.List`1<!T>::Remove(class Bless.Util.List`1/Node<!0>)
-	IL_005a:  ldloc.0 
-	IL_005b:  ret 
-    } // end of method Deque`1::RemoveFront
+	IL_0001:  ldfld object Bless.Util.ThreadedAsyncResult::asyncState
+	IL_0006:  ret 
+    } // end of method ThreadedAsyncResult::get_AsyncState
 
     // method line 37
-    .method public hidebysig 
-           instance default !T RemoveEnd ()  cil managed 
-    {
-        // Method begins at RVA 0x301c
-	// Code size 92 (0x5c)
-	.maxstack 2
-	.locals init (
-		!T	V_0,
-		!T	V_1)
-	IL_0000:  ldloca.s 1
-	IL_0002:  initobj !0
-	IL_0008:  ldloc.1 
-	IL_0009:  stloc.0 
-	IL_000a:  ldarg.0 
-	IL_000b:  ldfld class Bless.Util.List`1<!0> class Bless.Util.Deque`1<!0>::list
-	IL_0010:  callvirt instance class Bless.Util.List`1/Node<!0> class Bless.Util.List`1<!T>::get_Last()
-	IL_0015:  brfalse IL_005a
-
-	IL_001a:  ldarg.0 
-	IL_001b:  ldfld class Bless.Util.List`1<!0> class Bless.Util.Deque`1<!0>::list
-	IL_0020:  callvirt instance class Bless.Util.List`1/Node<!0> class Bless.Util.List`1<!T>::get_Last()
-	IL_0025:  ldfld !0 class Bless.Util.List`1/Node<!0>::data
-	IL_002a:  stloc.0 
-	IL_002b:  ldarg.0 
-	IL_002c:  ldfld class Bless.Util.List`1<!0> class Bless.Util.Deque`1<!0>::list
-	IL_0031:  callvirt instance class Bless.Util.List`1/Node<!0> class Bless.Util.List`1<!T>::get_Last()
-	IL_0036:  ldloca.s 1
-	IL_0038:  initobj !0
-	IL_003e:  ldloc.1 
-	IL_003f:  stfld !0 class Bless.Util.List`1/Node<!0>::data
-	IL_0044:  ldarg.0 
-	IL_0045:  ldfld class Bless.Util.List`1<!0> class Bless.Util.Deque`1<!0>::list
-	IL_004a:  ldarg.0 
-	IL_004b:  ldfld class Bless.Util.List`1<!0> class Bless.Util.Deque`1<!0>::list
-	IL_0050:  callvirt instance class Bless.Util.List`1/Node<!0> class Bless.Util.List`1<!T>::get_Last()
-	IL_0055:  callvirt instance void class Bless.Util.List`1<!T>::Remove(class Bless.Util.List`1/Node<!0>)
-	IL_005a:  ldloc.0 
-	IL_005b:  ret 
-    } // end of method Deque`1::RemoveEnd
-
-    // method line 38
-    .method public hidebysig 
-           instance default !T PeekFront ()  cil managed 
-    {
-        // Method begins at RVA 0x3084
-	// Code size 45 (0x2d)
-	.maxstack 1
-	.locals init (
-		!T	V_0,
-		!T	V_1)
-	IL_0000:  ldloca.s 1
-	IL_0002:  initobj !0
-	IL_0008:  ldloc.1 
-	IL_0009:  stloc.0 
-	IL_000a:  ldarg.0 
-	IL_000b:  ldfld class Bless.Util.List`1<!0> class Bless.Util.Deque`1<!0>::list
-	IL_0010:  callvirt instance class Bless.Util.List`1/Node<!0> class Bless.Util.List`1<!T>::get_First()
-	IL_0015:  brfalse IL_002b
-
-	IL_001a:  ldarg.0 
-	IL_001b:  ldfld class Bless.Util.List`1<!0> class Bless.Util.Deque`1<!0>::list
-	IL_0020:  callvirt instance class Bless.Util.List`1/Node<!0> class Bless.Util.List`1<!T>::get_First()
-	IL_0025:  ldfld !0 class Bless.Util.List`1/Node<!0>::data
-	IL_002a:  stloc.0 
-	IL_002b:  ldloc.0 
-	IL_002c:  ret 
-    } // end of method Deque`1::PeekFront
-
-    // method line 39
-    .method public hidebysig 
-           instance default !T PeekEnd ()  cil managed 
-    {
-        // Method begins at RVA 0x30c0
-	// Code size 45 (0x2d)
-	.maxstack 1
-	.locals init (
-		!T	V_0,
-		!T	V_1)
-	IL_0000:  ldloca.s 1
-	IL_0002:  initobj !0
-	IL_0008:  ldloc.1 
-	IL_0009:  stloc.0 
-	IL_000a:  ldarg.0 
-	IL_000b:  ldfld class Bless.Util.List`1<!0> class Bless.Util.Deque`1<!0>::list
-	IL_0010:  callvirt instance class Bless.Util.List`1/Node<!0> class Bless.Util.List`1<!T>::get_Last()
-	IL_0015:  brfalse IL_002b
-
-	IL_001a:  ldarg.0 
-	IL_001b:  ldfld class Bless.Util.List`1<!0> class Bless.Util.Deque`1<!0>::list
-	IL_0020:  callvirt instance class Bless.Util.List`1/Node<!0> class Bless.Util.List`1<!T>::get_Last()
-	IL_0025:  ldfld !0 class Bless.Util.List`1/Node<!0>::data
-	IL_002a:  stloc.0 
-	IL_002b:  ldloc.0 
-	IL_002c:  ret 
-    } // end of method Deque`1::PeekEnd
-
-    // method line 40
-    .method public hidebysig 
-           instance default void Clear ()  cil managed 
-    {
-        // Method begins at RVA 0x30f9
-	// Code size 25 (0x19)
-	.maxstack 8
-	IL_0000:  br IL_000c
-
-	IL_0005:  ldarg.0 
-	IL_0006:  call instance !0 class Bless.Util.Deque`1<!T>::RemoveFront()
-	IL_000b:  pop 
-	IL_000c:  ldarg.0 
-	IL_000d:  call instance int32 class Bless.Util.Deque`1<!T>::get_Count()
-	IL_0012:  ldc.i4.0 
-	IL_0013:  bgt IL_0005
-
-	IL_0018:  ret 
-    } // end of method Deque`1::Clear
-
-    // method line 41
-    .method public hidebysig specialname 
-           instance default int32 get_Count ()  cil managed 
+    .method public final virtual hidebysig newslot specialname 
+           instance default class [mscorlib]System.Threading.WaitHandle get_AsyncWaitHandle ()  cil managed 
     {
-        // Method begins at RVA 0x3113
-	// Code size 12 (0xc)
+        // Method begins at RVA 0x2571
+	// Code size 7 (0x7)
 	.maxstack 8
 	IL_0000:  ldarg.0 
-	IL_0001:  ldfld class Bless.Util.List`1<!0> class Bless.Util.Deque`1<!0>::list
-	IL_0006:  callvirt instance int32 class Bless.Util.List`1<!T>::get_Count()
-	IL_000b:  ret 
-    } // end of method Deque`1::get_Count
+	IL_0001:  ldfld class [mscorlib]System.Threading.WaitHandle Bless.Util.ThreadedAsyncResult::asyncWaitHandle
+	IL_0006:  ret 
+    } // end of method ThreadedAsyncResult::get_AsyncWaitHandle
 
-    // method line 42
-    .method public final virtual hidebysig newslot 
-           instance default class [mscorlib]System.Collections.Generic.IEnumerator`1<!T> GetEnumerator ()  cil managed 
+    // method line 38
+    .method public final virtual hidebysig newslot specialname 
+           instance default bool get_CompletedSynchronously ()  cil managed 
     {
-        // Method begins at RVA 0x3120
-	// Code size 12 (0xc)
+        // Method begins at RVA 0x2579
+	// Code size 2 (0x2)
 	.maxstack 8
-	IL_0000:  ldarg.0 
-	IL_0001:  ldfld class Bless.Util.List`1<!0> class Bless.Util.Deque`1<!0>::list
-	IL_0006:  callvirt instance class [mscorlib]System.Collections.Generic.IEnumerator`1<!0> class Bless.Util.List`1<!T>::GetEnumerator()
-	IL_000b:  ret 
-    } // end of method Deque`1::GetEnumerator
+	IL_0000:  ldc.i4.0 
+	IL_0001:  ret 
+    } // end of method ThreadedAsyncResult::get_CompletedSynchronously
 
-    // method line 43
-    .method private final virtual hidebysig newslot 
-           instance default class [mscorlib]System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator ()  cil managed 
+    // method line 39
+    .method public final virtual hidebysig newslot specialname 
+           instance default bool get_IsCompleted ()  cil managed 
     {
-        // Method begins at RVA 0x312d
-	.override Could not decode method override class [mscorlib]System.Collections.IEnumerable::GetEnumerator due to (null)
+        // Method begins at RVA 0x257c
 	// Code size 7 (0x7)
 	.maxstack 8
 	IL_0000:  ldarg.0 
-	IL_0001:  call instance class [mscorlib]System.Collections.Generic.IEnumerator`1<!0> class Bless.Util.Deque`1<!T>::GetEnumerator()
+	IL_0001:  ldfld bool Bless.Util.ThreadedAsyncResult::isCompleted
 	IL_0006:  ret 
-    } // end of method Deque`1::System.Collections.IEnumerable.GetEnumerator
+    } // end of method ThreadedAsyncResult::get_IsCompleted
 
-	.property instance int32 Count ()
+	.property instance object AsyncState ()
 	{
-		.get instance default int32 Bless.Util.Deque`1::get_Count () 
+		.get instance default object Bless.Util.ThreadedAsyncResult::get_AsyncState () 
 	}
-  } // end of class Bless.Util.Deque`1
+	.property instance class [mscorlib]System.Threading.WaitHandle AsyncWaitHandle ()
+	{
+		.get instance default class [mscorlib]System.Threading.WaitHandle Bless.Util.ThreadedAsyncResult::get_AsyncWaitHandle () 
+	}
+	.property instance bool CompletedSynchronously ()
+	{
+		.get instance default bool Bless.Util.ThreadedAsyncResult::get_CompletedSynchronously () 
+	}
+	.property instance bool IsCompleted ()
+	{
+		.get instance default bool Bless.Util.ThreadedAsyncResult::get_IsCompleted () 
+	}
+  } // end of class Bless.Util.ThreadedAsyncResult
 }
 
 .namespace Bless.Util
 {
-  .class public auto ansi beforefieldinit ByteArray
+  .class public auto ansi beforefieldinit FileResourcePath
   	extends [mscorlib]System.Object
   {
+    .field  private static  string dataPath
 
-    // method line 44
+    // method line 40
     .method private hidebysig specialname rtspecialname 
            instance default void '.ctor' ()  cil managed 
     {
-        // Method begins at RVA 0x3135
+        // Method begins at RVA 0x2584
 	// Code size 7 (0x7)
 	.maxstack 8
 	IL_0000:  ldarg.0 
 	IL_0001:  call instance void object::'.ctor'()
 	IL_0006:  ret 
-    } // end of method ByteArray::.ctor
+    } // end of method FileResourcePath::.ctor
 
-    // method line 45
+    // method line 41
     .method public static hidebysig 
-           default unsigned int8[] FromString (string s, int32 baseNum)  cil managed 
+           default string GetBinPath (string[] dirs)  cil managed 
     {
-        // Method begins at RVA 0x3140
-	// Code size 167 (0xa7)
-	.maxstack 5
-	.locals init (
-		int32	V_0,
-		int32	V_1,
-		class [mscorlib]System.Collections.Generic.List`1<unsigned int8>	V_2,
-		int32	V_3)
-	IL_0000:  ldc.i4.0 
-	IL_0001:  stloc.0 
-	IL_0002:  ldarg.0 
-	IL_0003:  callvirt instance int32 string::get_Length()
-	IL_0008:  stloc.1 
-	IL_0009:  newobj instance void class [mscorlib]System.Collections.Generic.List`1<unsigned int8>::'.ctor'()
-	IL_000e:  stloc.2 
-	IL_000f:  br IL_0018
+	.param [1]
+	.custom instance void class [mscorlib]System.ParamArrayAttribute::'.ctor'() =  (01 00 00 00 ) // ....
 
-	IL_0014:  ldloc.0 
-	IL_0015:  ldc.i4.1 
-	IL_0016:  add 
-	IL_0017:  stloc.0 
-	IL_0018:  ldloc.0 
-	IL_0019:  ldloc.1 
-	IL_001a:  bge IL_002d
+        // Method begins at RVA 0x258c
+	// Code size 64 (0x40)
+	.maxstack 2
+	.locals init (
+		string	V_0,
+		string	V_1,
+		string	V_2,
+		string	V_3,
+		string[]	V_4,
+		int32	V_5)
+	IL_0000:  call class [mscorlib]System.Reflection.Assembly class [mscorlib]System.Reflection.Assembly::GetCallingAssembly()
+	IL_0005:  callvirt instance string class [mscorlib]System.Reflection.Assembly::get_Location()
+	IL_000a:  stloc.0 
+	IL_000b:  ldloc.0 
+	IL_000c:  call string class [mscorlib]System.IO.Path::GetDirectoryName(string)
+	IL_0011:  stloc.1 
+	IL_0012:  ldloc.1 
+	IL_0013:  stloc.2 
+	IL_0014:  ldarg.0 
+	IL_0015:  stloc.s 4
+	IL_0017:  ldc.i4.0 
+	IL_0018:  stloc.s 5
+	IL_001a:  br IL_0033
 
-	IL_001f:  ldarg.0 
-	IL_0020:  ldloc.0 
-	IL_0021:  callvirt instance char string::get_Chars(int32)
-	IL_0026:  ldc.i4.s 0x20
-	IL_0028:  beq IL_0014
+	IL_001f:  ldloc.s 4
+	IL_0021:  ldloc.s 5
+	IL_0023:  ldelem.ref 
+	IL_0024:  stloc.3 
+	IL_0025:  ldloc.2 
+	IL_0026:  ldloc.3 
+	IL_0027:  call string class [mscorlib]System.IO.Path::Combine(string, string)
+	IL_002c:  stloc.2 
+	IL_002d:  ldloc.s 5
+	IL_002f:  ldc.i4.1 
+	IL_0030:  add 
+	IL_0031:  stloc.s 5
+	IL_0033:  ldloc.s 5
+	IL_0035:  ldloc.s 4
+	IL_0037:  ldlen 
+	IL_0038:  conv.i4 
+	IL_0039:  blt IL_001f
 
-	IL_002d:  br IL_0099
+	IL_003e:  ldloc.2 
+	IL_003f:  ret 
+    } // end of method FileResourcePath::GetBinPath
 
-	IL_0032:  ldc.i4.1 
-	IL_0033:  stloc.3 
-	IL_0034:  br IL_003d
+    // method line 42
+    .method public static hidebysig 
+           default string GetDataPath (string[] dirs)  cil managed 
+    {
+	.param [1]
+	.custom instance void class [mscorlib]System.ParamArrayAttribute::'.ctor'() =  (01 00 00 00 ) // ....
 
-	IL_0039:  ldloc.3 
-	IL_003a:  ldc.i4.1 
-	IL_003b:  add 
-	IL_003c:  stloc.3 
-	IL_003d:  ldloc.0 
-	IL_003e:  ldloc.3 
-	IL_003f:  add 
-	IL_0040:  ldloc.1 
-	IL_0041:  bge IL_0063
+        // Method begins at RVA 0x25d8
+	// Code size 200 (0xc8)
+	.maxstack 4
+	.locals init (
+		string	V_0,
+		string	V_1,
+		string	V_2,
+		string[]	V_3,
+		int32	V_4)
+	IL_0000:  ldsfld string Bless.Util.FileResourcePath::dataPath
+	IL_0005:  brtrue IL_0099
 
-	IL_0046:  ldarg.0 
-	IL_0047:  ldloc.0 
-	IL_0048:  ldloc.3 
-	IL_0049:  add 
-	IL_004a:  callvirt instance char string::get_Chars(int32)
-	IL_004f:  ldc.i4.s 0x20
-	IL_0051:  beq IL_0063
+	IL_000a:  ldc.i4.2 
+	IL_000b:  newarr [mscorlib]System.String
+	IL_0010:  dup 
+	IL_0011:  ldc.i4.0 
+	IL_0012:  ldstr ".."
+	IL_0017:  stelem.ref 
+	IL_0018:  dup 
+	IL_0019:  ldc.i4.1 
+	IL_001a:  ldstr "data"
+	IL_001f:  stelem.ref 
+	IL_0020:  call string class Bless.Util.FileResourcePath::GetBinPath(string[])
+	IL_0025:  stloc.0 
+	IL_0026:  ldloc.0 
+	IL_0027:  call bool class [mscorlib]System.IO.Directory::Exists(string)
+	IL_002c:  brfalse IL_0051
 
-	IL_0056:  ldloc.3 
-	IL_0057:  ldsfld int32[] Bless.Util.BaseConverter::DefaultMinDigits
-	IL_005c:  ldarg.1 
-	IL_005d:  ldelem.i4 
-	IL_005e:  blt IL_0039
+	IL_0031:  ldloc.0 
+	IL_0032:  ldstr "bless.glade"
+	IL_0037:  call string class [mscorlib]System.IO.Path::Combine(string, string)
+	IL_003c:  call bool class [mscorlib]System.IO.File::Exists(string)
+	IL_0041:  brfalse IL_0051
 
-	IL_0063:  ldloc.2 
-	IL_0064:  ldarg.0 
-	IL_0065:  ldloc.0 
-	IL_0066:  ldloc.0 
-	IL_0067:  ldloc.3 
-	IL_0068:  add 
-	IL_0069:  ldc.i4.1 
-	IL_006a:  sub 
-	IL_006b:  ldarg.1 
-	IL_006c:  call int64 class Bless.Util.BaseConverter::ConvertToNum(string, int32, int32, int32)
-	IL_0071:  conv.u1 
-	IL_0072:  callvirt instance void class [mscorlib]System.Collections.Generic.List`1<unsigned int8>::Add(!0)
-	IL_0077:  ldloc.0 
-	IL_0078:  ldloc.3 
-	IL_0079:  add 
-	IL_007a:  stloc.0 
-	IL_007b:  br IL_0084
+	IL_0046:  ldloc.0 
+	IL_0047:  stsfld string Bless.Util.FileResourcePath::dataPath
+	IL_004c:  br IL_0099
 
-	IL_0080:  ldloc.0 
-	IL_0081:  ldc.i4.1 
-	IL_0082:  add 
-	IL_0083:  stloc.0 
-	IL_0084:  ldloc.0 
-	IL_0085:  ldloc.1 
-	IL_0086:  bge IL_0099
+	IL_0051:  ldstr "/usr/share/bless/"
+	IL_0056:  call bool class [mscorlib]System.IO.Directory::Exists(string)
+	IL_005b:  brfalse IL_0088
 
-	IL_008b:  ldarg.0 
-	IL_008c:  ldloc.0 
-	IL_008d:  callvirt instance char string::get_Chars(int32)
-	IL_0092:  ldc.i4.s 0x20
-	IL_0094:  beq IL_0080
+	IL_0060:  ldstr "/usr/share/bless/"
+	IL_0065:  ldstr "bless.glade"
+	IL_006a:  call string class [mscorlib]System.IO.Path::Combine(string, string)
+	IL_006f:  call bool class [mscorlib]System.IO.File::Exists(string)
+	IL_0074:  brfalse IL_0088
 
-	IL_0099:  ldloc.0 
-	IL_009a:  ldloc.1 
-	IL_009b:  blt IL_0032
+	IL_0079:  ldstr "/usr/share/bless/"
+	IL_007e:  stsfld string Bless.Util.FileResourcePath::dataPath
+	IL_0083:  br IL_0099
 
-	IL_00a0:  ldloc.2 
-	IL_00a1:  callvirt instance !0[] class [mscorlib]System.Collections.Generic.List`1<unsigned int8>::ToArray()
-	IL_00a6:  ret 
-    } // end of method ByteArray::FromString
+	IL_0088:  ldloc.0 
+	IL_0089:  ldstr " or /usr/share/bless/"
+	IL_008e:  call string string::Concat(string, string)
+	IL_0093:  newobj instance void class [mscorlib]System.IO.DirectoryNotFoundException::'.ctor'(string)
+	IL_0098:  throw 
+	IL_0099:  ldsfld string Bless.Util.FileResourcePath::dataPath
+	IL_009e:  stloc.1 
+	IL_009f:  ldarg.0 
+	IL_00a0:  stloc.3 
+	IL_00a1:  ldc.i4.0 
+	IL_00a2:  stloc.s 4
+	IL_00a4:  br IL_00bc
 
-    // method line 46
+	IL_00a9:  ldloc.3 
+	IL_00aa:  ldloc.s 4
+	IL_00ac:  ldelem.ref 
+	IL_00ad:  stloc.2 
+	IL_00ae:  ldloc.1 
+	IL_00af:  ldloc.2 
+	IL_00b0:  call string class [mscorlib]System.IO.Path::Combine(string, string)
+	IL_00b5:  stloc.1 
+	IL_00b6:  ldloc.s 4
+	IL_00b8:  ldc.i4.1 
+	IL_00b9:  add 
+	IL_00ba:  stloc.s 4
+	IL_00bc:  ldloc.s 4
+	IL_00be:  ldloc.3 
+	IL_00bf:  ldlen 
+	IL_00c0:  conv.i4 
+	IL_00c1:  blt IL_00a9
+
+	IL_00c6:  ldloc.1 
+	IL_00c7:  ret 
+    } // end of method FileResourcePath::GetDataPath
+
+    // method line 43
     .method public static hidebysig 
-           default string ToString (unsigned int8[] ba, int32 baseNum)  cil managed 
+           default string GetUserPath (string[] dirs)  cil managed 
     {
-        // Method begins at RVA 0x31f4
-	// Code size 99 (0x63)
-	.maxstack 4
+	.param [1]
+	.custom instance void class [mscorlib]System.ParamArrayAttribute::'.ctor'() =  (01 00 00 00 ) // ....
+
+        // Method begins at RVA 0x26ac
+	// Code size 54 (0x36)
+	.maxstack 2
 	.locals init (
-		class [mscorlib]System.Text.StringBuilder	V_0,
-		unsigned int8	V_1,
-		unsigned int8[]	V_2,
+		string	V_0,
+		string	V_1,
+		string[]	V_2,
 		int32	V_3)
-	IL_0000:  ldarg.0 
-	IL_0001:  ldlen 
-	IL_0002:  conv.i4 
-	IL_0003:  brtrue IL_000e
-
-	IL_0008:  ldsfld string [mscorlib]System.String::Empty
-	IL_000d:  ret 
-	IL_000e:  ldarg.0 
-	IL_000f:  ldlen 
-	IL_0010:  conv.i4 
-	IL_0011:  ldsfld int32[] Bless.Util.BaseConverter::DefaultMinDigits
-	IL_0016:  ldarg.1 
-	IL_0017:  ldelem.i4 
-	IL_0018:  ldc.i4.1 
-	IL_0019:  add 
-	IL_001a:  mul 
-	IL_001b:  newobj instance void class [mscorlib]System.Text.StringBuilder::'.ctor'(int32)
-	IL_0020:  stloc.0 
-	IL_0021:  ldarg.0 
-	IL_0022:  stloc.2 
-	IL_0023:  ldc.i4.0 
-	IL_0024:  stloc.3 
-	IL_0025:  br IL_004a
+	IL_0000:  ldc.i4.s 0x1a
+	IL_0002:  call string class [mscorlib]System.Environment::GetFolderPath(valuetype [mscorlib]System.Environment/SpecialFolder)
+	IL_0007:  ldstr "bless"
+	IL_000c:  call string class [mscorlib]System.IO.Path::Combine(string, string)
+	IL_0011:  stloc.0 
+	IL_0012:  ldarg.0 
+	IL_0013:  stloc.2 
+	IL_0014:  ldc.i4.0 
+	IL_0015:  stloc.3 
+	IL_0016:  br IL_002b
 
-	IL_002a:  ldloc.2 
-	IL_002b:  ldloc.3 
-	IL_002c:  ldelem.u1 
-	IL_002d:  stloc.1 
-	IL_002e:  ldloc.0 
-	IL_002f:  ldloc.1 
-	IL_0030:  conv.i8 
-	IL_0031:  ldarg.1 
-	IL_0032:  call string class Bless.Util.BaseConverter::ConvertToString(int64, int32)
-	IL_0037:  callvirt instance class [mscorlib]System.Text.StringBuilder class [mscorlib]System.Text.StringBuilder::Append(string)
-	IL_003c:  pop 
-	IL_003d:  ldloc.0 
-	IL_003e:  ldc.i4.s 0x20
-	IL_0040:  callvirt instance class [mscorlib]System.Text.StringBuilder class [mscorlib]System.Text.StringBuilder::Append(char)
-	IL_0045:  pop 
-	IL_0046:  ldloc.3 
-	IL_0047:  ldc.i4.1 
-	IL_0048:  add 
-	IL_0049:  stloc.3 
-	IL_004a:  ldloc.3 
-	IL_004b:  ldloc.2 
-	IL_004c:  ldlen 
-	IL_004d:  conv.i4 
-	IL_004e:  blt IL_002a
-
-	IL_0053:  ldloc.0 
-	IL_0054:  ldc.i4.0 
-	IL_0055:  ldloc.0 
-	IL_0056:  callvirt instance int32 class [mscorlib]System.Text.StringBuilder::get_Length()
-	IL_005b:  ldc.i4.1 
-	IL_005c:  sub 
-	IL_005d:  callvirt instance string class [mscorlib]System.Text.StringBuilder::ToString(int32, int32)
-	IL_0062:  ret 
-    } // end of method ByteArray::ToString
-
-  } // end of class Bless.Util.ByteArray
-}
-
-.namespace Bless.Util
-{
-  .class interface public auto ansi abstract IRange
-  {
-
-    // method line 47
-    .method public virtual hidebysig newslot abstract specialname 
-           instance default int64 get_Start ()  cil managed 
-    {
-        // Method begins at RVA 0x0
-    } // end of method IRange::get_Start
-
-    // method line 48
-    .method public virtual hidebysig newslot abstract specialname 
-           instance default void set_Start (int64 'value')  cil managed 
-    {
-        // Method begins at RVA 0x0
-    } // end of method IRange::set_Start
-
-    // method line 49
-    .method public virtual hidebysig newslot abstract specialname 
-           instance default int64 get_End ()  cil managed 
-    {
-        // Method begins at RVA 0x0
-    } // end of method IRange::get_End
-
-    // method line 50
-    .method public virtual hidebysig newslot abstract specialname 
-           instance default void set_End (int64 'value')  cil managed 
-    {
-        // Method begins at RVA 0x0
-    } // end of method IRange::set_End
-
-    // method line 51
-    .method public virtual hidebysig newslot abstract specialname 
-           instance default int64 get_Size ()  cil managed 
-    {
-        // Method begins at RVA 0x0
-    } // end of method IRange::get_Size
+	IL_001b:  ldloc.2 
+	IL_001c:  ldloc.3 
+	IL_001d:  ldelem.ref 
+	IL_001e:  stloc.1 
+	IL_001f:  ldloc.0 
+	IL_0020:  ldloc.1 
+	IL_0021:  call string class [mscorlib]System.IO.Path::Combine(string, string)
+	IL_0026:  stloc.0 
+	IL_0027:  ldloc.3 
+	IL_0028:  ldc.i4.1 
+	IL_0029:  add 
+	IL_002a:  stloc.3 
+	IL_002b:  ldloc.3 
+	IL_002c:  ldloc.2 
+	IL_002d:  ldlen 
+	IL_002e:  conv.i4 
+	IL_002f:  blt IL_001b
 
-    // method line 52
-    .method public virtual hidebysig newslot abstract 
-           instance default bool IsEmpty ()  cil managed 
-    {
-        // Method begins at RVA 0x0
-    } // end of method IRange::IsEmpty
+	IL_0034:  ldloc.0 
+	IL_0035:  ret 
+    } // end of method FileResourcePath::GetUserPath
 
-    // method line 53
-    .method public virtual hidebysig newslot abstract 
-           instance default void Clear ()  cil managed 
+    // method line 44
+    .method private static hidebysig specialname rtspecialname 
+           default void '.cctor' ()  cil managed 
     {
-        // Method begins at RVA 0x0
-    } // end of method IRange::Clear
+        // Method begins at RVA 0x26ee
+	// Code size 7 (0x7)
+	.maxstack 8
+	IL_0000:  ldnull 
+	IL_0001:  stsfld string Bless.Util.FileResourcePath::dataPath
+	IL_0006:  ret 
+    } // end of method FileResourcePath::.cctor
 
-	.property instance int64 Start ()
-	{
-		.get instance default int64 Bless.Util.IRange::get_Start () 
-		.set instance default void Bless.Util.IRange::set_Start (int64 'value') 
-	}
-	.property instance int64 End ()
-	{
-		.get instance default int64 Bless.Util.IRange::get_End () 
-		.set instance default void Bless.Util.IRange::set_End (int64 'value') 
-	}
-	.property instance int64 Size ()
-	{
-		.get instance default int64 Bless.Util.IRange::get_Size () 
-	}
-  } // end of class Bless.Util.IRange
+  } // end of class Bless.Util.FileResourcePath
 }
 
 .namespace Bless.Util
 {
-  .class public auto ansi beforefieldinit Range
+  .class public auto ansi beforefieldinit Deque`1<T>
   	extends [mscorlib]System.Object
-  	implements Bless.Util.IRange, class [mscorlib]System.IEquatable`1<class Bless.Util.Range>  {
-    .field  family  int64 start
-    .field  family  int64 end
+  	implements class [mscorlib]System.Collections.Generic.IEnumerable`1<!0>, [mscorlib]System.Collections.IEnumerable  {
+    .field  private  class Bless.Util.List`1<!0> list
 
-    // method line 54
+    // method line 45
     .method public hidebysig specialname rtspecialname 
            instance default void '.ctor' ()  cil managed 
     {
-        // Method begins at RVA 0x3263
-	// Code size 13 (0xd)
+        // Method begins at RVA 0x26f6
+	// Code size 18 (0x12)
 	.maxstack 8
 	IL_0000:  ldarg.0 
 	IL_0001:  call instance void object::'.ctor'()
 	IL_0006:  ldarg.0 
-	IL_0007:  call instance void class Bless.Util.Range::Clear()
-	IL_000c:  ret 
-    } // end of method Range::.ctor
+	IL_0007:  newobj instance void class Bless.Util.List`1<!T>::'.ctor'()
+	IL_000c:  stfld class Bless.Util.List`1<!0> class Bless.Util.Deque`1<!0>::list
+	IL_0011:  ret 
+    } // end of method Deque`1::.ctor
 
-    // method line 55
-    .method public hidebysig specialname rtspecialname 
-           instance default void '.ctor' (int64 s, int64 e)  cil managed 
+    // method line 46
+    .method public hidebysig 
+           instance default void AddFront (!T o)  cil managed 
     {
-        // Method begins at RVA 0x3271
-	// Code size 21 (0x15)
+        // Method begins at RVA 0x2709
+	// Code size 25 (0x19)
 	.maxstack 8
 	IL_0000:  ldarg.0 
-	IL_0001:  call instance void object::'.ctor'()
+	IL_0001:  ldfld class Bless.Util.List`1<!0> class Bless.Util.Deque`1<!0>::list
 	IL_0006:  ldarg.0 
-	IL_0007:  ldarg.1 
-	IL_0008:  stfld int64 Bless.Util.Range::start
-	IL_000d:  ldarg.0 
-	IL_000e:  ldarg.2 
-	IL_000f:  stfld int64 Bless.Util.Range::end
-	IL_0014:  ret 
-    } // end of method Range::.ctor
+	IL_0007:  ldfld class Bless.Util.List`1<!0> class Bless.Util.Deque`1<!0>::list
+	IL_000c:  callvirt instance class Bless.Util.List`1/Node<!0> class Bless.Util.List`1<!T>::get_First()
+	IL_0011:  ldarg.1 
+	IL_0012:  callvirt instance class Bless.Util.List`1/Node<!0> class Bless.Util.List`1<!T>::InsertBefore(class Bless.Util.List`1/Node<!0>, !0)
+	IL_0017:  pop 
+	IL_0018:  ret 
+    } // end of method Deque`1::AddFront
 
-    // method line 56
-    .method public hidebysig specialname rtspecialname 
-           instance default void '.ctor' (class Bless.Util.IRange r)  cil managed 
+    // method line 47
+    .method public hidebysig 
+           instance default void AddEnd (!T o)  cil managed 
     {
-        // Method begins at RVA 0x3287
-	// Code size 19 (0x13)
+        // Method begins at RVA 0x2723
+	// Code size 25 (0x19)
 	.maxstack 8
 	IL_0000:  ldarg.0 
-	IL_0001:  ldarg.1 
-	IL_0002:  callvirt instance int64 class Bless.Util.IRange::get_Start()
-	IL_0007:  ldarg.1 
-	IL_0008:  callvirt instance int64 class Bless.Util.IRange::get_End()
-	IL_000d:  call instance void class Bless.Util.Range::'.ctor'(int64, int64)
-	IL_0012:  ret 
-    } // end of method Range::.ctor
+	IL_0001:  ldfld class Bless.Util.List`1<!0> class Bless.Util.Deque`1<!0>::list
+	IL_0006:  ldarg.0 
+	IL_0007:  ldfld class Bless.Util.List`1<!0> class Bless.Util.Deque`1<!0>::list
+	IL_000c:  callvirt instance class Bless.Util.List`1/Node<!0> class Bless.Util.List`1<!T>::get_Last()
+	IL_0011:  ldarg.1 
+	IL_0012:  callvirt instance class Bless.Util.List`1/Node<!0> class Bless.Util.List`1<!T>::InsertAfter(class Bless.Util.List`1/Node<!0>, !0)
+	IL_0017:  pop 
+	IL_0018:  ret 
+    } // end of method Deque`1::AddEnd
 
-    // method line 57
-    .method public final virtual hidebysig newslot specialname 
-           instance default int64 get_Start ()  cil managed 
+    // method line 48
+    .method public hidebysig 
+           instance default !T RemoveFront ()  cil managed 
     {
-        // Method begins at RVA 0x329b
-	// Code size 7 (0x7)
-	.maxstack 8
-	IL_0000:  ldarg.0 
-	IL_0001:  ldfld int64 Bless.Util.Range::start
-	IL_0006:  ret 
-    } // end of method Range::get_Start
+        // Method begins at RVA 0x2740
+	// Code size 92 (0x5c)
+	.maxstack 2
+	.locals init (
+		!T	V_0,
+		!T	V_1)
+	IL_0000:  ldloca.s 1
+	IL_0002:  initobj !0
+	IL_0008:  ldloc.1 
+	IL_0009:  stloc.0 
+	IL_000a:  ldarg.0 
+	IL_000b:  ldfld class Bless.Util.List`1<!0> class Bless.Util.Deque`1<!0>::list
+	IL_0010:  callvirt instance class Bless.Util.List`1/Node<!0> class Bless.Util.List`1<!T>::get_First()
+	IL_0015:  brfalse IL_005a
 
-    // method line 58
-    .method public final virtual hidebysig newslot specialname 
-           instance default void set_Start (int64 'value')  cil managed 
-    {
-        // Method begins at RVA 0x32a3
-	// Code size 8 (0x8)
-	.maxstack 8
-	IL_0000:  ldarg.0 
-	IL_0001:  ldarg.1 
-	IL_0002:  stfld int64 Bless.Util.Range::start
-	IL_0007:  ret 
-    } // end of method Range::set_Start
+	IL_001a:  ldarg.0 
+	IL_001b:  ldfld class Bless.Util.List`1<!0> class Bless.Util.Deque`1<!0>::list
+	IL_0020:  callvirt instance class Bless.Util.List`1/Node<!0> class Bless.Util.List`1<!T>::get_First()
+	IL_0025:  ldfld !0 class Bless.Util.List`1/Node<!0>::data
+	IL_002a:  stloc.0 
+	IL_002b:  ldarg.0 
+	IL_002c:  ldfld class Bless.Util.List`1<!0> class Bless.Util.Deque`1<!0>::list
+	IL_0031:  callvirt instance class Bless.Util.List`1/Node<!0> class Bless.Util.List`1<!T>::get_First()
+	IL_0036:  ldloca.s 1
+	IL_0038:  initobj !0
+	IL_003e:  ldloc.1 
+	IL_003f:  stfld !0 class Bless.Util.List`1/Node<!0>::data
+	IL_0044:  ldarg.0 
+	IL_0045:  ldfld class Bless.Util.List`1<!0> class Bless.Util.Deque`1<!0>::list
+	IL_004a:  ldarg.0 
+	IL_004b:  ldfld class Bless.Util.List`1<!0> class Bless.Util.Deque`1<!0>::list
+	IL_0050:  callvirt instance class Bless.Util.List`1/Node<!0> class Bless.Util.List`1<!T>::get_First()
+	IL_0055:  callvirt instance void class Bless.Util.List`1<!T>::Remove(class Bless.Util.List`1/Node<!0>)
+	IL_005a:  ldloc.0 
+	IL_005b:  ret 
+    } // end of method Deque`1::RemoveFront
 
-    // method line 59
-    .method public final virtual hidebysig newslot specialname 
-           instance default int64 get_End ()  cil managed 
+    // method line 49
+    .method public hidebysig 
+           instance default !T RemoveEnd ()  cil managed 
     {
-        // Method begins at RVA 0x32ac
-	// Code size 7 (0x7)
-	.maxstack 8
-	IL_0000:  ldarg.0 
-	IL_0001:  ldfld int64 Bless.Util.Range::end
-	IL_0006:  ret 
-    } // end of method Range::get_End
-
-    // method line 60
-    .method public final virtual hidebysig newslot specialname 
-           instance default void set_End (int64 'value')  cil managed 
-    {
-        // Method begins at RVA 0x32b4
-	// Code size 8 (0x8)
-	.maxstack 8
-	IL_0000:  ldarg.0 
-	IL_0001:  ldarg.1 
-	IL_0002:  stfld int64 Bless.Util.Range::end
-	IL_0007:  ret 
-    } // end of method Range::set_End
-
-    // method line 61
-    .method public final virtual hidebysig newslot specialname 
-           instance default int64 get_Size ()  cil managed 
-    {
-        // Method begins at RVA 0x32c0
-	// Code size 65 (0x41)
+        // Method begins at RVA 0x27a8
+	// Code size 92 (0x5c)
 	.maxstack 2
-	IL_0000:  ldarg.0 
-	IL_0001:  call instance bool class Bless.Util.Range::IsEmpty()
-	IL_0006:  brfalse IL_000e
-
-	IL_000b:  ldc.i4.0 
-	IL_000c:  conv.i8 
-	IL_000d:  ret 
-	IL_000e:  ldarg.0 
-	IL_000f:  ldfld int64 Bless.Util.Range::end
-	IL_0014:  ldarg.0 
-	IL_0015:  ldfld int64 Bless.Util.Range::start
-	IL_001a:  blt IL_0030
+	.locals init (
+		!T	V_0,
+		!T	V_1)
+	IL_0000:  ldloca.s 1
+	IL_0002:  initobj !0
+	IL_0008:  ldloc.1 
+	IL_0009:  stloc.0 
+	IL_000a:  ldarg.0 
+	IL_000b:  ldfld class Bless.Util.List`1<!0> class Bless.Util.Deque`1<!0>::list
+	IL_0010:  callvirt instance class Bless.Util.List`1/Node<!0> class Bless.Util.List`1<!T>::get_Last()
+	IL_0015:  brfalse IL_005a
 
-	IL_001f:  ldarg.0 
-	IL_0020:  ldfld int64 Bless.Util.Range::end
-	IL_0025:  ldarg.0 
-	IL_0026:  ldfld int64 Bless.Util.Range::start
-	IL_002b:  sub 
-	IL_002c:  ldc.i4.1 
-	IL_002d:  conv.i8 
-	IL_002e:  add 
-	IL_002f:  ret 
-	IL_0030:  ldarg.0 
-	IL_0031:  ldfld int64 Bless.Util.Range::start
-	IL_0036:  ldarg.0 
-	IL_0037:  ldfld int64 Bless.Util.Range::end
-	IL_003c:  sub 
-	IL_003d:  ldc.i4.1 
-	IL_003e:  conv.i8 
-	IL_003f:  add 
-	IL_0040:  ret 
-    } // end of method Range::get_Size
+	IL_001a:  ldarg.0 
+	IL_001b:  ldfld class Bless.Util.List`1<!0> class Bless.Util.Deque`1<!0>::list
+	IL_0020:  callvirt instance class Bless.Util.List`1/Node<!0> class Bless.Util.List`1<!T>::get_Last()
+	IL_0025:  ldfld !0 class Bless.Util.List`1/Node<!0>::data
+	IL_002a:  stloc.0 
+	IL_002b:  ldarg.0 
+	IL_002c:  ldfld class Bless.Util.List`1<!0> class Bless.Util.Deque`1<!0>::list
+	IL_0031:  callvirt instance class Bless.Util.List`1/Node<!0> class Bless.Util.List`1<!T>::get_Last()
+	IL_0036:  ldloca.s 1
+	IL_0038:  initobj !0
+	IL_003e:  ldloc.1 
+	IL_003f:  stfld !0 class Bless.Util.List`1/Node<!0>::data
+	IL_0044:  ldarg.0 
+	IL_0045:  ldfld class Bless.Util.List`1<!0> class Bless.Util.Deque`1<!0>::list
+	IL_004a:  ldarg.0 
+	IL_004b:  ldfld class Bless.Util.List`1<!0> class Bless.Util.Deque`1<!0>::list
+	IL_0050:  callvirt instance class Bless.Util.List`1/Node<!0> class Bless.Util.List`1<!T>::get_Last()
+	IL_0055:  callvirt instance void class Bless.Util.List`1<!T>::Remove(class Bless.Util.List`1/Node<!0>)
+	IL_005a:  ldloc.0 
+	IL_005b:  ret 
+    } // end of method Deque`1::RemoveEnd
 
-    // method line 62
-    .method public final virtual hidebysig newslot 
-           instance default bool Equals (class Bless.Util.Range r)  cil managed 
+    // method line 50
+    .method public hidebysig 
+           instance default !T PeekFront ()  cil managed 
     {
-        // Method begins at RVA 0x3310
-	// Code size 72 (0x48)
-	.maxstack 2
-	IL_0000:  ldarg.0 
-	IL_0001:  ldfld int64 Bless.Util.Range::start
-	IL_0006:  ldarg.1 
-	IL_0007:  callvirt instance int64 class Bless.Util.Range::get_Start()
-	IL_000c:  bne.un IL_0022
-
-	IL_0011:  ldarg.0 
-	IL_0012:  ldfld int64 Bless.Util.Range::end
-	IL_0017:  ldarg.1 
-	IL_0018:  callvirt instance int64 class Bless.Util.Range::get_End()
-	IL_001d:  beq IL_0046
-
-	IL_0022:  ldarg.0 
-	IL_0023:  ldfld int64 Bless.Util.Range::end
-	IL_0028:  ldarg.1 
-	IL_0029:  callvirt instance int64 class Bless.Util.Range::get_Start()
-	IL_002e:  bne.un IL_0043
+        // Method begins at RVA 0x2810
+	// Code size 45 (0x2d)
+	.maxstack 1
+	.locals init (
+		!T	V_0,
+		!T	V_1)
+	IL_0000:  ldloca.s 1
+	IL_0002:  initobj !0
+	IL_0008:  ldloc.1 
+	IL_0009:  stloc.0 
+	IL_000a:  ldarg.0 
+	IL_000b:  ldfld class Bless.Util.List`1<!0> class Bless.Util.Deque`1<!0>::list
+	IL_0010:  callvirt instance class Bless.Util.List`1/Node<!0> class Bless.Util.List`1<!T>::get_First()
+	IL_0015:  brfalse IL_002b
 
-	IL_0033:  ldarg.0 
-	IL_0034:  ldfld int64 Bless.Util.Range::start
-	IL_0039:  ldarg.1 
-	IL_003a:  callvirt instance int64 class Bless.Util.Range::get_End()
-	IL_003f:  ceq 
-	IL_0041:  br.s IL_0044
+	IL_001a:  ldarg.0 
+	IL_001b:  ldfld class Bless.Util.List`1<!0> class Bless.Util.Deque`1<!0>::list
+	IL_0020:  callvirt instance class Bless.Util.List`1/Node<!0> class Bless.Util.List`1<!T>::get_First()
+	IL_0025:  ldfld !0 class Bless.Util.List`1/Node<!0>::data
+	IL_002a:  stloc.0 
+	IL_002b:  ldloc.0 
+	IL_002c:  ret 
+    } // end of method Deque`1::PeekFront
 
-	IL_0043:  ldc.i4.0 
-	IL_0044:  br.s IL_0047
+    // method line 51
+    .method public hidebysig 
+           instance default !T PeekEnd ()  cil managed 
+    {
+        // Method begins at RVA 0x284c
+	// Code size 45 (0x2d)
+	.maxstack 1
+	.locals init (
+		!T	V_0,
+		!T	V_1)
+	IL_0000:  ldloca.s 1
+	IL_0002:  initobj !0
+	IL_0008:  ldloc.1 
+	IL_0009:  stloc.0 
+	IL_000a:  ldarg.0 
+	IL_000b:  ldfld class Bless.Util.List`1<!0> class Bless.Util.Deque`1<!0>::list
+	IL_0010:  callvirt instance class Bless.Util.List`1/Node<!0> class Bless.Util.List`1<!T>::get_Last()
+	IL_0015:  brfalse IL_002b
 
-	IL_0046:  ldc.i4.1 
-	IL_0047:  ret 
-    } // end of method Range::Equals
+	IL_001a:  ldarg.0 
+	IL_001b:  ldfld class Bless.Util.List`1<!0> class Bless.Util.Deque`1<!0>::list
+	IL_0020:  callvirt instance class Bless.Util.List`1/Node<!0> class Bless.Util.List`1<!T>::get_Last()
+	IL_0025:  ldfld !0 class Bless.Util.List`1/Node<!0>::data
+	IL_002a:  stloc.0 
+	IL_002b:  ldloc.0 
+	IL_002c:  ret 
+    } // end of method Deque`1::PeekEnd
 
-    // method line 63
-    .method public virtual hidebysig 
-           instance default bool Equals (object obj)  cil managed 
+    // method line 52
+    .method public hidebysig 
+           instance default void Clear ()  cil managed 
     {
-        // Method begins at RVA 0x3364
-	// Code size 23 (0x17)
-	.maxstack 2
-	.locals init (
-		class Bless.Util.Range	V_0)
-	IL_0000:  ldarg.1 
-	IL_0001:  isinst Bless.Util.Range
-	IL_0006:  stloc.0 
-	IL_0007:  ldloc.0 
-	IL_0008:  brfalse IL_0015
+        // Method begins at RVA 0x2885
+	// Code size 25 (0x19)
+	.maxstack 8
+	IL_0000:  br IL_000c
 
-	IL_000d:  ldarg.0 
-	IL_000e:  ldloc.0 
-	IL_000f:  call instance bool class Bless.Util.Range::Equals(class Bless.Util.Range)
-	IL_0014:  ret 
-	IL_0015:  ldc.i4.0 
-	IL_0016:  ret 
-    } // end of method Range::Equals
+	IL_0005:  ldarg.0 
+	IL_0006:  call instance !0 class Bless.Util.Deque`1<!T>::RemoveFront()
+	IL_000b:  pop 
+	IL_000c:  ldarg.0 
+	IL_000d:  call instance int32 class Bless.Util.Deque`1<!T>::get_Count()
+	IL_0012:  ldc.i4.0 
+	IL_0013:  bgt IL_0005
 
-    // method line 64
-    .method public virtual hidebysig 
-           instance default int32 GetHashCode ()  cil managed 
+	IL_0018:  ret 
+    } // end of method Deque`1::Clear
+
+    // method line 53
+    .method public hidebysig specialname 
+           instance default int32 get_Count ()  cil managed 
     {
-        // Method begins at RVA 0x3387
-	// Code size 36 (0x24)
+        // Method begins at RVA 0x289f
+	// Code size 12 (0xc)
 	.maxstack 8
 	IL_0000:  ldarg.0 
-	IL_0001:  ldflda int64 Bless.Util.Range::start
-	IL_0006:  constrained. [mscorlib]System.Int64
-	IL_000c:  callvirt instance int32 object::GetHashCode()
-	IL_0011:  ldarg.0 
-	IL_0012:  ldflda int64 Bless.Util.Range::end
-	IL_0017:  constrained. [mscorlib]System.Int64
-	IL_001d:  callvirt instance int32 object::GetHashCode()
-	IL_0022:  xor 
-	IL_0023:  ret 
-    } // end of method Range::GetHashCode
+	IL_0001:  ldfld class Bless.Util.List`1<!0> class Bless.Util.Deque`1<!0>::list
+	IL_0006:  callvirt instance int32 class Bless.Util.List`1<!T>::get_Count()
+	IL_000b:  ret 
+    } // end of method Deque`1::get_Count
 
-    // method line 65
+    // method line 54
     .method public final virtual hidebysig newslot 
-           instance default void Clear ()  cil managed 
+           instance default class [mscorlib]System.Collections.Generic.IEnumerator`1<!T> GetEnumerator ()  cil managed 
     {
-        // Method begins at RVA 0x33ac
-	// Code size 17 (0x11)
+        // Method begins at RVA 0x28ac
+	// Code size 12 (0xc)
 	.maxstack 8
 	IL_0000:  ldarg.0 
-	IL_0001:  ldc.i4.m1 
-	IL_0002:  conv.i8 
-	IL_0003:  stfld int64 Bless.Util.Range::start
-	IL_0008:  ldarg.0 
-	IL_0009:  ldc.i4.m1 
-	IL_000a:  conv.i8 
-	IL_000b:  stfld int64 Bless.Util.Range::end
-	IL_0010:  ret 
-    } // end of method Range::Clear
+	IL_0001:  ldfld class Bless.Util.List`1<!0> class Bless.Util.Deque`1<!0>::list
+	IL_0006:  callvirt instance class [mscorlib]System.Collections.Generic.IEnumerator`1<!0> class Bless.Util.List`1<!T>::GetEnumerator()
+	IL_000b:  ret 
+    } // end of method Deque`1::GetEnumerator
 
-    // method line 66
-    .method public hidebysig 
-           instance default bool Contains (int64 n)  cil managed 
+    // method line 55
+    .method private final virtual hidebysig newslot 
+           instance default class [mscorlib]System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator ()  cil managed 
     {
-        // Method begins at RVA 0x33c0
-	// Code size 73 (0x49)
-	.maxstack 2
+        // Method begins at RVA 0x28b9
+	.override Could not decode method override class [mscorlib]System.Collections.IEnumerable::GetEnumerator due to (null)
+	// Code size 7 (0x7)
+	.maxstack 8
 	IL_0000:  ldarg.0 
-	IL_0001:  ldfld int64 Bless.Util.Range::start
-	IL_0006:  ldarg.0 
-	IL_0007:  ldfld int64 Bless.Util.Range::end
-	IL_000c:  bge IL_002d
-
-	IL_0011:  ldarg.1 
-	IL_0012:  ldarg.0 
-	IL_0013:  ldfld int64 Bless.Util.Range::start
-	IL_0018:  blt IL_002b
-
-	IL_001d:  ldarg.1 
-	IL_001e:  ldarg.0 
-	IL_001f:  ldfld int64 Bless.Util.Range::end
-	IL_0024:  cgt 
-	IL_0026:  ldc.i4.0 
-	IL_0027:  ceq 
-	IL_0029:  br.s IL_002c
+	IL_0001:  call instance class [mscorlib]System.Collections.Generic.IEnumerator`1<!0> class Bless.Util.Deque`1<!T>::GetEnumerator()
+	IL_0006:  ret 
+    } // end of method Deque`1::System.Collections.IEnumerable.GetEnumerator
 
-	IL_002b:  ldc.i4.0 
-	IL_002c:  ret 
-	IL_002d:  ldarg.1 
-	IL_002e:  ldarg.0 
-	IL_002f:  ldfld int64 Bless.Util.Range::start
-	IL_0034:  bgt IL_0047
+	.property instance int32 Count ()
+	{
+		.get instance default int32 Bless.Util.Deque`1::get_Count () 
+	}
+  } // end of class Bless.Util.Deque`1
+}
 
-	IL_0039:  ldarg.1 
-	IL_003a:  ldarg.0 
-	IL_003b:  ldfld int64 Bless.Util.Range::end
-	IL_0040:  clt 
-	IL_0042:  ldc.i4.0 
-	IL_0043:  ceq 
-	IL_0045:  br.s IL_0048
+.namespace Bless.Util
+{
+  .class interface public auto ansi abstract IRange
+  {
 
-	IL_0047:  ldc.i4.0 
-	IL_0048:  ret 
-    } // end of method Range::Contains
+    // method line 56
+    .method public virtual hidebysig newslot abstract specialname 
+           instance default int64 get_Start ()  cil managed 
+    {
+        // Method begins at RVA 0x0
+    } // end of method IRange::get_Start
 
-    // method line 67
-    .method public hidebysig 
-           instance default void Intersect (class Bless.Util.Range sel)  cil managed 
+    // method line 57
+    .method public virtual hidebysig newslot abstract specialname 
+           instance default void set_Start (int64 'value')  cil managed 
     {
-        // Method begins at RVA 0x3418
-	// Code size 155 (0x9b)
-	.maxstack 2
-	IL_0000:  ldarg.1 
-	IL_0001:  callvirt instance int64 class Bless.Util.Range::get_Start()
-	IL_0006:  ldarg.0 
-	IL_0007:  ldfld int64 Bless.Util.Range::start
-	IL_000c:  blt IL_0050
+        // Method begins at RVA 0x0
+    } // end of method IRange::set_Start
 
-	IL_0011:  ldarg.1 
-	IL_0012:  callvirt instance int64 class Bless.Util.Range::get_Start()
-	IL_0017:  ldarg.0 
-	IL_0018:  ldfld int64 Bless.Util.Range::end
-	IL_001d:  bgt IL_0050
+    // method line 58
+    .method public virtual hidebysig newslot abstract specialname 
+           instance default int64 get_End ()  cil managed 
+    {
+        // Method begins at RVA 0x0
+    } // end of method IRange::get_End
 
-	IL_0022:  ldarg.0 
-	IL_0023:  ldarg.1 
-	IL_0024:  callvirt instance int64 class Bless.Util.Range::get_Start()
-	IL_0029:  stfld int64 Bless.Util.Range::start
-	IL_002e:  ldarg.1 
-	IL_002f:  callvirt instance int64 class Bless.Util.Range::get_End()
-	IL_0034:  ldarg.0 
-	IL_0035:  ldfld int64 Bless.Util.Range::end
-	IL_003a:  bge IL_004b
+    // method line 59
+    .method public virtual hidebysig newslot abstract specialname 
+           instance default void set_End (int64 'value')  cil managed 
+    {
+        // Method begins at RVA 0x0
+    } // end of method IRange::set_End
 
-	IL_003f:  ldarg.0 
-	IL_0040:  ldarg.1 
-	IL_0041:  callvirt instance int64 class Bless.Util.Range::get_End()
-	IL_0046:  stfld int64 Bless.Util.Range::end
-	IL_004b:  br IL_009a
+    // method line 60
+    .method public virtual hidebysig newslot abstract specialname 
+           instance default int64 get_Size ()  cil managed 
+    {
+        // Method begins at RVA 0x0
+    } // end of method IRange::get_Size
 
-	IL_0050:  ldarg.1 
-	IL_0051:  callvirt instance int64 class Bless.Util.Range::get_Start()
-	IL_0056:  ldarg.0 
-	IL_0057:  ldfld int64 Bless.Util.Range::start
-	IL_005c:  bge IL_0094
+    // method line 61
+    .method public virtual hidebysig newslot abstract 
+           instance default bool IsEmpty ()  cil managed 
+    {
+        // Method begins at RVA 0x0
+    } // end of method IRange::IsEmpty
 
-	IL_0061:  ldarg.1 
-	IL_0062:  callvirt instance int64 class Bless.Util.Range::get_End()
-	IL_0067:  ldarg.0 
-	IL_0068:  ldfld int64 Bless.Util.Range::start
-	IL_006d:  blt IL_0094
+    // method line 62
+    .method public virtual hidebysig newslot abstract 
+           instance default void Clear ()  cil managed 
+    {
+        // Method begins at RVA 0x0
+    } // end of method IRange::Clear
 
-	IL_0072:  ldarg.1 
-	IL_0073:  callvirt instance int64 class Bless.Util.Range::get_End()
-	IL_0078:  ldarg.0 
-	IL_0079:  ldfld int64 Bless.Util.Range::end
-	IL_007e:  bge IL_008f
+	.property instance int64 Start ()
+	{
+		.get instance default int64 Bless.Util.IRange::get_Start () 
+		.set instance default void Bless.Util.IRange::set_Start (int64 'value') 
+	}
+	.property instance int64 End ()
+	{
+		.get instance default int64 Bless.Util.IRange::get_End () 
+		.set instance default void Bless.Util.IRange::set_End (int64 'value') 
+	}
+	.property instance int64 Size ()
+	{
+		.get instance default int64 Bless.Util.IRange::get_Size () 
+	}
+  } // end of class Bless.Util.IRange
+}
 
-	IL_0083:  ldarg.0 
-	IL_0084:  ldarg.1 
-	IL_0085:  callvirt instance int64 class Bless.Util.Range::get_End()
-	IL_008a:  stfld int64 Bless.Util.Range::end
-	IL_008f:  br IL_009a
+.namespace Bless.Util
+{
+  .class public auto ansi beforefieldinit Range
+  	extends [mscorlib]System.Object
+  	implements Bless.Util.IRange, class [mscorlib]System.IEquatable`1<class Bless.Util.Range>  {
+    .field  family  int64 start
+    .field  family  int64 end
 
-	IL_0094:  ldarg.0 
-	IL_0095:  call instance void class Bless.Util.Range::Clear()
-	IL_009a:  ret 
-    } // end of method Range::Intersect
+    // method line 63
+    .method public hidebysig specialname rtspecialname 
+           instance default void '.ctor' ()  cil managed 
+    {
+        // Method begins at RVA 0x28c1
+	// Code size 13 (0xd)
+	.maxstack 8
+	IL_0000:  ldarg.0 
+	IL_0001:  call instance void object::'.ctor'()
+	IL_0006:  ldarg.0 
+	IL_0007:  call instance void class Bless.Util.Range::Clear()
+	IL_000c:  ret 
+    } // end of method Range::.ctor
 
-    // method line 68
-    .method public hidebysig 
-           instance default void Difference (class Bless.Util.Range r, class Bless.Util.Range r1)  cil managed 
+    // method line 64
+    .method public hidebysig specialname rtspecialname 
+           instance default void '.ctor' (int64 s, int64 e)  cil managed 
     {
-        // Method begins at RVA 0x34c0
-	// Code size 208 (0xd0)
-	.maxstack 3
-	IL_0000:  ldarg.1 
-	IL_0001:  callvirt instance int64 class Bless.Util.Range::get_Start()
+        // Method begins at RVA 0x28cf
+	// Code size 21 (0x15)
+	.maxstack 8
+	IL_0000:  ldarg.0 
+	IL_0001:  call instance void object::'.ctor'()
 	IL_0006:  ldarg.0 
-	IL_0007:  ldfld int64 Bless.Util.Range::start
-	IL_000c:  ble IL_007c
+	IL_0007:  ldarg.1 
+	IL_0008:  stfld int64 Bless.Util.Range::start
+	IL_000d:  ldarg.0 
+	IL_000e:  ldarg.2 
+	IL_000f:  stfld int64 Bless.Util.Range::end
+	IL_0014:  ret 
+    } // end of method Range::.ctor
 
-	IL_0011:  ldarg.1 
-	IL_0012:  callvirt instance int64 class Bless.Util.Range::get_Start()
-	IL_0017:  ldarg.0 
-	IL_0018:  ldfld int64 Bless.Util.Range::end
-	IL_001d:  bgt IL_007c
+    // method line 65
+    .method public hidebysig specialname rtspecialname 
+           instance default void '.ctor' (class Bless.Util.IRange r)  cil managed 
+    {
+        // Method begins at RVA 0x28e5
+	// Code size 19 (0x13)
+	.maxstack 8
+	IL_0000:  ldarg.0 
+	IL_0001:  ldarg.1 
+	IL_0002:  callvirt instance int64 class Bless.Util.IRange::get_Start()
+	IL_0007:  ldarg.1 
+	IL_0008:  callvirt instance int64 class Bless.Util.IRange::get_End()
+	IL_000d:  call instance void class Bless.Util.Range::'.ctor'(int64, int64)
+	IL_0012:  ret 
+    } // end of method Range::.ctor
 
-	IL_0022:  ldarg.1 
-	IL_0023:  callvirt instance int64 class Bless.Util.Range::get_End()
-	IL_0028:  ldarg.0 
-	IL_0029:  ldfld int64 Bless.Util.Range::end
-	IL_002e:  blt IL_004d
+    // method line 66
+    .method public final virtual hidebysig newslot specialname 
+           instance default int64 get_Start ()  cil managed 
+    {
+        // Method begins at RVA 0x28f9
+	// Code size 7 (0x7)
+	.maxstack 8
+	IL_0000:  ldarg.0 
+	IL_0001:  ldfld int64 Bless.Util.Range::start
+	IL_0006:  ret 
+    } // end of method Range::get_Start
 
-	IL_0033:  ldarg.0 
-	IL_0034:  ldarg.1 
-	IL_0035:  callvirt instance int64 class Bless.Util.Range::get_Start()
-	IL_003a:  ldc.i4.1 
-	IL_003b:  conv.i8 
-	IL_003c:  sub 
-	IL_003d:  stfld int64 Bless.Util.Range::end
-	IL_0042:  ldarg.2 
-	IL_0043:  callvirt instance void class Bless.Util.Range::Clear()
-	IL_0048:  br IL_0077
+    // method line 67
+    .method public final virtual hidebysig newslot specialname 
+           instance default void set_Start (int64 'value')  cil managed 
+    {
+        // Method begins at RVA 0x2901
+	// Code size 8 (0x8)
+	.maxstack 8
+	IL_0000:  ldarg.0 
+	IL_0001:  ldarg.1 
+	IL_0002:  stfld int64 Bless.Util.Range::start
+	IL_0007:  ret 
+    } // end of method Range::set_Start
 
-	IL_004d:  ldarg.2 
-	IL_004e:  ldarg.1 
-	IL_004f:  callvirt instance int64 class Bless.Util.Range::get_End()
-	IL_0054:  ldc.i4.1 
-	IL_0055:  conv.i8 
-	IL_0056:  add 
-	IL_0057:  callvirt instance void class Bless.Util.Range::set_Start(int64)
-	IL_005c:  ldarg.2 
-	IL_005d:  ldarg.0 
-	IL_005e:  ldfld int64 Bless.Util.Range::end
-	IL_0063:  callvirt instance void class Bless.Util.Range::set_End(int64)
-	IL_0068:  ldarg.0 
-	IL_0069:  ldarg.1 
-	IL_006a:  callvirt instance int64 class Bless.Util.Range::get_Start()
-	IL_006f:  ldc.i4.1 
-	IL_0070:  conv.i8 
-	IL_0071:  sub 
-	IL_0072:  stfld int64 Bless.Util.Range::end
-	IL_0077:  br IL_00cf
-
-	IL_007c:  ldarg.1 
-	IL_007d:  callvirt instance int64 class Bless.Util.Range::get_Start()
-	IL_0082:  ldarg.0 
-	IL_0083:  ldfld int64 Bless.Util.Range::start
-	IL_0088:  bgt IL_00cf
+    // method line 68
+    .method public final virtual hidebysig newslot specialname 
+           instance default int64 get_End ()  cil managed 
+    {
+        // Method begins at RVA 0x290a
+	// Code size 7 (0x7)
+	.maxstack 8
+	IL_0000:  ldarg.0 
+	IL_0001:  ldfld int64 Bless.Util.Range::end
+	IL_0006:  ret 
+    } // end of method Range::get_End
 
-	IL_008d:  ldarg.1 
-	IL_008e:  callvirt instance int64 class Bless.Util.Range::get_End()
-	IL_0093:  ldarg.0 
-	IL_0094:  ldfld int64 Bless.Util.Range::start
-	IL_0099:  blt IL_00cf
+    // method line 69
+    .method public final virtual hidebysig newslot specialname 
+           instance default void set_End (int64 'value')  cil managed 
+    {
+        // Method begins at RVA 0x2912
+	// Code size 8 (0x8)
+	.maxstack 8
+	IL_0000:  ldarg.0 
+	IL_0001:  ldarg.1 
+	IL_0002:  stfld int64 Bless.Util.Range::end
+	IL_0007:  ret 
+    } // end of method Range::set_End
 
-	IL_009e:  ldarg.2 
-	IL_009f:  callvirt instance void class Bless.Util.Range::Clear()
-	IL_00a4:  ldarg.1 
-	IL_00a5:  callvirt instance int64 class Bless.Util.Range::get_End()
-	IL_00aa:  ldarg.0 
-	IL_00ab:  ldfld int64 Bless.Util.Range::end
-	IL_00b0:  bge IL_00c9
+    // method line 70
+    .method public final virtual hidebysig newslot specialname 
+           instance default int64 get_Size ()  cil managed 
+    {
+        // Method begins at RVA 0x291c
+	// Code size 65 (0x41)
+	.maxstack 2
+	IL_0000:  ldarg.0 
+	IL_0001:  call instance bool class Bless.Util.Range::IsEmpty()
+	IL_0006:  brfalse IL_000e
 
-	IL_00b5:  ldarg.0 
-	IL_00b6:  ldarg.1 
-	IL_00b7:  callvirt instance int64 class Bless.Util.Range::get_End()
-	IL_00bc:  ldc.i4.1 
-	IL_00bd:  conv.i8 
-	IL_00be:  add 
-	IL_00bf:  stfld int64 Bless.Util.Range::start
-	IL_00c4:  br IL_00cf
+	IL_000b:  ldc.i4.0 
+	IL_000c:  conv.i8 
+	IL_000d:  ret 
+	IL_000e:  ldarg.0 
+	IL_000f:  ldfld int64 Bless.Util.Range::end
+	IL_0014:  ldarg.0 
+	IL_0015:  ldfld int64 Bless.Util.Range::start
+	IL_001a:  blt IL_0030
 
-	IL_00c9:  ldarg.0 
-	IL_00ca:  call instance void class Bless.Util.Range::Clear()
-	IL_00cf:  ret 
-    } // end of method Range::Difference
+	IL_001f:  ldarg.0 
+	IL_0020:  ldfld int64 Bless.Util.Range::end
+	IL_0025:  ldarg.0 
+	IL_0026:  ldfld int64 Bless.Util.Range::start
+	IL_002b:  sub 
+	IL_002c:  ldc.i4.1 
+	IL_002d:  conv.i8 
+	IL_002e:  add 
+	IL_002f:  ret 
+	IL_0030:  ldarg.0 
+	IL_0031:  ldfld int64 Bless.Util.Range::start
+	IL_0036:  ldarg.0 
+	IL_0037:  ldfld int64 Bless.Util.Range::end
+	IL_003c:  sub 
+	IL_003d:  ldc.i4.1 
+	IL_003e:  conv.i8 
+	IL_003f:  add 
+	IL_0040:  ret 
+    } // end of method Range::get_Size
 
-    // method line 69
+    // method line 71
     .method public final virtual hidebysig newslot 
-           instance default bool IsEmpty ()  cil managed 
+           instance default bool Equals (class Bless.Util.Range r)  cil managed 
     {
-        // Method begins at RVA 0x359c
-	// Code size 27 (0x1b)
-	.maxstack 8
+        // Method begins at RVA 0x296c
+	// Code size 72 (0x48)
+	.maxstack 2
 	IL_0000:  ldarg.0 
 	IL_0001:  ldfld int64 Bless.Util.Range::start
-	IL_0006:  ldc.i4.m1 
-	IL_0007:  conv.i8 
-	IL_0008:  bne.un IL_0019
+	IL_0006:  ldarg.1 
+	IL_0007:  callvirt instance int64 class Bless.Util.Range::get_Start()
+	IL_000c:  bne.un IL_0022
 
-	IL_000d:  ldarg.0 
-	IL_000e:  ldfld int64 Bless.Util.Range::end
-	IL_0013:  ldc.i4.m1 
-	IL_0014:  conv.i8 
-	IL_0015:  ceq 
-	IL_0017:  br.s IL_001a
+	IL_0011:  ldarg.0 
+	IL_0012:  ldfld int64 Bless.Util.Range::end
+	IL_0017:  ldarg.1 
+	IL_0018:  callvirt instance int64 class Bless.Util.Range::get_End()
+	IL_001d:  beq IL_0046
 
-	IL_0019:  ldc.i4.0 
-	IL_001a:  ret 
-    } // end of method Range::IsEmpty
+	IL_0022:  ldarg.0 
+	IL_0023:  ldfld int64 Bless.Util.Range::end
+	IL_0028:  ldarg.1 
+	IL_0029:  callvirt instance int64 class Bless.Util.Range::get_Start()
+	IL_002e:  bne.un IL_0043
 
-    // method line 70
-    .method public static hidebysig 
-           default void SplitAtomic (class Bless.Util.Range[] results, class Bless.Util.Range r, class Bless.Util.Range s)  cil managed 
+	IL_0033:  ldarg.0 
+	IL_0034:  ldfld int64 Bless.Util.Range::start
+	IL_0039:  ldarg.1 
+	IL_003a:  callvirt instance int64 class Bless.Util.Range::get_End()
+	IL_003f:  ceq 
+	IL_0041:  br.s IL_0044
+
+	IL_0043:  ldc.i4.0 
+	IL_0044:  br.s IL_0047
+
+	IL_0046:  ldc.i4.1 
+	IL_0047:  ret 
+    } // end of method Range::Equals
+
+    // method line 72
+    .method public virtual hidebysig 
+           instance default bool Equals (object obj)  cil managed 
     {
-        // Method begins at RVA 0x35b8
-	// Code size 486 (0x1e6)
-	.maxstack 3
+        // Method begins at RVA 0x29c0
+	// Code size 23 (0x17)
+	.maxstack 2
 	.locals init (
-		class Bless.Util.Range	V_0,
-		class Bless.Util.Range[]	V_1,
-		int32	V_2)
+		class Bless.Util.Range	V_0)
 	IL_0000:  ldarg.1 
-	IL_0001:  ldarg.2 
-	IL_0002:  callvirt instance int64 class Bless.Util.Range::get_Start()
-	IL_0007:  callvirt instance bool class Bless.Util.Range::Contains(int64)
-	IL_000c:  brfalse IL_008e
-
-	IL_0011:  ldarg.0 
-	IL_0012:  ldc.i4.0 
-	IL_0013:  ldelem.ref 
-	IL_0014:  ldarg.1 
-	IL_0015:  callvirt instance int64 class Bless.Util.Range::get_Start()
-	IL_001a:  callvirt instance void class Bless.Util.Range::set_Start(int64)
-	IL_001f:  ldarg.0 
-	IL_0020:  ldc.i4.0 
-	IL_0021:  ldelem.ref 
-	IL_0022:  ldarg.2 
-	IL_0023:  callvirt instance int64 class Bless.Util.Range::get_Start()
-	IL_0028:  ldc.i4.1 
-	IL_0029:  conv.i8 
-	IL_002a:  sub 
-	IL_002b:  callvirt instance void class Bless.Util.Range::set_End(int64)
-	IL_0030:  ldarg.0 
-	IL_0031:  ldc.i4.1 
-	IL_0032:  ldelem.ref 
-	IL_0033:  ldarg.2 
-	IL_0034:  callvirt instance int64 class Bless.Util.Range::get_Start()
-	IL_0039:  callvirt instance void class Bless.Util.Range::set_Start(int64)
-	IL_003e:  ldarg.0 
-	IL_003f:  ldc.i4.1 
-	IL_0040:  ldelem.ref 
-	IL_0041:  ldarg.2 
-	IL_0042:  callvirt instance int64 class Bless.Util.Range::get_End()
-	IL_0047:  callvirt instance void class Bless.Util.Range::set_End(int64)
-	IL_004c:  ldarg.1 
-	IL_004d:  ldarg.2 
-	IL_004e:  callvirt instance int64 class Bless.Util.Range::get_End()
-	IL_0053:  callvirt instance bool class Bless.Util.Range::Contains(int64)
-	IL_0058:  brfalse IL_0081
-
-	IL_005d:  ldarg.0 
-	IL_005e:  ldc.i4.2 
-	IL_005f:  ldelem.ref 
-	IL_0060:  ldarg.2 
-	IL_0061:  callvirt instance int64 class Bless.Util.Range::get_End()
-	IL_0066:  ldc.i4.1 
-	IL_0067:  conv.i8 
-	IL_0068:  add 
-	IL_0069:  callvirt instance void class Bless.Util.Range::set_Start(int64)
-	IL_006e:  ldarg.0 
-	IL_006f:  ldc.i4.2 
-	IL_0070:  ldelem.ref 
-	IL_0071:  ldarg.1 
-	IL_0072:  callvirt instance int64 class Bless.Util.Range::get_End()
-	IL_0077:  callvirt instance void class Bless.Util.Range::set_End(int64)
-	IL_007c:  br IL_0089
+	IL_0001:  isinst Bless.Util.Range
+	IL_0006:  stloc.0 
+	IL_0007:  ldloc.0 
+	IL_0008:  brfalse IL_0015
 
-	IL_0081:  ldarg.0 
-	IL_0082:  ldc.i4.2 
-	IL_0083:  ldelem.ref 
-	IL_0084:  callvirt instance void class Bless.Util.Range::Clear()
-	IL_0089:  br IL_01b4
+	IL_000d:  ldarg.0 
+	IL_000e:  ldloc.0 
+	IL_000f:  call instance bool class Bless.Util.Range::Equals(class Bless.Util.Range)
+	IL_0014:  ret 
+	IL_0015:  ldc.i4.0 
+	IL_0016:  ret 
+    } // end of method Range::Equals
 
-	IL_008e:  ldarg.1 
-	IL_008f:  ldarg.2 
-	IL_0090:  callvirt instance int64 class Bless.Util.Range::get_End()
-	IL_0095:  callvirt instance bool class Bless.Util.Range::Contains(int64)
-	IL_009a:  brfalse IL_00e7
+    // method line 73
+    .method public virtual hidebysig 
+           instance default int32 GetHashCode ()  cil managed 
+    {
+        // Method begins at RVA 0x29e3
+	// Code size 36 (0x24)
+	.maxstack 8
+	IL_0000:  ldarg.0 
+	IL_0001:  ldflda int64 Bless.Util.Range::start
+	IL_0006:  constrained. [mscorlib]System.Int64
+	IL_000c:  callvirt instance int32 object::GetHashCode()
+	IL_0011:  ldarg.0 
+	IL_0012:  ldflda int64 Bless.Util.Range::end
+	IL_0017:  constrained. [mscorlib]System.Int64
+	IL_001d:  callvirt instance int32 object::GetHashCode()
+	IL_0022:  xor 
+	IL_0023:  ret 
+    } // end of method Range::GetHashCode
 
-	IL_009f:  ldarg.0 
-	IL_00a0:  ldc.i4.0 
-	IL_00a1:  ldelem.ref 
-	IL_00a2:  callvirt instance void class Bless.Util.Range::Clear()
-	IL_00a7:  ldarg.0 
-	IL_00a8:  ldc.i4.1 
-	IL_00a9:  ldelem.ref 
-	IL_00aa:  ldarg.2 
-	IL_00ab:  callvirt instance int64 class Bless.Util.Range::get_Start()
-	IL_00b0:  callvirt instance void class Bless.Util.Range::set_Start(int64)
-	IL_00b5:  ldarg.0 
-	IL_00b6:  ldc.i4.1 
-	IL_00b7:  ldelem.ref 
-	IL_00b8:  ldarg.2 
-	IL_00b9:  callvirt instance int64 class Bless.Util.Range::get_End()
-	IL_00be:  callvirt instance void class Bless.Util.Range::set_End(int64)
-	IL_00c3:  ldarg.0 
-	IL_00c4:  ldc.i4.2 
-	IL_00c5:  ldelem.ref 
-	IL_00c6:  ldarg.2 
-	IL_00c7:  callvirt instance int64 class Bless.Util.Range::get_End()
-	IL_00cc:  ldc.i4.1 
-	IL_00cd:  conv.i8 
-	IL_00ce:  add 
-	IL_00cf:  callvirt instance void class Bless.Util.Range::set_Start(int64)
-	IL_00d4:  ldarg.0 
-	IL_00d5:  ldc.i4.2 
-	IL_00d6:  ldelem.ref 
-	IL_00d7:  ldarg.1 
-	IL_00d8:  callvirt instance int64 class Bless.Util.Range::get_End()
-	IL_00dd:  callvirt instance void class Bless.Util.Range::set_End(int64)
-	IL_00e2:  br IL_01b4
-
-	IL_00e7:  ldarg.2 
-	IL_00e8:  callvirt instance int64 class Bless.Util.Range::get_Start()
-	IL_00ed:  ldarg.1 
-	IL_00ee:  callvirt instance int64 class Bless.Util.Range::get_Start()
-	IL_00f3:  bge IL_013a
-
-	IL_00f8:  ldarg.2 
-	IL_00f9:  callvirt instance int64 class Bless.Util.Range::get_End()
-	IL_00fe:  ldarg.1 
-	IL_00ff:  callvirt instance int64 class Bless.Util.Range::get_End()
-	IL_0104:  ble IL_013a
-
-	IL_0109:  ldarg.0 
-	IL_010a:  ldc.i4.0 
-	IL_010b:  ldelem.ref 
-	IL_010c:  callvirt instance void class Bless.Util.Range::Clear()
-	IL_0111:  ldarg.0 
-	IL_0112:  ldc.i4.1 
-	IL_0113:  ldelem.ref 
-	IL_0114:  ldarg.2 
-	IL_0115:  callvirt instance int64 class Bless.Util.Range::get_Start()
-	IL_011a:  callvirt instance void class Bless.Util.Range::set_Start(int64)
-	IL_011f:  ldarg.0 
-	IL_0120:  ldc.i4.1 
-	IL_0121:  ldelem.ref 
-	IL_0122:  ldarg.2 
-	IL_0123:  callvirt instance int64 class Bless.Util.Range::get_End()
-	IL_0128:  callvirt instance void class Bless.Util.Range::set_End(int64)
-	IL_012d:  ldarg.0 
-	IL_012e:  ldc.i4.2 
-	IL_012f:  ldelem.ref 
-	IL_0130:  callvirt instance void class Bless.Util.Range::Clear()
-	IL_0135:  br IL_01b4
+    // method line 74
+    .method public final virtual hidebysig newslot 
+           instance default void Clear ()  cil managed 
+    {
+        // Method begins at RVA 0x2a08
+	// Code size 17 (0x11)
+	.maxstack 8
+	IL_0000:  ldarg.0 
+	IL_0001:  ldc.i4.m1 
+	IL_0002:  conv.i8 
+	IL_0003:  stfld int64 Bless.Util.Range::start
+	IL_0008:  ldarg.0 
+	IL_0009:  ldc.i4.m1 
+	IL_000a:  conv.i8 
+	IL_000b:  stfld int64 Bless.Util.Range::end
+	IL_0010:  ret 
+    } // end of method Range::Clear
 
-	IL_013a:  ldarg.1 
-	IL_013b:  callvirt instance int64 class Bless.Util.Range::get_Start()
-	IL_0140:  ldarg.2 
-	IL_0141:  callvirt instance int64 class Bless.Util.Range::get_Start()
-	IL_0146:  bge IL_0174
+    // method line 75
+    .method public hidebysig 
+           instance default bool Contains (int64 n)  cil managed 
+    {
+        // Method begins at RVA 0x2a1c
+	// Code size 73 (0x49)
+	.maxstack 2
+	IL_0000:  ldarg.0 
+	IL_0001:  ldfld int64 Bless.Util.Range::start
+	IL_0006:  ldarg.0 
+	IL_0007:  ldfld int64 Bless.Util.Range::end
+	IL_000c:  bge IL_002d
 
-	IL_014b:  ldarg.0 
-	IL_014c:  ldc.i4.0 
-	IL_014d:  ldelem.ref 
-	IL_014e:  ldarg.1 
-	IL_014f:  callvirt instance int64 class Bless.Util.Range::get_Start()
-	IL_0154:  callvirt instance void class Bless.Util.Range::set_Start(int64)
-	IL_0159:  ldarg.0 
-	IL_015a:  ldc.i4.0 
-	IL_015b:  ldelem.ref 
-	IL_015c:  ldarg.1 
-	IL_015d:  callvirt instance int64 class Bless.Util.Range::get_End()
-	IL_0162:  callvirt instance void class Bless.Util.Range::set_End(int64)
-	IL_0167:  ldarg.0 
-	IL_0168:  ldc.i4.2 
-	IL_0169:  ldelem.ref 
-	IL_016a:  callvirt instance void class Bless.Util.Range::Clear()
-	IL_016f:  br IL_0198
+	IL_0011:  ldarg.1 
+	IL_0012:  ldarg.0 
+	IL_0013:  ldfld int64 Bless.Util.Range::start
+	IL_0018:  blt IL_002b
 
-	IL_0174:  ldarg.0 
-	IL_0175:  ldc.i4.2 
-	IL_0176:  ldelem.ref 
-	IL_0177:  ldarg.1 
-	IL_0178:  callvirt instance int64 class Bless.Util.Range::get_Start()
-	IL_017d:  callvirt instance void class Bless.Util.Range::set_Start(int64)
-	IL_0182:  ldarg.0 
-	IL_0183:  ldc.i4.2 
-	IL_0184:  ldelem.ref 
-	IL_0185:  ldarg.1 
-	IL_0186:  callvirt instance int64 class Bless.Util.Range::get_End()
-	IL_018b:  callvirt instance void class Bless.Util.Range::set_End(int64)
-	IL_0190:  ldarg.0 
-	IL_0191:  ldc.i4.1 
-	IL_0192:  ldelem.ref 
-	IL_0193:  callvirt instance void class Bless.Util.Range::Clear()
-	IL_0198:  ldarg.0 
-	IL_0199:  ldc.i4.1 
-	IL_019a:  ldelem.ref 
-	IL_019b:  ldarg.2 
-	IL_019c:  callvirt instance int64 class Bless.Util.Range::get_Start()
-	IL_01a1:  callvirt instance void class Bless.Util.Range::set_Start(int64)
-	IL_01a6:  ldarg.0 
-	IL_01a7:  ldc.i4.1 
-	IL_01a8:  ldelem.ref 
-	IL_01a9:  ldarg.2 
-	IL_01aa:  callvirt instance int64 class Bless.Util.Range::get_End()
-	IL_01af:  callvirt instance void class Bless.Util.Range::set_End(int64)
-	IL_01b4:  ldarg.0 
-	IL_01b5:  stloc.1 
-	IL_01b6:  ldc.i4.0 
-	IL_01b7:  stloc.2 
-	IL_01b8:  br IL_01dc
+	IL_001d:  ldarg.1 
+	IL_001e:  ldarg.0 
+	IL_001f:  ldfld int64 Bless.Util.Range::end
+	IL_0024:  cgt 
+	IL_0026:  ldc.i4.0 
+	IL_0027:  ceq 
+	IL_0029:  br.s IL_002c
 
-	IL_01bd:  ldloc.1 
-	IL_01be:  ldloc.2 
-	IL_01bf:  ldelem.ref 
-	IL_01c0:  stloc.0 
-	IL_01c1:  ldloc.0 
-	IL_01c2:  callvirt instance int64 class Bless.Util.Range::get_Start()
-	IL_01c7:  ldloc.0 
-	IL_01c8:  callvirt instance int64 class Bless.Util.Range::get_End()
-	IL_01cd:  ble IL_01d8
+	IL_002b:  ldc.i4.0 
+	IL_002c:  ret 
+	IL_002d:  ldarg.1 
+	IL_002e:  ldarg.0 
+	IL_002f:  ldfld int64 Bless.Util.Range::start
+	IL_0034:  bgt IL_0047
 
-	IL_01d2:  ldloc.0 
-	IL_01d3:  callvirt instance void class Bless.Util.Range::Clear()
-	IL_01d8:  ldloc.2 
-	IL_01d9:  ldc.i4.1 
-	IL_01da:  add 
-	IL_01db:  stloc.2 
-	IL_01dc:  ldloc.2 
-	IL_01dd:  ldloc.1 
-	IL_01de:  ldlen 
-	IL_01df:  conv.i4 
-	IL_01e0:  blt IL_01bd
+	IL_0039:  ldarg.1 
+	IL_003a:  ldarg.0 
+	IL_003b:  ldfld int64 Bless.Util.Range::end
+	IL_0040:  clt 
+	IL_0042:  ldc.i4.0 
+	IL_0043:  ceq 
+	IL_0045:  br.s IL_0048
 
-	IL_01e5:  ret 
-    } // end of method Range::SplitAtomic
+	IL_0047:  ldc.i4.0 
+	IL_0048:  ret 
+    } // end of method Range::Contains
 
-    // method line 71
+    // method line 76
     .method public hidebysig 
-           instance default bool Overlaps (class Bless.Util.IRange r)  cil managed 
+           instance default void Intersect (class Bless.Util.Range sel)  cil managed 
     {
-        // Method begins at RVA 0x37ac
-	// Code size 110 (0x6e)
+        // Method begins at RVA 0x2a74
+	// Code size 155 (0x9b)
 	.maxstack 2
 	IL_0000:  ldarg.1 
-	IL_0001:  callvirt instance int64 class Bless.Util.IRange::get_Start()
+	IL_0001:  callvirt instance int64 class Bless.Util.Range::get_Start()
 	IL_0006:  ldarg.0 
-	IL_0007:  call instance int64 class Bless.Util.Range::get_Start()
-	IL_000c:  blt IL_0024
+	IL_0007:  ldfld int64 Bless.Util.Range::start
+	IL_000c:  blt IL_0050
 
 	IL_0011:  ldarg.1 
-	IL_0012:  callvirt instance int64 class Bless.Util.IRange::get_Start()
+	IL_0012:  callvirt instance int64 class Bless.Util.Range::get_Start()
 	IL_0017:  ldarg.0 
-	IL_0018:  call instance int64 class Bless.Util.Range::get_End()
-	IL_001d:  bgt IL_0024
+	IL_0018:  ldfld int64 Bless.Util.Range::end
+	IL_001d:  bgt IL_0050
 
-	IL_0022:  ldc.i4.1 
-	IL_0023:  ret 
-	IL_0024:  ldarg.1 
-	IL_0025:  callvirt instance int64 class Bless.Util.IRange::get_End()
-	IL_002a:  ldarg.0 
-	IL_002b:  call instance int64 class Bless.Util.Range::get_Start()
-	IL_0030:  blt IL_0048
+	IL_0022:  ldarg.0 
+	IL_0023:  ldarg.1 
+	IL_0024:  callvirt instance int64 class Bless.Util.Range::get_Start()
+	IL_0029:  stfld int64 Bless.Util.Range::start
+	IL_002e:  ldarg.1 
+	IL_002f:  callvirt instance int64 class Bless.Util.Range::get_End()
+	IL_0034:  ldarg.0 
+	IL_0035:  ldfld int64 Bless.Util.Range::end
+	IL_003a:  bge IL_004b
 
-	IL_0035:  ldarg.1 
-	IL_0036:  callvirt instance int64 class Bless.Util.IRange::get_End()
-	IL_003b:  ldarg.0 
-	IL_003c:  call instance int64 class Bless.Util.Range::get_End()
-	IL_0041:  bgt IL_0048
+	IL_003f:  ldarg.0 
+	IL_0040:  ldarg.1 
+	IL_0041:  callvirt instance int64 class Bless.Util.Range::get_End()
+	IL_0046:  stfld int64 Bless.Util.Range::end
+	IL_004b:  br IL_009a
 
-	IL_0046:  ldc.i4.1 
-	IL_0047:  ret 
-	IL_0048:  ldarg.1 
-	IL_0049:  callvirt instance int64 class Bless.Util.IRange::get_Start()
-	IL_004e:  ldarg.0 
-	IL_004f:  call instance int64 class Bless.Util.Range::get_Start()
-	IL_0054:  bgt IL_006c
+	IL_0050:  ldarg.1 
+	IL_0051:  callvirt instance int64 class Bless.Util.Range::get_Start()
+	IL_0056:  ldarg.0 
+	IL_0057:  ldfld int64 Bless.Util.Range::start
+	IL_005c:  bge IL_0094
 
-	IL_0059:  ldarg.1 
-	IL_005a:  callvirt instance int64 class Bless.Util.IRange::get_End()
-	IL_005f:  ldarg.0 
-	IL_0060:  call instance int64 class Bless.Util.Range::get_End()
-	IL_0065:  blt IL_006c
+	IL_0061:  ldarg.1 
+	IL_0062:  callvirt instance int64 class Bless.Util.Range::get_End()
+	IL_0067:  ldarg.0 
+	IL_0068:  ldfld int64 Bless.Util.Range::start
+	IL_006d:  blt IL_0094
 
-	IL_006a:  ldc.i4.1 
-	IL_006b:  ret 
-	IL_006c:  ldc.i4.0 
-	IL_006d:  ret 
-    } // end of method Range::Overlaps
+	IL_0072:  ldarg.1 
+	IL_0073:  callvirt instance int64 class Bless.Util.Range::get_End()
+	IL_0078:  ldarg.0 
+	IL_0079:  ldfld int64 Bless.Util.Range::end
+	IL_007e:  bge IL_008f
 
-    // method line 72
+	IL_0083:  ldarg.0 
+	IL_0084:  ldarg.1 
+	IL_0085:  callvirt instance int64 class Bless.Util.Range::get_End()
+	IL_008a:  stfld int64 Bless.Util.Range::end
+	IL_008f:  br IL_009a
+
+	IL_0094:  ldarg.0 
+	IL_0095:  call instance void class Bless.Util.Range::Clear()
+	IL_009a:  ret 
+    } // end of method Range::Intersect
+
+    // method line 77
     .method public hidebysig 
-           instance default void Sort ()  cil managed 
+           instance default void Difference (class Bless.Util.Range r, class Bless.Util.Range r1)  cil managed 
     {
-        // Method begins at RVA 0x3828
-	// Code size 44 (0x2c)
-	.maxstack 2
-	.locals init (
-		int64	V_0)
-	IL_0000:  ldarg.0 
-	IL_0001:  ldfld int64 Bless.Util.Range::end
+        // Method begins at RVA 0x2b1c
+	// Code size 208 (0xd0)
+	.maxstack 3
+	IL_0000:  ldarg.1 
+	IL_0001:  callvirt instance int64 class Bless.Util.Range::get_Start()
 	IL_0006:  ldarg.0 
 	IL_0007:  ldfld int64 Bless.Util.Range::start
-	IL_000c:  bge IL_002b
+	IL_000c:  ble IL_007c
 
-	IL_0011:  ldarg.0 
-	IL_0012:  ldfld int64 Bless.Util.Range::start
-	IL_0017:  stloc.0 
-	IL_0018:  ldarg.0 
-	IL_0019:  ldarg.0 
-	IL_001a:  ldfld int64 Bless.Util.Range::end
-	IL_001f:  stfld int64 Bless.Util.Range::start
-	IL_0024:  ldarg.0 
-	IL_0025:  ldloc.0 
-	IL_0026:  stfld int64 Bless.Util.Range::end
-	IL_002b:  ret 
-    } // end of method Range::Sort
+	IL_0011:  ldarg.1 
+	IL_0012:  callvirt instance int64 class Bless.Util.Range::get_Start()
+	IL_0017:  ldarg.0 
+	IL_0018:  ldfld int64 Bless.Util.Range::end
+	IL_001d:  bgt IL_007c
 
-    // method line 73
-    .method public virtual hidebysig 
-           instance default string ToString ()  cil managed 
-    {
-        // Method begins at RVA 0x3860
-	// Code size 33 (0x21)
-	.maxstack 8
-	IL_0000:  ldstr "{0} -> {1}"
-	IL_0005:  ldarg.0 
-	IL_0006:  ldfld int64 Bless.Util.Range::start
-	IL_000b:  box [mscorlib]System.Int64
-	IL_0010:  ldarg.0 
-	IL_0011:  ldfld int64 Bless.Util.Range::end
-	IL_0016:  box [mscorlib]System.Int64
-	IL_001b:  call string string::Format(string, object, object)
-	IL_0020:  ret 
-    } // end of method Range::ToString
+	IL_0022:  ldarg.1 
+	IL_0023:  callvirt instance int64 class Bless.Util.Range::get_End()
+	IL_0028:  ldarg.0 
+	IL_0029:  ldfld int64 Bless.Util.Range::end
+	IL_002e:  blt IL_004d
 
-	.property instance int64 Start ()
-	{
-		.get instance default int64 Bless.Util.Range::get_Start () 
-		.set instance default void Bless.Util.Range::set_Start (int64 'value') 
-	}
-	.property instance int64 End ()
-	{
-		.get instance default int64 Bless.Util.Range::get_End () 
-		.set instance default void Bless.Util.Range::set_End (int64 'value') 
-	}
-	.property instance int64 Size ()
-	{
-		.get instance default int64 Bless.Util.Range::get_Size () 
-	}
-  } // end of class Bless.Util.Range
-}
+	IL_0033:  ldarg.0 
+	IL_0034:  ldarg.1 
+	IL_0035:  callvirt instance int64 class Bless.Util.Range::get_Start()
+	IL_003a:  ldc.i4.1 
+	IL_003b:  conv.i8 
+	IL_003c:  sub 
+	IL_003d:  stfld int64 Bless.Util.Range::end
+	IL_0042:  ldarg.2 
+	IL_0043:  callvirt instance void class Bless.Util.Range::Clear()
+	IL_0048:  br IL_0077
 
-.namespace Bless.Util
-{
-  .class public auto ansi beforefieldinit List`1<T>
-  	extends [mscorlib]System.Object
-  	implements class [mscorlib]System.Collections.Generic.IEnumerable`1<!0>, [mscorlib]System.Collections.IEnumerable  {
-    .custom instance void class [mscorlib]System.Reflection.DefaultMemberAttribute::'.ctor'(string) =  (01 00 04 49 74 65 6D 00 00 ) // ...Item..
+	IL_004d:  ldarg.2 
+	IL_004e:  ldarg.1 
+	IL_004f:  callvirt instance int64 class Bless.Util.Range::get_End()
+	IL_0054:  ldc.i4.1 
+	IL_0055:  conv.i8 
+	IL_0056:  add 
+	IL_0057:  callvirt instance void class Bless.Util.Range::set_Start(int64)
+	IL_005c:  ldarg.2 
+	IL_005d:  ldarg.0 
+	IL_005e:  ldfld int64 Bless.Util.Range::end
+	IL_0063:  callvirt instance void class Bless.Util.Range::set_End(int64)
+	IL_0068:  ldarg.0 
+	IL_0069:  ldarg.1 
+	IL_006a:  callvirt instance int64 class Bless.Util.Range::get_Start()
+	IL_006f:  ldc.i4.1 
+	IL_0070:  conv.i8 
+	IL_0071:  sub 
+	IL_0072:  stfld int64 Bless.Util.Range::end
+	IL_0077:  br IL_00cf
 
-    .field  private  class Bless.Util.List`1/Node<!0> m_first
-    .field  private  class Bless.Util.List`1/Node<!0> m_last
-    .field  private  int32 m_count
+	IL_007c:  ldarg.1 
+	IL_007d:  callvirt instance int64 class Bless.Util.Range::get_Start()
+	IL_0082:  ldarg.0 
+	IL_0083:  ldfld int64 Bless.Util.Range::start
+	IL_0088:  bgt IL_00cf
 
-    // method line 74
-    .method public hidebysig specialname rtspecialname 
-           instance default void '.ctor' ()  cil managed 
-    {
-        // Method begins at RVA 0x3882
-	// Code size 21 (0x15)
-	.maxstack 8
-	IL_0000:  ldarg.0 
-	IL_0001:  call instance void object::'.ctor'()
-	IL_0006:  ldarg.0 
-	IL_0007:  ldnull 
-	IL_0008:  stfld class Bless.Util.List`1/Node<!0> class Bless.Util.List`1<!0>::m_first
-	IL_000d:  ldarg.0 
-	IL_000e:  ldnull 
-	IL_000f:  stfld class Bless.Util.List`1/Node<!0> class Bless.Util.List`1<!0>::m_last
-	IL_0014:  ret 
-    } // end of method List`1::.ctor
+	IL_008d:  ldarg.1 
+	IL_008e:  callvirt instance int64 class Bless.Util.Range::get_End()
+	IL_0093:  ldarg.0 
+	IL_0094:  ldfld int64 Bless.Util.Range::start
+	IL_0099:  blt IL_00cf
 
-    // method line 75
-    .method private hidebysig 
-           instance default class Bless.Util.List`1/Node<!T> AddFirst (!T o)  cil managed 
-    {
-        // Method begins at RVA 0x3898
-	// Code size 47 (0x2f)
-	.maxstack 8
-	IL_0000:  ldarg.0 
-	IL_0001:  ldarg.1 
-	IL_0002:  ldnull 
-	IL_0003:  ldnull 
-	IL_0004:  newobj instance void class Bless.Util.List`1/Node<!T>::'.ctor'(!0, class Bless.Util.List`1/Node<!0>, class Bless.Util.List`1/Node<!0>)
-	IL_0009:  stfld class Bless.Util.List`1/Node<!0> class Bless.Util.List`1<!0>::m_first
-	IL_000e:  ldarg.0 
-	IL_000f:  ldarg.0 
-	IL_0010:  ldfld class Bless.Util.List`1/Node<!0> class Bless.Util.List`1<!0>::m_first
-	IL_0015:  stfld class Bless.Util.List`1/Node<!0> class Bless.Util.List`1<!0>::m_last
-	IL_001a:  ldarg.0 
-	IL_001b:  dup 
-	IL_001c:  ldfld int32 class Bless.Util.List`1<!0>::m_count
-	IL_0021:  ldc.i4.1 
-	IL_0022:  add 
-	IL_0023:  stfld int32 class Bless.Util.List`1<!0>::m_count
-	IL_0028:  ldarg.0 
-	IL_0029:  ldfld class Bless.Util.List`1/Node<!0> class Bless.Util.List`1<!0>::m_first
-	IL_002e:  ret 
-    } // end of method List`1::AddFirst
+	IL_009e:  ldarg.2 
+	IL_009f:  callvirt instance void class Bless.Util.Range::Clear()
+	IL_00a4:  ldarg.1 
+	IL_00a5:  callvirt instance int64 class Bless.Util.Range::get_End()
+	IL_00aa:  ldarg.0 
+	IL_00ab:  ldfld int64 Bless.Util.Range::end
+	IL_00b0:  bge IL_00c9
 
-    // method line 76
-    .method public hidebysig 
-           instance default class Bless.Util.List`1/Node<!T> Append (!T o)  cil managed 
+	IL_00b5:  ldarg.0 
+	IL_00b6:  ldarg.1 
+	IL_00b7:  callvirt instance int64 class Bless.Util.Range::get_End()
+	IL_00bc:  ldc.i4.1 
+	IL_00bd:  conv.i8 
+	IL_00be:  add 
+	IL_00bf:  stfld int64 Bless.Util.Range::start
+	IL_00c4:  br IL_00cf
+
+	IL_00c9:  ldarg.0 
+	IL_00ca:  call instance void class Bless.Util.Range::Clear()
+	IL_00cf:  ret 
+    } // end of method Range::Difference
+
+    // method line 78
+    .method public final virtual hidebysig newslot 
+           instance default bool IsEmpty ()  cil managed 
     {
-        // Method begins at RVA 0x38c8
-	// Code size 14 (0xe)
+        // Method begins at RVA 0x2bf8
+	// Code size 27 (0x1b)
 	.maxstack 8
 	IL_0000:  ldarg.0 
-	IL_0001:  ldarg.0 
-	IL_0002:  ldfld class Bless.Util.List`1/Node<!0> class Bless.Util.List`1<!0>::m_last
-	IL_0007:  ldarg.1 
-	IL_0008:  call instance class Bless.Util.List`1/Node<!0> class Bless.Util.List`1<!T>::InsertAfter(class Bless.Util.List`1/Node<!0>, !0)
-	IL_000d:  ret 
-    } // end of method List`1::Append
+	IL_0001:  ldfld int64 Bless.Util.Range::start
+	IL_0006:  ldc.i4.m1 
+	IL_0007:  conv.i8 
+	IL_0008:  bne.un IL_0019
 
-    // method line 77
-    .method public hidebysig 
-           instance default class Bless.Util.List`1/Node<!T> InsertBefore (class Bless.Util.List`1/Node<!T> n, !T o)  cil managed 
+	IL_000d:  ldarg.0 
+	IL_000e:  ldfld int64 Bless.Util.Range::end
+	IL_0013:  ldc.i4.m1 
+	IL_0014:  conv.i8 
+	IL_0015:  ceq 
+	IL_0017:  br.s IL_001a
+
+	IL_0019:  ldc.i4.0 
+	IL_001a:  ret 
+    } // end of method Range::IsEmpty
+
+    // method line 79
+    .method public static hidebysig 
+           default void SplitAtomic (class Bless.Util.Range[] results, class Bless.Util.Range r, class Bless.Util.Range s)  cil managed 
     {
-        // Method begins at RVA 0x38d8
-	// Code size 103 (0x67)
+        // Method begins at RVA 0x2c14
+	// Code size 486 (0x1e6)
 	.maxstack 3
 	.locals init (
-		class Bless.Util.List`1/Node<!T>	V_0)
-	IL_0000:  ldarg.0 
-	IL_0001:  ldfld class Bless.Util.List`1/Node<!0> class Bless.Util.List`1<!0>::m_last
-	IL_0006:  brtrue IL_0013
-
-	IL_000b:  ldarg.0 
-	IL_000c:  ldarg.2 
-	IL_000d:  call instance class Bless.Util.List`1/Node<!0> class Bless.Util.List`1<!T>::AddFirst(!0)
-	IL_0012:  ret 
-	IL_0013:  ldarg.2 
-	IL_0014:  ldarg.1 
-	IL_0015:  ldfld class Bless.Util.List`1/Node<!0> class Bless.Util.List`1/Node<!0>::prev
-	IL_001a:  ldarg.1 
-	IL_001b:  newobj instance void class Bless.Util.List`1/Node<!T>::'.ctor'(!0, class Bless.Util.List`1/Node<!0>, class Bless.Util.List`1/Node<!0>)
-	IL_0020:  stloc.0 
-	IL_0021:  ldarg.1 
-	IL_0022:  ldfld class Bless.Util.List`1/Node<!0> class Bless.Util.List`1/Node<!0>::prev
-	IL_0027:  brfalse IL_0038
-
-	IL_002c:  ldarg.1 
-	IL_002d:  ldfld class Bless.Util.List`1/Node<!0> class Bless.Util.List`1/Node<!0>::prev
-	IL_0032:  ldloc.0 
-	IL_0033:  stfld class Bless.Util.List`1/Node<!0> class Bless.Util.List`1/Node<!0>::next
-	IL_0038:  ldarg.1 
-	IL_0039:  ldloc.0 
-	IL_003a:  stfld class Bless.Util.List`1/Node<!0> class Bless.Util.List`1/Node<!0>::prev
-	IL_003f:  ldarg.1 
-	IL_0040:  ldarg.0 
-	IL_0041:  ldfld class Bless.Util.List`1/Node<!0> class Bless.Util.List`1<!0>::m_first
-	IL_0046:  call bool object::ReferenceEquals(object, object)
-	IL_004b:  brfalse IL_0057
-
-	IL_0050:  ldarg.0 
-	IL_0051:  ldloc.0 
-	IL_0052:  stfld class Bless.Util.List`1/Node<!0> class Bless.Util.List`1<!0>::m_first
-	IL_0057:  ldarg.0 
-	IL_0058:  dup 
-	IL_0059:  ldfld int32 class Bless.Util.List`1<!0>::m_count
-	IL_005e:  ldc.i4.1 
-	IL_005f:  add 
-	IL_0060:  stfld int32 class Bless.Util.List`1<!0>::m_count
-	IL_0065:  ldloc.0 
-	IL_0066:  ret 
-    } // end of method List`1::InsertBefore
-
-    // method line 78
-    .method public hidebysig 
-           instance default class Bless.Util.List`1/Node<!T> InsertAfter (class Bless.Util.List`1/Node<!T> n, !T o)  cil managed 
-    {
-        // Method begins at RVA 0x394c
-	// Code size 103 (0x67)
-	.maxstack 3
-	.locals init (
-		class Bless.Util.List`1/Node<!T>	V_0)
-	IL_0000:  ldarg.0 
-	IL_0001:  ldfld class Bless.Util.List`1/Node<!0> class Bless.Util.List`1<!0>::m_last
-	IL_0006:  brtrue IL_0013
-
-	IL_000b:  ldarg.0 
-	IL_000c:  ldarg.2 
-	IL_000d:  call instance class Bless.Util.List`1/Node<!0> class Bless.Util.List`1<!T>::AddFirst(!0)
-	IL_0012:  ret 
-	IL_0013:  ldarg.2 
-	IL_0014:  ldarg.1 
-	IL_0015:  ldarg.1 
-	IL_0016:  ldfld class Bless.Util.List`1/Node<!0> class Bless.Util.List`1/Node<!0>::next
-	IL_001b:  newobj instance void class Bless.Util.List`1/Node<!T>::'.ctor'(!0, class Bless.Util.List`1/Node<!0>, class Bless.Util.List`1/Node<!0>)
-	IL_0020:  stloc.0 
-	IL_0021:  ldarg.1 
-	IL_0022:  ldfld class Bless.Util.List`1/Node<!0> class Bless.Util.List`1/Node<!0>::next
-	IL_0027:  brfalse IL_0038
-
-	IL_002c:  ldarg.1 
-	IL_002d:  ldfld class Bless.Util.List`1/Node<!0> class Bless.Util.List`1/Node<!0>::next
-	IL_0032:  ldloc.0 
-	IL_0033:  stfld class Bless.Util.List`1/Node<!0> class Bless.Util.List`1/Node<!0>::prev
-	IL_0038:  ldarg.1 
-	IL_0039:  ldloc.0 
-	IL_003a:  stfld class Bless.Util.List`1/Node<!0> class Bless.Util.List`1/Node<!0>::next
-	IL_003f:  ldarg.1 
-	IL_0040:  ldarg.0 
-	IL_0041:  ldfld class Bless.Util.List`1/Node<!0> class Bless.Util.List`1<!0>::m_last
-	IL_0046:  call bool object::ReferenceEquals(object, object)
-	IL_004b:  brfalse IL_0057
-
-	IL_0050:  ldarg.0 
-	IL_0051:  ldloc.0 
-	IL_0052:  stfld class Bless.Util.List`1/Node<!0> class Bless.Util.List`1<!0>::m_last
-	IL_0057:  ldarg.0 
-	IL_0058:  dup 
-	IL_0059:  ldfld int32 class Bless.Util.List`1<!0>::m_count
-	IL_005e:  ldc.i4.1 
-	IL_005f:  add 
-	IL_0060:  stfld int32 class Bless.Util.List`1<!0>::m_count
-	IL_0065:  ldloc.0 
-	IL_0066:  ret 
-    } // end of method List`1::InsertAfter
-
-    // method line 79
-    .method public hidebysig 
-           instance default void Remove (class Bless.Util.List`1/Node<!T> n)  cil managed 
-    {
-        // Method begins at RVA 0x39c0
-	// Code size 143 (0x8f)
-	.maxstack 3
-	IL_0000:  ldarg.1 
-	IL_0001:  ldfld class Bless.Util.List`1/Node<!0> class Bless.Util.List`1/Node<!0>::prev
-	IL_0006:  brfalse IL_001c
-
-	IL_000b:  ldarg.1 
-	IL_000c:  ldfld class Bless.Util.List`1/Node<!0> class Bless.Util.List`1/Node<!0>::prev
-	IL_0011:  ldarg.1 
-	IL_0012:  ldfld class Bless.Util.List`1/Node<!0> class Bless.Util.List`1/Node<!0>::next
-	IL_0017:  stfld class Bless.Util.List`1/Node<!0> class Bless.Util.List`1/Node<!0>::next
-	IL_001c:  ldarg.1 
-	IL_001d:  ldfld class Bless.Util.List`1/Node<!0> class Bless.Util.List`1/Node<!0>::next
-	IL_0022:  brfalse IL_0038
-
-	IL_0027:  ldarg.1 
-	IL_0028:  ldfld class Bless.Util.List`1/Node<!0> class Bless.Util.List`1/Node<!0>::next
-	IL_002d:  ldarg.1 
-	IL_002e:  ldfld class Bless.Util.List`1/Node<!0> class Bless.Util.List`1/Node<!0>::prev
-	IL_0033:  stfld class Bless.Util.List`1/Node<!0> class Bless.Util.List`1/Node<!0>::prev
-	IL_0038:  ldarg.1 
-	IL_0039:  ldarg.0 
-	IL_003a:  ldfld class Bless.Util.List`1/Node<!0> class Bless.Util.List`1<!0>::m_first
-	IL_003f:  call bool object::ReferenceEquals(object, object)
-	IL_0044:  brfalse IL_0055
-
-	IL_0049:  ldarg.0 
-	IL_004a:  ldarg.1 
-	IL_004b:  ldfld class Bless.Util.List`1/Node<!0> class Bless.Util.List`1/Node<!0>::next
-	IL_0050:  stfld class Bless.Util.List`1/Node<!0> class Bless.Util.List`1<!0>::m_first
-	IL_0055:  ldarg.1 
-	IL_0056:  ldarg.0 
-	IL_0057:  ldfld class Bless.Util.List`1/Node<!0> class Bless.Util.List`1<!0>::m_last
-	IL_005c:  call bool object::ReferenceEquals(object, object)
-	IL_0061:  brfalse IL_0072
-
-	IL_0066:  ldarg.0 
-	IL_0067:  ldarg.1 
-	IL_0068:  ldfld class Bless.Util.List`1/Node<!0> class Bless.Util.List`1/Node<!0>::prev
-	IL_006d:  stfld class Bless.Util.List`1/Node<!0> class Bless.Util.List`1<!0>::m_last
-	IL_0072:  ldarg.1 
-	IL_0073:  ldnull 
-	IL_0074:  stfld class Bless.Util.List`1/Node<!0> class Bless.Util.List`1/Node<!0>::next
-	IL_0079:  ldarg.1 
-	IL_007a:  ldnull 
-	IL_007b:  stfld class Bless.Util.List`1/Node<!0> class Bless.Util.List`1/Node<!0>::prev
-	IL_0080:  ldarg.0 
-	IL_0081:  dup 
-	IL_0082:  ldfld int32 class Bless.Util.List`1<!0>::m_count
-	IL_0087:  ldc.i4.1 
-	IL_0088:  sub 
-	IL_0089:  stfld int32 class Bless.Util.List`1<!0>::m_count
-	IL_008e:  ret 
-    } // end of method List`1::Remove
-
-    // method line 80
-    .method public hidebysig specialname 
-           instance default !T get_Item (int32 index)  cil managed 
-    {
-        // Method begins at RVA 0x3a5c
-	// Code size 61 (0x3d)
-	.maxstack 2
-	.locals init (
-		!T	V_0,
-		class Bless.Util.List`1/Node<!T>	V_1,
+		class Bless.Util.Range	V_0,
+		class Bless.Util.Range[]	V_1,
 		int32	V_2)
 	IL_0000:  ldarg.1 
-	IL_0001:  ldarg.0 
-	IL_0002:  ldfld int32 class Bless.Util.List`1<!0>::m_count
-	IL_0007:  ble IL_0016
-
-	IL_000c:  ldloca.s 0
-	IL_000e:  initobj !0
-	IL_0014:  ldloc.0 
-	IL_0015:  ret 
-	IL_0016:  ldarg.0 
-	IL_0017:  ldfld class Bless.Util.List`1/Node<!0> class Bless.Util.List`1<!0>::m_first
-	IL_001c:  stloc.1 
-	IL_001d:  ldc.i4.0 
-	IL_001e:  stloc.2 
-	IL_001f:  br IL_002f
-
-	IL_0024:  ldloc.1 
-	IL_0025:  ldfld class Bless.Util.List`1/Node<!0> class Bless.Util.List`1/Node<!0>::next
-	IL_002a:  stloc.1 
-	IL_002b:  ldloc.2 
-	IL_002c:  ldc.i4.1 
-	IL_002d:  add 
-	IL_002e:  stloc.2 
-	IL_002f:  ldloc.2 
-	IL_0030:  ldarg.1 
-	IL_0031:  blt IL_0024
-
-	IL_0036:  ldloc.1 
-	IL_0037:  ldfld !0 class Bless.Util.List`1/Node<!0>::data
-	IL_003c:  ret 
-    } // end of method List`1::get_Item
-
-    // method line 81
-    .method public final virtual hidebysig newslot 
-           instance default class [mscorlib]System.Collections.Generic.IEnumerator`1<!T> GetEnumerator ()  cil managed 
-    {
-        .custom instance void class [mscorlib]System.Diagnostics.DebuggerHiddenAttribute::'.ctor'() =  (01 00 00 00 ) // ....
-
-        // Method begins at RVA 0x3aa8
-	// Code size 15 (0xf)
-	.maxstack 2
-	.locals init (
-		class Bless.Util.List`1/'<GetEnumerator>c__Iterator0'<!T>	V_0)
-	IL_0000:  newobj instance void class Bless.Util.List`1/'<GetEnumerator>c__Iterator0'<!T>::'.ctor'()
-	IL_0005:  stloc.0 
-	IL_0006:  ldloc.0 
-	IL_0007:  ldarg.0 
-	IL_0008:  stfld class Bless.Util.List`1<!0> class Bless.Util.List`1/'<GetEnumerator>c__Iterator0'<!0>::$this
-	IL_000d:  ldloc.0 
-	IL_000e:  ret 
-    } // end of method List`1::GetEnumerator
-
-    // method line 82
-    .method private final virtual hidebysig newslot 
-           instance default class [mscorlib]System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator ()  cil managed 
-    {
-        // Method begins at RVA 0x3ac3
-	.override Could not decode method override class [mscorlib]System.Collections.IEnumerable::GetEnumerator due to (null)
-	// Code size 7 (0x7)
-	.maxstack 8
-	IL_0000:  ldarg.0 
-	IL_0001:  call instance class [mscorlib]System.Collections.Generic.IEnumerator`1<!0> class Bless.Util.List`1<!T>::GetEnumerator()
-	IL_0006:  ret 
-    } // end of method List`1::System.Collections.IEnumerable.GetEnumerator
-
-    // method line 83
-    .method public hidebysig 
-           instance default void Display ()  cil managed 
-    {
-        // Method begins at RVA 0x3acc
-	// Code size 52 (0x34)
-	.maxstack 2
-	.locals init (
-		class Bless.Util.List`1/Node<!T>	V_0)
-	IL_0000:  ldarg.0 
-	IL_0001:  ldfld class Bless.Util.List`1/Node<!0> class Bless.Util.List`1<!0>::m_first
-	IL_0006:  stloc.0 
-	IL_0007:  br IL_0028
-
-	IL_000c:  ldstr "{0}<=>"
-	IL_0011:  ldloc.0 
-	IL_0012:  ldfld !0 class Bless.Util.List`1/Node<!0>::data
-	IL_0017:  box !0
-	IL_001c:  call void class [mscorlib]System.Console::Write(string, object)
-	IL_0021:  ldloc.0 
-	IL_0022:  ldfld class Bless.Util.List`1/Node<!0> class Bless.Util.List`1/Node<!0>::next
-	IL_0027:  stloc.0 
-	IL_0028:  ldloc.0 
-	IL_0029:  brtrue IL_000c
-
-	IL_002e:  call void class [mscorlib]System.Console::WriteLine()
-	IL_0033:  ret 
-    } // end of method List`1::Display
-
-    // method line 84
-    .method public hidebysig specialname 
-           instance default class Bless.Util.List`1/Node<!T> get_First ()  cil managed 
-    {
-        // Method begins at RVA 0x3b0c
-	// Code size 7 (0x7)
-	.maxstack 8
-	IL_0000:  ldarg.0 
-	IL_0001:  ldfld class Bless.Util.List`1/Node<!0> class Bless.Util.List`1<!0>::m_first
-	IL_0006:  ret 
-    } // end of method List`1::get_First
-
-    // method line 85
-    .method public hidebysig specialname 
-           instance default class Bless.Util.List`1/Node<!T> get_Last ()  cil managed 
-    {
-        // Method begins at RVA 0x3b14
-	// Code size 7 (0x7)
-	.maxstack 8
-	IL_0000:  ldarg.0 
-	IL_0001:  ldfld class Bless.Util.List`1/Node<!0> class Bless.Util.List`1<!0>::m_last
-	IL_0006:  ret 
-    } // end of method List`1::get_Last
+	IL_0001:  ldarg.2 
+	IL_0002:  callvirt instance int64 class Bless.Util.Range::get_Start()
+	IL_0007:  callvirt instance bool class Bless.Util.Range::Contains(int64)
+	IL_000c:  brfalse IL_008e
 
-    // method line 86
-    .method public hidebysig specialname 
-           instance default int32 get_Count ()  cil managed 
-    {
-        // Method begins at RVA 0x3b1c
-	// Code size 7 (0x7)
-	.maxstack 8
-	IL_0000:  ldarg.0 
-	IL_0001:  ldfld int32 class Bless.Util.List`1<!0>::m_count
-	IL_0006:  ret 
-    } // end of method List`1::get_Count
+	IL_0011:  ldarg.0 
+	IL_0012:  ldc.i4.0 
+	IL_0013:  ldelem.ref 
+	IL_0014:  ldarg.1 
+	IL_0015:  callvirt instance int64 class Bless.Util.Range::get_Start()
+	IL_001a:  callvirt instance void class Bless.Util.Range::set_Start(int64)
+	IL_001f:  ldarg.0 
+	IL_0020:  ldc.i4.0 
+	IL_0021:  ldelem.ref 
+	IL_0022:  ldarg.2 
+	IL_0023:  callvirt instance int64 class Bless.Util.Range::get_Start()
+	IL_0028:  ldc.i4.1 
+	IL_0029:  conv.i8 
+	IL_002a:  sub 
+	IL_002b:  callvirt instance void class Bless.Util.Range::set_End(int64)
+	IL_0030:  ldarg.0 
+	IL_0031:  ldc.i4.1 
+	IL_0032:  ldelem.ref 
+	IL_0033:  ldarg.2 
+	IL_0034:  callvirt instance int64 class Bless.Util.Range::get_Start()
+	IL_0039:  callvirt instance void class Bless.Util.Range::set_Start(int64)
+	IL_003e:  ldarg.0 
+	IL_003f:  ldc.i4.1 
+	IL_0040:  ldelem.ref 
+	IL_0041:  ldarg.2 
+	IL_0042:  callvirt instance int64 class Bless.Util.Range::get_End()
+	IL_0047:  callvirt instance void class Bless.Util.Range::set_End(int64)
+	IL_004c:  ldarg.1 
+	IL_004d:  ldarg.2 
+	IL_004e:  callvirt instance int64 class Bless.Util.Range::get_End()
+	IL_0053:  callvirt instance bool class Bless.Util.Range::Contains(int64)
+	IL_0058:  brfalse IL_0081
 
-	.property instance !T Item (int32)
-	{
-		.get instance default !0 Bless.Util.List`1::get_Item (int32 index) 
-	}
-	.property instance class Bless.Util.List`1/Node<!T> First ()
-	{
-		.get instance default class Bless.Util.List`1/Node<!0> Bless.Util.List`1::get_First () 
-	}
-	.property instance class Bless.Util.List`1/Node<!T> Last ()
-	{
-		.get instance default class Bless.Util.List`1/Node<!0> Bless.Util.List`1::get_Last () 
-	}
-	.property instance int32 Count ()
-	{
-		.get instance default int32 Bless.Util.List`1::get_Count () 
-	}
-  .class nested public auto ansi beforefieldinit Node<T>
-  	extends [mscorlib]System.Object
-  {
-    .field  public  !0 data
-    .field  public  class Bless.Util.List`1/Node<!0> next
-    .field  public  class Bless.Util.List`1/Node<!0> prev
+	IL_005d:  ldarg.0 
+	IL_005e:  ldc.i4.2 
+	IL_005f:  ldelem.ref 
+	IL_0060:  ldarg.2 
+	IL_0061:  callvirt instance int64 class Bless.Util.Range::get_End()
+	IL_0066:  ldc.i4.1 
+	IL_0067:  conv.i8 
+	IL_0068:  add 
+	IL_0069:  callvirt instance void class Bless.Util.Range::set_Start(int64)
+	IL_006e:  ldarg.0 
+	IL_006f:  ldc.i4.2 
+	IL_0070:  ldelem.ref 
+	IL_0071:  ldarg.1 
+	IL_0072:  callvirt instance int64 class Bless.Util.Range::get_End()
+	IL_0077:  callvirt instance void class Bless.Util.Range::set_End(int64)
+	IL_007c:  br IL_0089
 
-    // method line 87
-    .method public hidebysig specialname rtspecialname 
-           instance default void '.ctor' (!T d, class Bless.Util.List`1/Node<!T> p, class Bless.Util.List`1/Node<!T> n)  cil managed 
-    {
-        // Method begins at RVA 0x3b24
-	// Code size 28 (0x1c)
-	.maxstack 8
-	IL_0000:  ldarg.0 
-	IL_0001:  call instance void object::'.ctor'()
-	IL_0006:  ldarg.0 
-	IL_0007:  ldarg.1 
-	IL_0008:  stfld !0 class Bless.Util.List`1/Node<!0>::data
-	IL_000d:  ldarg.0 
-	IL_000e:  ldarg.2 
-	IL_000f:  stfld class Bless.Util.List`1/Node<!0> class Bless.Util.List`1/Node<!0>::prev
-	IL_0014:  ldarg.0 
-	IL_0015:  ldarg.3 
-	IL_0016:  stfld class Bless.Util.List`1/Node<!0> class Bless.Util.List`1/Node<!0>::next
-	IL_001b:  ret 
-    } // end of method Node::.ctor
+	IL_0081:  ldarg.0 
+	IL_0082:  ldc.i4.2 
+	IL_0083:  ldelem.ref 
+	IL_0084:  callvirt instance void class Bless.Util.Range::Clear()
+	IL_0089:  br IL_01b4
 
-  } // end of class Node
+	IL_008e:  ldarg.1 
+	IL_008f:  ldarg.2 
+	IL_0090:  callvirt instance int64 class Bless.Util.Range::get_End()
+	IL_0095:  callvirt instance bool class Bless.Util.Range::Contains(int64)
+	IL_009a:  brfalse IL_00e7
 
-  .class nested private auto ansi sealed beforefieldinit '<GetEnumerator>c__Iterator0'<T>
-  	extends [mscorlib]System.Object
-  	implements [mscorlib]System.Collections.IEnumerator, [mscorlib]System.IDisposable, class [mscorlib]System.Collections.Generic.IEnumerator`1<!0>  {
-    .custom instance void class [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::'.ctor'() =  (01 00 00 00 ) // ....
+	IL_009f:  ldarg.0 
+	IL_00a0:  ldc.i4.0 
+	IL_00a1:  ldelem.ref 
+	IL_00a2:  callvirt instance void class Bless.Util.Range::Clear()
+	IL_00a7:  ldarg.0 
+	IL_00a8:  ldc.i4.1 
+	IL_00a9:  ldelem.ref 
+	IL_00aa:  ldarg.2 
+	IL_00ab:  callvirt instance int64 class Bless.Util.Range::get_Start()
+	IL_00b0:  callvirt instance void class Bless.Util.Range::set_Start(int64)
+	IL_00b5:  ldarg.0 
+	IL_00b6:  ldc.i4.1 
+	IL_00b7:  ldelem.ref 
+	IL_00b8:  ldarg.2 
+	IL_00b9:  callvirt instance int64 class Bless.Util.Range::get_End()
+	IL_00be:  callvirt instance void class Bless.Util.Range::set_End(int64)
+	IL_00c3:  ldarg.0 
+	IL_00c4:  ldc.i4.2 
+	IL_00c5:  ldelem.ref 
+	IL_00c6:  ldarg.2 
+	IL_00c7:  callvirt instance int64 class Bless.Util.Range::get_End()
+	IL_00cc:  ldc.i4.1 
+	IL_00cd:  conv.i8 
+	IL_00ce:  add 
+	IL_00cf:  callvirt instance void class Bless.Util.Range::set_Start(int64)
+	IL_00d4:  ldarg.0 
+	IL_00d5:  ldc.i4.2 
+	IL_00d6:  ldelem.ref 
+	IL_00d7:  ldarg.1 
+	IL_00d8:  callvirt instance int64 class Bless.Util.Range::get_End()
+	IL_00dd:  callvirt instance void class Bless.Util.Range::set_End(int64)
+	IL_00e2:  br IL_01b4
 
-    .field  assembly  class Bless.Util.List`1/Node<!0> '<currentNode>__0'
-    .field  assembly  class Bless.Util.List`1<!0> $this
-    .field  assembly  !0 $current
-    .field  assembly  bool $disposing
-    .field  assembly  int32 $PC
+	IL_00e7:  ldarg.2 
+	IL_00e8:  callvirt instance int64 class Bless.Util.Range::get_Start()
+	IL_00ed:  ldarg.1 
+	IL_00ee:  callvirt instance int64 class Bless.Util.Range::get_Start()
+	IL_00f3:  bge IL_013a
 
-    // method line 176
-    .method public hidebysig specialname rtspecialname 
-           instance default void '.ctor' ()  cil managed 
-    {
-        .custom instance void class [mscorlib]System.Diagnostics.DebuggerHiddenAttribute::'.ctor'() =  (01 00 00 00 ) // ....
+	IL_00f8:  ldarg.2 
+	IL_00f9:  callvirt instance int64 class Bless.Util.Range::get_End()
+	IL_00fe:  ldarg.1 
+	IL_00ff:  callvirt instance int64 class Bless.Util.Range::get_End()
+	IL_0104:  ble IL_013a
 
-        // Method begins at RVA 0x3b41
-	// Code size 7 (0x7)
-	.maxstack 8
-	IL_0000:  ldarg.0 
-	IL_0001:  call instance void object::'.ctor'()
-	IL_0006:  ret 
-    } // end of method <GetEnumerator>c__Iterator0::.ctor
+	IL_0109:  ldarg.0 
+	IL_010a:  ldc.i4.0 
+	IL_010b:  ldelem.ref 
+	IL_010c:  callvirt instance void class Bless.Util.Range::Clear()
+	IL_0111:  ldarg.0 
+	IL_0112:  ldc.i4.1 
+	IL_0113:  ldelem.ref 
+	IL_0114:  ldarg.2 
+	IL_0115:  callvirt instance int64 class Bless.Util.Range::get_Start()
+	IL_011a:  callvirt instance void class Bless.Util.Range::set_Start(int64)
+	IL_011f:  ldarg.0 
+	IL_0120:  ldc.i4.1 
+	IL_0121:  ldelem.ref 
+	IL_0122:  ldarg.2 
+	IL_0123:  callvirt instance int64 class Bless.Util.Range::get_End()
+	IL_0128:  callvirt instance void class Bless.Util.Range::set_End(int64)
+	IL_012d:  ldarg.0 
+	IL_012e:  ldc.i4.2 
+	IL_012f:  ldelem.ref 
+	IL_0130:  callvirt instance void class Bless.Util.Range::Clear()
+	IL_0135:  br IL_01b4
 
-    // method line 177
-    .method public final virtual hidebysig newslot 
-           instance default bool MoveNext ()  cil managed 
-    {
-        // Method begins at RVA 0x3b4c
-	// Code size 131 (0x83)
-	.maxstack 2
-	.locals init (
-		unsigned int32	V_0)
-	IL_0000:  ldarg.0 
-	IL_0001:  ldfld int32 class Bless.Util.List`1/'<GetEnumerator>c__Iterator0'<!0>::$PC
-	IL_0006:  stloc.0 
-	IL_0007:  ldarg.0 
-	IL_0008:  ldc.i4.m1 
-	IL_0009:  stfld int32 class Bless.Util.List`1/'<GetEnumerator>c__Iterator0'<!0>::$PC
-	IL_000e:  ldloc.0 
-	IL_000f:  switch (
-	  IL_0021,
-	  IL_005c)
-	IL_001c:  br IL_007f
+	IL_013a:  ldarg.1 
+	IL_013b:  callvirt instance int64 class Bless.Util.Range::get_Start()
+	IL_0140:  ldarg.2 
+	IL_0141:  callvirt instance int64 class Bless.Util.Range::get_Start()
+	IL_0146:  bge IL_0174
 
-	IL_0021:  ldarg.0 
-	IL_0022:  ldarg.0 
-	IL_0023:  ldfld class Bless.Util.List`1<!0> class Bless.Util.List`1/'<GetEnumerator>c__Iterator0'<!0>::$this
-	IL_0028:  call instance class Bless.Util.List`1/Node<!0> class Bless.Util.List`1<!T>::get_First()
-	IL_002d:  stfld class Bless.Util.List`1/Node<!0> class Bless.Util.List`1/'<GetEnumerator>c__Iterator0'<!0>::'<currentNode>__0'
-	IL_0032:  br IL_006d
+	IL_014b:  ldarg.0 
+	IL_014c:  ldc.i4.0 
+	IL_014d:  ldelem.ref 
+	IL_014e:  ldarg.1 
+	IL_014f:  callvirt instance int64 class Bless.Util.Range::get_Start()
+	IL_0154:  callvirt instance void class Bless.Util.Range::set_Start(int64)
+	IL_0159:  ldarg.0 
+	IL_015a:  ldc.i4.0 
+	IL_015b:  ldelem.ref 
+	IL_015c:  ldarg.1 
+	IL_015d:  callvirt instance int64 class Bless.Util.Range::get_End()
+	IL_0162:  callvirt instance void class Bless.Util.Range::set_End(int64)
+	IL_0167:  ldarg.0 
+	IL_0168:  ldc.i4.2 
+	IL_0169:  ldelem.ref 
+	IL_016a:  callvirt instance void class Bless.Util.Range::Clear()
+	IL_016f:  br IL_0198
 
-	IL_0037:  ldarg.0 
-	IL_0038:  ldarg.0 
-	IL_0039:  ldfld class Bless.Util.List`1/Node<!0> class Bless.Util.List`1/'<GetEnumerator>c__Iterator0'<!0>::'<currentNode>__0'
-	IL_003e:  ldfld !0 class Bless.Util.List`1/Node<!0>::data
-	IL_0043:  stfld !0 class Bless.Util.List`1/'<GetEnumerator>c__Iterator0'<!0>::$current
-	IL_0048:  ldarg.0 
-	IL_0049:  ldfld bool class Bless.Util.List`1/'<GetEnumerator>c__Iterator0'<!0>::$disposing
-	IL_004e:  brtrue.s IL_0057
+	IL_0174:  ldarg.0 
+	IL_0175:  ldc.i4.2 
+	IL_0176:  ldelem.ref 
+	IL_0177:  ldarg.1 
+	IL_0178:  callvirt instance int64 class Bless.Util.Range::get_Start()
+	IL_017d:  callvirt instance void class Bless.Util.Range::set_Start(int64)
+	IL_0182:  ldarg.0 
+	IL_0183:  ldc.i4.2 
+	IL_0184:  ldelem.ref 
+	IL_0185:  ldarg.1 
+	IL_0186:  callvirt instance int64 class Bless.Util.Range::get_End()
+	IL_018b:  callvirt instance void class Bless.Util.Range::set_End(int64)
+	IL_0190:  ldarg.0 
+	IL_0191:  ldc.i4.1 
+	IL_0192:  ldelem.ref 
+	IL_0193:  callvirt instance void class Bless.Util.Range::Clear()
+	IL_0198:  ldarg.0 
+	IL_0199:  ldc.i4.1 
+	IL_019a:  ldelem.ref 
+	IL_019b:  ldarg.2 
+	IL_019c:  callvirt instance int64 class Bless.Util.Range::get_Start()
+	IL_01a1:  callvirt instance void class Bless.Util.Range::set_Start(int64)
+	IL_01a6:  ldarg.0 
+	IL_01a7:  ldc.i4.1 
+	IL_01a8:  ldelem.ref 
+	IL_01a9:  ldarg.2 
+	IL_01aa:  callvirt instance int64 class Bless.Util.Range::get_End()
+	IL_01af:  callvirt instance void class Bless.Util.Range::set_End(int64)
+	IL_01b4:  ldarg.0 
+	IL_01b5:  stloc.1 
+	IL_01b6:  ldc.i4.0 
+	IL_01b7:  stloc.2 
+	IL_01b8:  br IL_01dc
 
-	IL_0050:  ldarg.0 
-	IL_0051:  ldc.i4.1 
-	IL_0052:  stfld int32 class Bless.Util.List`1/'<GetEnumerator>c__Iterator0'<!0>::$PC
-	IL_0057:  br IL_0081
+	IL_01bd:  ldloc.1 
+	IL_01be:  ldloc.2 
+	IL_01bf:  ldelem.ref 
+	IL_01c0:  stloc.0 
+	IL_01c1:  ldloc.0 
+	IL_01c2:  callvirt instance int64 class Bless.Util.Range::get_Start()
+	IL_01c7:  ldloc.0 
+	IL_01c8:  callvirt instance int64 class Bless.Util.Range::get_End()
+	IL_01cd:  ble IL_01d8
 
-	IL_005c:  ldarg.0 
-	IL_005d:  ldarg.0 
-	IL_005e:  ldfld class Bless.Util.List`1/Node<!0> class Bless.Util.List`1/'<GetEnumerator>c__Iterator0'<!0>::'<currentNode>__0'
-	IL_0063:  ldfld class Bless.Util.List`1/Node<!0> class Bless.Util.List`1/Node<!0>::next
-	IL_0068:  stfld class Bless.Util.List`1/Node<!0> class Bless.Util.List`1/'<GetEnumerator>c__Iterator0'<!0>::'<currentNode>__0'
-	IL_006d:  ldarg.0 
-	IL_006e:  ldfld class Bless.Util.List`1/Node<!0> class Bless.Util.List`1/'<GetEnumerator>c__Iterator0'<!0>::'<currentNode>__0'
-	IL_0073:  brtrue IL_0037
+	IL_01d2:  ldloc.0 
+	IL_01d3:  callvirt instance void class Bless.Util.Range::Clear()
+	IL_01d8:  ldloc.2 
+	IL_01d9:  ldc.i4.1 
+	IL_01da:  add 
+	IL_01db:  stloc.2 
+	IL_01dc:  ldloc.2 
+	IL_01dd:  ldloc.1 
+	IL_01de:  ldlen 
+	IL_01df:  conv.i4 
+	IL_01e0:  blt IL_01bd
 
-	IL_0078:  ldarg.0 
-	IL_0079:  ldc.i4.m1 
-	IL_007a:  stfld int32 class Bless.Util.List`1/'<GetEnumerator>c__Iterator0'<!0>::$PC
-	IL_007f:  ldc.i4.0 
-	IL_0080:  ret 
-	IL_0081:  ldc.i4.1 
-	IL_0082:  ret 
-    } // end of method <GetEnumerator>c__Iterator0::MoveNext
+	IL_01e5:  ret 
+    } // end of method Range::SplitAtomic
 
-    // method line 178
-    .method private final virtual hidebysig newslot specialname 
-           instance default !T 'System.Collections.Generic.IEnumerator<T>.get_Current' ()  cil managed 
+    // method line 80
+    .method public hidebysig 
+           instance default bool Overlaps (class Bless.Util.IRange r)  cil managed 
     {
-        .custom instance void class [mscorlib]System.Diagnostics.DebuggerHiddenAttribute::'.ctor'() =  (01 00 00 00 ) // ....
+        // Method begins at RVA 0x2e08
+	// Code size 110 (0x6e)
+	.maxstack 2
+	IL_0000:  ldarg.1 
+	IL_0001:  callvirt instance int64 class Bless.Util.IRange::get_Start()
+	IL_0006:  ldarg.0 
+	IL_0007:  call instance int64 class Bless.Util.Range::get_Start()
+	IL_000c:  blt IL_0024
 
-        // Method begins at RVA 0x3bdb
-	.override method instance !0 class [mscorlib]System.Collections.Generic.IEnumerator`1<!T>::get_Current()
-	// Code size 7 (0x7)
-	.maxstack 8
-	IL_0000:  ldarg.0 
-	IL_0001:  ldfld !0 class Bless.Util.List`1/'<GetEnumerator>c__Iterator0'<!0>::$current
-	IL_0006:  ret 
-    } // end of method <GetEnumerator>c__Iterator0::System.Collections.Generic.IEnumerator<T>.get_Current
+	IL_0011:  ldarg.1 
+	IL_0012:  callvirt instance int64 class Bless.Util.IRange::get_Start()
+	IL_0017:  ldarg.0 
+	IL_0018:  call instance int64 class Bless.Util.Range::get_End()
+	IL_001d:  bgt IL_0024
+
+	IL_0022:  ldc.i4.1 
+	IL_0023:  ret 
+	IL_0024:  ldarg.1 
+	IL_0025:  callvirt instance int64 class Bless.Util.IRange::get_End()
+	IL_002a:  ldarg.0 
+	IL_002b:  call instance int64 class Bless.Util.Range::get_Start()
+	IL_0030:  blt IL_0048
+
+	IL_0035:  ldarg.1 
+	IL_0036:  callvirt instance int64 class Bless.Util.IRange::get_End()
+	IL_003b:  ldarg.0 
+	IL_003c:  call instance int64 class Bless.Util.Range::get_End()
+	IL_0041:  bgt IL_0048
 
-    // method line 179
-    .method private final virtual hidebysig newslot specialname 
-           instance default object System.Collections.IEnumerator.get_Current ()  cil managed 
-    {
-        .custom instance void class [mscorlib]System.Diagnostics.DebuggerHiddenAttribute::'.ctor'() =  (01 00 00 00 ) // ....
+	IL_0046:  ldc.i4.1 
+	IL_0047:  ret 
+	IL_0048:  ldarg.1 
+	IL_0049:  callvirt instance int64 class Bless.Util.IRange::get_Start()
+	IL_004e:  ldarg.0 
+	IL_004f:  call instance int64 class Bless.Util.Range::get_Start()
+	IL_0054:  bgt IL_006c
 
-        // Method begins at RVA 0x3be3
-	.override Could not decode method override class [mscorlib]System.Collections.IEnumerator::get_Current due to (null)
-	// Code size 12 (0xc)
-	.maxstack 8
-	IL_0000:  ldarg.0 
-	IL_0001:  ldfld !0 class Bless.Util.List`1/'<GetEnumerator>c__Iterator0'<!0>::$current
-	IL_0006:  box !0
-	IL_000b:  ret 
-    } // end of method <GetEnumerator>c__Iterator0::System.Collections.IEnumerator.get_Current
+	IL_0059:  ldarg.1 
+	IL_005a:  callvirt instance int64 class Bless.Util.IRange::get_End()
+	IL_005f:  ldarg.0 
+	IL_0060:  call instance int64 class Bless.Util.Range::get_End()
+	IL_0065:  blt IL_006c
 
-    // method line 180
-    .method public final virtual hidebysig newslot 
-           instance default void Dispose ()  cil managed 
-    {
-        .custom instance void class [mscorlib]System.Diagnostics.DebuggerHiddenAttribute::'.ctor'() =  (01 00 00 00 ) // ....
+	IL_006a:  ldc.i4.1 
+	IL_006b:  ret 
+	IL_006c:  ldc.i4.0 
+	IL_006d:  ret 
+    } // end of method Range::Overlaps
 
-        // Method begins at RVA 0x3bf0
-	// Code size 15 (0xf)
-	.maxstack 8
+    // method line 81
+    .method public hidebysig 
+           instance default void Sort ()  cil managed 
+    {
+        // Method begins at RVA 0x2e84
+	// Code size 44 (0x2c)
+	.maxstack 2
+	.locals init (
+		int64	V_0)
 	IL_0000:  ldarg.0 
-	IL_0001:  ldc.i4.1 
-	IL_0002:  stfld bool class Bless.Util.List`1/'<GetEnumerator>c__Iterator0'<!0>::$disposing
-	IL_0007:  ldarg.0 
-	IL_0008:  ldc.i4.m1 
-	IL_0009:  stfld int32 class Bless.Util.List`1/'<GetEnumerator>c__Iterator0'<!0>::$PC
-	IL_000e:  ret 
-    } // end of method <GetEnumerator>c__Iterator0::Dispose
+	IL_0001:  ldfld int64 Bless.Util.Range::end
+	IL_0006:  ldarg.0 
+	IL_0007:  ldfld int64 Bless.Util.Range::start
+	IL_000c:  bge IL_002b
 
-    // method line 181
-    .method public final virtual hidebysig newslot 
-           instance default void Reset ()  cil managed 
-    {
-        .custom instance void class [mscorlib]System.Diagnostics.DebuggerHiddenAttribute::'.ctor'() =  (01 00 00 00 ) // ....
+	IL_0011:  ldarg.0 
+	IL_0012:  ldfld int64 Bless.Util.Range::start
+	IL_0017:  stloc.0 
+	IL_0018:  ldarg.0 
+	IL_0019:  ldarg.0 
+	IL_001a:  ldfld int64 Bless.Util.Range::end
+	IL_001f:  stfld int64 Bless.Util.Range::start
+	IL_0024:  ldarg.0 
+	IL_0025:  ldloc.0 
+	IL_0026:  stfld int64 Bless.Util.Range::end
+	IL_002b:  ret 
+    } // end of method Range::Sort
 
-        // Method begins at RVA 0x3c00
-	// Code size 6 (0x6)
+    // method line 82
+    .method public virtual hidebysig 
+           instance default string ToString ()  cil managed 
+    {
+        // Method begins at RVA 0x2ebc
+	// Code size 33 (0x21)
 	.maxstack 8
-	IL_0000:  newobj instance void class [mscorlib]System.NotSupportedException::'.ctor'()
-	IL_0005:  throw 
-    } // end of method <GetEnumerator>c__Iterator0::Reset
+	IL_0000:  ldstr "{0} -> {1}"
+	IL_0005:  ldarg.0 
+	IL_0006:  ldfld int64 Bless.Util.Range::start
+	IL_000b:  box [mscorlib]System.Int64
+	IL_0010:  ldarg.0 
+	IL_0011:  ldfld int64 Bless.Util.Range::end
+	IL_0016:  box [mscorlib]System.Int64
+	IL_001b:  call string string::Format(string, object, object)
+	IL_0020:  ret 
+    } // end of method Range::ToString
 
-	.property instance !T 'System.Collections.Generic.IEnumerator<T>.Current' ()
+	.property instance int64 Start ()
 	{
-		.get instance default !0 Bless.Util.List`1/'<GetEnumerator>c__Iterator0'::'System.Collections.Generic.IEnumerator<T>.get_Current' () 
+		.get instance default int64 Bless.Util.Range::get_Start () 
+		.set instance default void Bless.Util.Range::set_Start (int64 'value') 
 	}
-	.property instance object System.Collections.IEnumerator.Current ()
+	.property instance int64 End ()
 	{
-		.get instance default object Bless.Util.List`1/'<GetEnumerator>c__Iterator0'::System.Collections.IEnumerator.get_Current () 
+		.get instance default int64 Bless.Util.Range::get_End () 
+		.set instance default void Bless.Util.Range::set_End (int64 'value') 
 	}
-  } // end of class <GetEnumerator>c__Iterator0
-
-  } // end of class Bless.Util.List`1
+	.property instance int64 Size ()
+	{
+		.get instance default int64 Bless.Util.Range::get_Size () 
+	}
+  } // end of class Bless.Util.Range
 }
 
 .namespace Bless.Util
@@ -2868,11 +2447,11 @@
     .field  family  object lockObj
     .field  private  class [mscorlib]System.Collections.Generic.IList`1<!1> tmpValues
 
-    // method line 88
+    // method line 83
     .method public hidebysig specialname rtspecialname 
            instance default void '.ctor' ()  cil managed 
     {
-        // Method begins at RVA 0x2050
+        // Method begins at RVA 0x2ede
 	// Code size 29 (0x1d)
 	.maxstack 8
 	IL_0000:  ldarg.0 
@@ -2886,11 +2465,11 @@
 	IL_001c:  ret 
     } // end of method RedBlackTree`2::.ctor
 
-    // method line 89
+    // method line 84
     .method family hidebysig specialname rtspecialname 
            instance default void '.ctor' (class Bless.Util.RedBlackTree`2/INodeFactory<!K, !V> nf)  cil managed 
     {
-        // Method begins at RVA 0x206e
+        // Method begins at RVA 0x2efc
 	// Code size 25 (0x19)
 	.maxstack 8
 	IL_0000:  ldarg.0 
@@ -2904,11 +2483,11 @@
 	IL_0018:  ret 
     } // end of method RedBlackTree`2::.ctor
 
-    // method line 90
+    // method line 85
     .method private hidebysig 
            instance default bool IsRed (class Bless.Util.RedBlackTree`2/INode<!K, !V> n)  cil managed 
     {
-        // Method begins at RVA 0x2088
+        // Method begins at RVA 0x2f16
 	// Code size 18 (0x12)
 	.maxstack 8
 	IL_0000:  ldarg.1 
@@ -2923,11 +2502,11 @@
 	IL_0011:  ret 
     } // end of method RedBlackTree`2::IsRed
 
-    // method line 91
+    // method line 86
     .method family virtual hidebysig newslot 
            instance default class Bless.Util.RedBlackTree`2/INode<!K, !V> RotL (class Bless.Util.RedBlackTree`2/INode<!K, !V> h)  cil managed 
     {
-        // Method begins at RVA 0x209c
+        // Method begins at RVA 0x2f2c
 	// Code size 28 (0x1c)
 	.maxstack 2
 	.locals init (
@@ -2946,11 +2525,11 @@
 	IL_001b:  ret 
     } // end of method RedBlackTree`2::RotL
 
-    // method line 92
+    // method line 87
     .method family virtual hidebysig newslot 
            instance default class Bless.Util.RedBlackTree`2/INode<!K, !V> RotR (class Bless.Util.RedBlackTree`2/INode<!K, !V> h)  cil managed 
     {
-        // Method begins at RVA 0x20c4
+        // Method begins at RVA 0x2f54
 	// Code size 28 (0x1c)
 	.maxstack 2
 	.locals init (
@@ -2969,11 +2548,11 @@
 	IL_001b:  ret 
     } // end of method RedBlackTree`2::RotR
 
-    // method line 93
+    // method line 88
     .method family virtual hidebysig newslot 
            instance default class Bless.Util.RedBlackTree`2/INode<!K, !V> SplitFourNode (class Bless.Util.RedBlackTree`2/INode<!K, !V> h)  cil managed 
     {
-        // Method begins at RVA 0x20ec
+        // Method begins at RVA 0x2f7c
 	// Code size 22 (0x16)
 	.maxstack 2
 	.locals init (
@@ -2990,11 +2569,11 @@
 	IL_0015:  ret 
     } // end of method RedBlackTree`2::SplitFourNode
 
-    // method line 94
+    // method line 89
     .method family virtual hidebysig newslot 
            instance default class Bless.Util.RedBlackTree`2/INode<!K, !V> LeanLeft (class Bless.Util.RedBlackTree`2/INode<!K, !V> h)  cil managed 
     {
-        // Method begins at RVA 0x2110
+        // Method begins at RVA 0x2fa0
 	// Code size 39 (0x27)
 	.maxstack 2
 	.locals init (
@@ -3016,11 +2595,11 @@
 	IL_0026:  ret 
     } // end of method RedBlackTree`2::LeanLeft
 
-    // method line 95
+    // method line 90
     .method family virtual hidebysig newslot 
            instance default class Bless.Util.RedBlackTree`2/INode<!K, !V> LeanRight (class Bless.Util.RedBlackTree`2/INode<!K, !V> h)  cil managed 
     {
-        // Method begins at RVA 0x2144
+        // Method begins at RVA 0x2fd4
 	// Code size 39 (0x27)
 	.maxstack 2
 	.locals init (
@@ -3042,11 +2621,11 @@
 	IL_0026:  ret 
     } // end of method RedBlackTree`2::LeanRight
 
-    // method line 96
+    // method line 91
     .method family hidebysig 
            instance default class Bless.Util.RedBlackTree`2/INode<!K, !V> MoveRedLeft (class Bless.Util.RedBlackTree`2/INode<!K, !V> h)  cil managed 
     {
-        // Method begins at RVA 0x2178
+        // Method begins at RVA 0x3008
 	// Code size 87 (0x57)
 	.maxstack 3
 	IL_0000:  ldarg.1 
@@ -3083,11 +2662,11 @@
 	IL_0056:  ret 
     } // end of method RedBlackTree`2::MoveRedLeft
 
-    // method line 97
+    // method line 92
     .method family hidebysig 
            instance default class Bless.Util.RedBlackTree`2/INode<!K, !V> MoveRedRight (class Bless.Util.RedBlackTree`2/INode<!K, !V> h)  cil managed 
     {
-        // Method begins at RVA 0x21dc
+        // Method begins at RVA 0x306c
 	// Code size 88 (0x58)
 	.maxstack 2
 	IL_0000:  ldarg.1 
@@ -3125,11 +2704,11 @@
 	IL_0057:  ret 
     } // end of method RedBlackTree`2::MoveRedRight
 
-    // method line 98
+    // method line 93
     .method private hidebysig 
            instance default class Bless.Util.RedBlackTree`2/INode<!K, !V> DeleteMin (class Bless.Util.RedBlackTree`2/INode<!K, !V> h)  cil managed 
     {
-        // Method begins at RVA 0x2240
+        // Method begins at RVA 0x30d0
 	// Code size 107 (0x6b)
 	.maxstack 3
 	IL_0000:  ldarg.1 
@@ -3175,11 +2754,11 @@
 	IL_006a:  ret 
     } // end of method RedBlackTree`2::DeleteMin
 
-    // method line 99
+    // method line 94
     .method private hidebysig 
            instance default class Bless.Util.RedBlackTree`2/INode<!K, !V> FindMinNode (class Bless.Util.RedBlackTree`2/INode<!K, !V> h)  cil managed 
     {
-        // Method begins at RVA 0x22b7
+        // Method begins at RVA 0x3147
 	// Code size 26 (0x1a)
 	.maxstack 8
 	IL_0000:  br IL_000d
@@ -3195,11 +2774,11 @@
 	IL_0019:  ret 
     } // end of method RedBlackTree`2::FindMinNode
 
-    // method line 100
+    // method line 95
     .method family virtual hidebysig newslot 
            instance default void AddToValues (class Bless.Util.RedBlackTree`2/INode<!K, !V> n, !V val)  cil managed 
     {
-        // Method begins at RVA 0x22d2
+        // Method begins at RVA 0x3162
 	// Code size 13 (0xd)
 	.maxstack 8
 	IL_0000:  ldarg.1 
@@ -3209,11 +2788,11 @@
 	IL_000c:  ret 
     } // end of method RedBlackTree`2::AddToValues
 
-    // method line 101
+    // method line 96
     .method private hidebysig 
            instance default class Bless.Util.RedBlackTree`2/INode<!K, !V> Insert (class Bless.Util.RedBlackTree`2/INode<!K, !V> h, !K key, !V val)  cil managed 
     {
-        // Method begins at RVA 0x22e0
+        // Method begins at RVA 0x3170
 	// Code size 188 (0xbc)
 	.maxstack 5
 	.locals init (
@@ -3296,11 +2875,11 @@
 	IL_00bb:  ret 
     } // end of method RedBlackTree`2::Insert
 
-    // method line 102
+    // method line 97
     .method public virtual hidebysig newslot 
            instance default void Insert (!K key, !V val)  cil managed 
     {
-        // Method begins at RVA 0x23a8
+        // Method begins at RVA 0x3238
 	// Code size 65 (0x41)
 	.maxstack 5
 	.locals init (
@@ -3341,11 +2920,11 @@
 	IL_0040:  ret 
     } // end of method RedBlackTree`2::Insert
 
-    // method line 103
+    // method line 98
     .method family virtual hidebysig newslot 
            instance default class Bless.Util.RedBlackTree`2/INode<!K, !V> SearchNode (!K key)  cil managed 
     {
-        // Method begins at RVA 0x2408
+        // Method begins at RVA 0x3298
 	// Code size 81 (0x51)
 	.maxstack 2
 	.locals init (
@@ -3390,11 +2969,11 @@
 	IL_0050:  ret 
     } // end of method RedBlackTree`2::SearchNode
 
-    // method line 104
+    // method line 99
     .method public virtual hidebysig newslot 
            instance default class [mscorlib]System.Collections.Generic.IList`1<!V> Search (!K key)  cil managed 
     {
-        // Method begins at RVA 0x2468
+        // Method begins at RVA 0x32f8
 	// Code size 67 (0x43)
 	.maxstack 2
 	.locals init (
@@ -3441,11 +3020,11 @@
 	IL_0042:  ret 
     } // end of method RedBlackTree`2::Search
 
-    // method line 105
+    // method line 100
     .method private hidebysig 
            instance default class Bless.Util.RedBlackTree`2/INode<!K, !V> Delete (class Bless.Util.RedBlackTree`2/INode<!K, !V> h, !K key)  cil managed 
     {
-        // Method begins at RVA 0x24c8
+        // Method begins at RVA 0x3358
 	// Code size 353 (0x161)
 	.maxstack 4
 	.locals init (
@@ -3589,11 +3168,11 @@
 	IL_0160:  ret 
     } // end of method RedBlackTree`2::Delete
 
-    // method line 106
+    // method line 101
     .method public virtual hidebysig newslot 
            instance default void Delete (!K key)  cil managed 
     {
-        // Method begins at RVA 0x2638
+        // Method begins at RVA 0x34c8
 	// Code size 75 (0x4b)
 	.maxstack 4
 	.locals init (
@@ -3637,11 +3216,11 @@
 	IL_004a:  ret 
     } // end of method RedBlackTree`2::Delete
 
-    // method line 107
+    // method line 102
     .method public hidebysig 
            instance default void DumpToDot (string filename, string title)  cil managed 
     {
-        // Method begins at RVA 0x26a0
+        // Method begins at RVA 0x3530
 	// Code size 105 (0x69)
 	.maxstack 3
 	.locals init (
@@ -3696,11 +3275,11 @@
 	IL_0068:  ret 
     } // end of method RedBlackTree`2::DumpToDot
 
-    // method line 108
+    // method line 103
     .method public hidebysig 
            instance default void Clear ()  cil managed 
     {
-        // Method begins at RVA 0x2728
+        // Method begins at RVA 0x35b8
 	// Code size 40 (0x28)
 	.maxstack 2
 	.locals init (
@@ -3732,11 +3311,11 @@
 	IL_0027:  ret 
     } // end of method RedBlackTree`2::Clear
 
-    // method line 109
+    // method line 104
     .method public hidebysig 
            instance default class [mscorlib]System.Collections.Generic.IList`1<!V> GetValues ()  cil managed 
     {
-        // Method begins at RVA 0x276c
+        // Method begins at RVA 0x35fc
 	// Code size 73 (0x49)
 	.maxstack 2
 	.locals init (
@@ -3783,11 +3362,11 @@
 	IL_0048:  ret 
     } // end of method RedBlackTree`2::GetValues
 
-    // method line 110
+    // method line 105
     .method private hidebysig 
            instance default void GetValues (class Bless.Util.RedBlackTree`2/INode<!K, !V> x)  cil managed 
     {
-        // Method begins at RVA 0x27d4
+        // Method begins at RVA 0x3664
 	// Code size 97 (0x61)
 	.maxstack 2
 	.locals init (
@@ -3837,11 +3416,11 @@
 	IL_0060:  ret 
     } // end of method RedBlackTree`2::GetValues
 
-    // method line 111
+    // method line 106
     .method private hidebysig 
            instance default void DumpToDotInternal (class Bless.Util.RedBlackTree`2/INode<!K, !V> h, class [mscorlib]System.Text.StringBuilder sb)  cil managed 
     {
-        // Method begins at RVA 0x2854
+        // Method begins at RVA 0x36e4
 	// Code size 282 (0x11a)
 	.maxstack 5
 	.locals init (
@@ -3970,70 +3549,70 @@
   .class interface nested family auto ansi abstract INode<(class [mscorlib]System.IComparable`1<!K>) K,V>
   {
 
-    // method line 112
+    // method line 107
     .method public virtual hidebysig newslot abstract specialname 
            instance default !K get_Key ()  cil managed 
     {
         // Method begins at RVA 0x0
     } // end of method INode::get_Key
 
-    // method line 113
+    // method line 108
     .method public virtual hidebysig newslot abstract specialname 
            instance default void set_Key (!K 'value')  cil managed 
     {
         // Method begins at RVA 0x0
     } // end of method INode::set_Key
 
-    // method line 114
+    // method line 109
     .method public virtual hidebysig newslot abstract specialname 
            instance default class [mscorlib]System.Collections.Generic.IList`1<!V> get_Values ()  cil managed 
     {
         // Method begins at RVA 0x0
     } // end of method INode::get_Values
 
-    // method line 115
+    // method line 110
     .method public virtual hidebysig newslot abstract specialname 
            instance default void set_Values (class [mscorlib]System.Collections.Generic.IList`1<!V> 'value')  cil managed 
     {
         // Method begins at RVA 0x0
     } // end of method INode::set_Values
 
-    // method line 116
+    // method line 111
     .method public virtual hidebysig newslot abstract specialname 
            instance default class Bless.Util.RedBlackTree`2/INode<!K, !V> get_Left ()  cil managed 
     {
         // Method begins at RVA 0x0
     } // end of method INode::get_Left
 
-    // method line 117
+    // method line 112
     .method public virtual hidebysig newslot abstract specialname 
            instance default void set_Left (class Bless.Util.RedBlackTree`2/INode<!K, !V> 'value')  cil managed 
     {
         // Method begins at RVA 0x0
     } // end of method INode::set_Left
 
-    // method line 118
+    // method line 113
     .method public virtual hidebysig newslot abstract specialname 
            instance default class Bless.Util.RedBlackTree`2/INode<!K, !V> get_Right ()  cil managed 
     {
         // Method begins at RVA 0x0
     } // end of method INode::get_Right
 
-    // method line 119
+    // method line 114
     .method public virtual hidebysig newslot abstract specialname 
            instance default void set_Right (class Bless.Util.RedBlackTree`2/INode<!K, !V> 'value')  cil managed 
     {
         // Method begins at RVA 0x0
     } // end of method INode::set_Right
 
-    // method line 120
+    // method line 115
     .method public virtual hidebysig newslot abstract specialname 
            instance default valuetype Bless.Util.RedBlackTree`2/Color<!K, !V> get_Color ()  cil managed 
     {
         // Method begins at RVA 0x0
     } // end of method INode::get_Color
 
-    // method line 121
+    // method line 116
     .method public virtual hidebysig newslot abstract specialname 
            instance default void set_Color (valuetype Bless.Util.RedBlackTree`2/Color<!K, !V> 'value')  cil managed 
     {
@@ -4070,7 +3649,7 @@
   .class interface nested family auto ansi abstract INodeFactory<(class [mscorlib]System.IComparable`1<!K>) K,V>
   {
 
-    // method line 122
+    // method line 117
     .method public virtual hidebysig newslot abstract 
            instance default class Bless.Util.RedBlackTree`2/INode<!K, !V> CreateNode (!K key, !V val, valuetype Bless.Util.RedBlackTree`2/Color<!K, !V> color)  cil managed 
     {
@@ -4083,11 +3662,11 @@
   	extends [mscorlib]System.Object
   	implements class Bless.Util.RedBlackTree`2/INodeFactory<!0,!1>  {
 
-    // method line 123
+    // method line 118
     .method public hidebysig specialname rtspecialname 
            instance default void '.ctor' ()  cil managed 
     {
-        // Method begins at RVA 0x297a
+        // Method begins at RVA 0x380a
 	// Code size 7 (0x7)
 	.maxstack 8
 	IL_0000:  ldarg.0 
@@ -4095,11 +3674,11 @@
 	IL_0006:  ret 
     } // end of method NodeFactory::.ctor
 
-    // method line 124
+    // method line 119
     .method public final virtual hidebysig newslot 
            instance default class Bless.Util.RedBlackTree`2/INode<!K, !V> CreateNode (!K key, !V val, valuetype Bless.Util.RedBlackTree`2/Color<!K, !V> color)  cil managed 
     {
-        // Method begins at RVA 0x2982
+        // Method begins at RVA 0x3812
 	// Code size 9 (0x9)
 	.maxstack 8
 	IL_0000:  ldarg.1 
@@ -4120,11 +3699,11 @@
     .field  private  class Bless.Util.RedBlackTree`2/INode<!0,!1> right
     .field  private  valuetype Bless.Util.RedBlackTree`2/Color<!0,!1> color
 
-    // method line 125
+    // method line 120
     .method public hidebysig specialname rtspecialname 
            instance default void '.ctor' (!K key, !V val, valuetype Bless.Util.RedBlackTree`2/Color<!K, !V> color)  cil managed 
     {
-        // Method begins at RVA 0x298c
+        // Method begins at RVA 0x381c
 	// Code size 44 (0x2c)
 	.maxstack 8
 	IL_0000:  ldarg.0 
@@ -4145,11 +3724,11 @@
 	IL_002b:  ret 
     } // end of method Node::.ctor
 
-    // method line 126
+    // method line 121
     .method public final virtual hidebysig newslot specialname 
            instance default !K get_Key ()  cil managed 
     {
-        // Method begins at RVA 0x29b9
+        // Method begins at RVA 0x3849
 	// Code size 7 (0x7)
 	.maxstack 8
 	IL_0000:  ldarg.0 
@@ -4157,11 +3736,11 @@
 	IL_0006:  ret 
     } // end of method Node::get_Key
 
-    // method line 127
+    // method line 122
     .method public final virtual hidebysig newslot specialname 
            instance default void set_Key (!K 'value')  cil managed 
     {
-        // Method begins at RVA 0x29c1
+        // Method begins at RVA 0x3851
 	// Code size 8 (0x8)
 	.maxstack 8
 	IL_0000:  ldarg.0 
@@ -4170,11 +3749,11 @@
 	IL_0007:  ret 
     } // end of method Node::set_Key
 
-    // method line 128
+    // method line 123
     .method public final virtual hidebysig newslot specialname 
            instance default class [mscorlib]System.Collections.Generic.IList`1<!V> get_Values ()  cil managed 
     {
-        // Method begins at RVA 0x29ca
+        // Method begins at RVA 0x385a
 	// Code size 7 (0x7)
 	.maxstack 8
 	IL_0000:  ldarg.0 
@@ -4182,11 +3761,11 @@
 	IL_0006:  ret 
     } // end of method Node::get_Values
 
-    // method line 129
+    // method line 124
     .method public final virtual hidebysig newslot specialname 
            instance default void set_Values (class [mscorlib]System.Collections.Generic.IList`1<!V> 'value')  cil managed 
     {
-        // Method begins at RVA 0x29d2
+        // Method begins at RVA 0x3862
 	// Code size 8 (0x8)
 	.maxstack 8
 	IL_0000:  ldarg.0 
@@ -4195,11 +3774,11 @@
 	IL_0007:  ret 
     } // end of method Node::set_Values
 
-    // method line 130
+    // method line 125
     .method public final virtual hidebysig newslot specialname 
            instance default class Bless.Util.RedBlackTree`2/INode<!K, !V> get_Left ()  cil managed 
     {
-        // Method begins at RVA 0x29db
+        // Method begins at RVA 0x386b
 	// Code size 7 (0x7)
 	.maxstack 8
 	IL_0000:  ldarg.0 
@@ -4207,11 +3786,11 @@
 	IL_0006:  ret 
     } // end of method Node::get_Left
 
-    // method line 131
+    // method line 126
     .method public final virtual hidebysig newslot specialname 
            instance default void set_Left (class Bless.Util.RedBlackTree`2/INode<!K, !V> 'value')  cil managed 
     {
-        // Method begins at RVA 0x29e3
+        // Method begins at RVA 0x3873
 	// Code size 8 (0x8)
 	.maxstack 8
 	IL_0000:  ldarg.0 
@@ -4220,11 +3799,11 @@
 	IL_0007:  ret 
     } // end of method Node::set_Left
 
-    // method line 132
+    // method line 127
     .method public final virtual hidebysig newslot specialname 
            instance default class Bless.Util.RedBlackTree`2/INode<!K, !V> get_Right ()  cil managed 
     {
-        // Method begins at RVA 0x29ec
+        // Method begins at RVA 0x387c
 	// Code size 7 (0x7)
 	.maxstack 8
 	IL_0000:  ldarg.0 
@@ -4232,11 +3811,11 @@
 	IL_0006:  ret 
     } // end of method Node::get_Right
 
-    // method line 133
+    // method line 128
     .method public final virtual hidebysig newslot specialname 
            instance default void set_Right (class Bless.Util.RedBlackTree`2/INode<!K, !V> 'value')  cil managed 
     {
-        // Method begins at RVA 0x29f4
+        // Method begins at RVA 0x3884
 	// Code size 8 (0x8)
 	.maxstack 8
 	IL_0000:  ldarg.0 
@@ -4245,11 +3824,11 @@
 	IL_0007:  ret 
     } // end of method Node::set_Right
 
-    // method line 134
+    // method line 129
     .method public final virtual hidebysig newslot specialname 
            instance default valuetype Bless.Util.RedBlackTree`2/Color<!K, !V> get_Color ()  cil managed 
     {
-        // Method begins at RVA 0x29fd
+        // Method begins at RVA 0x388d
 	// Code size 7 (0x7)
 	.maxstack 8
 	IL_0000:  ldarg.0 
@@ -4257,11 +3836,11 @@
 	IL_0006:  ret 
     } // end of method Node::get_Color
 
-    // method line 135
+    // method line 130
     .method public final virtual hidebysig newslot specialname 
            instance default void set_Color (valuetype Bless.Util.RedBlackTree`2/Color<!K, !V> 'value')  cil managed 
     {
-        // Method begins at RVA 0x2a05
+        // Method begins at RVA 0x3895
 	// Code size 8 (0x8)
 	.maxstack 8
 	IL_0000:  ldarg.0 
@@ -4278,52 +3857,26 @@
 	.property instance class [mscorlib]System.Collections.Generic.IList`1<!V> Values ()
 	{
 		.get instance default class [mscorlib]System.Collections.Generic.IList`1<!1> Bless.Util.RedBlackTree`2/Node::get_Values () 
-		.set instance default void Bless.Util.RedBlackTree`2/Node::set_Values (class [mscorlib]System.Collections.Generic.IList`1<!1> 'value') 
-	}
-	.property instance class Bless.Util.RedBlackTree`2/INode<!K, !V> Left ()
-	{
-		.get instance default class Bless.Util.RedBlackTree`2/INode<!0, !1> Bless.Util.RedBlackTree`2/Node::get_Left () 
-		.set instance default void Bless.Util.RedBlackTree`2/Node::set_Left (class Bless.Util.RedBlackTree`2/INode<!0, !1> 'value') 
-	}
-	.property instance class Bless.Util.RedBlackTree`2/INode<!K, !V> Right ()
-	{
-		.get instance default class Bless.Util.RedBlackTree`2/INode<!0, !1> Bless.Util.RedBlackTree`2/Node::get_Right () 
-		.set instance default void Bless.Util.RedBlackTree`2/Node::set_Right (class Bless.Util.RedBlackTree`2/INode<!0, !1> 'value') 
-	}
-	.property instance valuetype Bless.Util.RedBlackTree`2/Color<!K, !V> Color ()
-	{
-		.get instance default valuetype Bless.Util.RedBlackTree`2/Color<!0, !1> Bless.Util.RedBlackTree`2/Node::get_Color () 
-		.set instance default void Bless.Util.RedBlackTree`2/Node::set_Color (valuetype Bless.Util.RedBlackTree`2/Color<!0, !1> 'value') 
-	}
-  } // end of class Node
-
-  } // end of class Bless.Util.RedBlackTree`2
-}
-
-.namespace Bless.Util
-{
-  .class public auto ansi sealed beforefieldinit ConfigureDefines
-  	extends [mscorlib]System.Object
-  {
-    .field public static literal  string LOCALE_DIR = "/usr/share/locale/"
-    .field public static literal  string PACKAGE = "bless"
-    .field public static literal  string VERSION = "0.6.2"
-    .field public static literal  string GETTEXT_PACKAGE = "bless"
-    .field public static literal  string DATADIR = "/usr/share/bless/"
-
-    // method line 136
-    .method public hidebysig specialname rtspecialname 
-           instance default void '.ctor' ()  cil managed 
-    {
-        // Method begins at RVA 0x3c07
-	// Code size 7 (0x7)
-	.maxstack 8
-	IL_0000:  ldarg.0 
-	IL_0001:  call instance void object::'.ctor'()
-	IL_0006:  ret 
-    } // end of method ConfigureDefines::.ctor
+		.set instance default void Bless.Util.RedBlackTree`2/Node::set_Values (class [mscorlib]System.Collections.Generic.IList`1<!1> 'value') 
+	}
+	.property instance class Bless.Util.RedBlackTree`2/INode<!K, !V> Left ()
+	{
+		.get instance default class Bless.Util.RedBlackTree`2/INode<!0, !1> Bless.Util.RedBlackTree`2/Node::get_Left () 
+		.set instance default void Bless.Util.RedBlackTree`2/Node::set_Left (class Bless.Util.RedBlackTree`2/INode<!0, !1> 'value') 
+	}
+	.property instance class Bless.Util.RedBlackTree`2/INode<!K, !V> Right ()
+	{
+		.get instance default class Bless.Util.RedBlackTree`2/INode<!0, !1> Bless.Util.RedBlackTree`2/Node::get_Right () 
+		.set instance default void Bless.Util.RedBlackTree`2/Node::set_Right (class Bless.Util.RedBlackTree`2/INode<!0, !1> 'value') 
+	}
+	.property instance valuetype Bless.Util.RedBlackTree`2/Color<!K, !V> Color ()
+	{
+		.get instance default valuetype Bless.Util.RedBlackTree`2/Color<!0, !1> Bless.Util.RedBlackTree`2/Node::get_Color () 
+		.set instance default void Bless.Util.RedBlackTree`2/Node::set_Color (valuetype Bless.Util.RedBlackTree`2/Color<!0, !1> 'value') 
+	}
+  } // end of class Node
 
-  } // end of class Bless.Util.ConfigureDefines
+  } // end of class Bless.Util.RedBlackTree`2
 }
 
 .namespace Bless.Util
@@ -4333,11 +3886,11 @@
   {
     .field  public static  int32[] DefaultMinDigits
 
-    // method line 137
+    // method line 131
     .method private hidebysig specialname rtspecialname 
            instance default void '.ctor' ()  cil managed 
     {
-        // Method begins at RVA 0x3c0f
+        // Method begins at RVA 0x389e
 	// Code size 7 (0x7)
 	.maxstack 8
 	IL_0000:  ldarg.0 
@@ -4345,11 +3898,11 @@
 	IL_0006:  ret 
     } // end of method BaseConverter::.ctor
 
-    // method line 138
+    // method line 132
     .method public static hidebysig 
            default string ConvertToString (int64 num, int32 b)  cil managed 
     {
-        // Method begins at RVA 0x3c17
+        // Method begins at RVA 0x38a6
 	// Code size 11 (0xb)
 	.maxstack 8
 	IL_0000:  ldarg.0 
@@ -4361,11 +3914,11 @@
 	IL_000a:  ret 
     } // end of method BaseConverter::ConvertToString
 
-    // method line 139
+    // method line 133
     .method public static hidebysig 
            default string ConvertToString (int64 num, int32 b, bool prependPrefix, bool lowercase, int32 minDigits)  cil managed 
     {
-        // Method begins at RVA 0x3c24
+        // Method begins at RVA 0x38b4
 	// Code size 221 (0xdd)
 	.maxstack 4
 	.locals init (
@@ -4435,1032 +3988,1479 @@
 	IL_0065:  conv.i8 
 	IL_0066:  bgt IL_002e
 
-	IL_006b:  ldarg.s 4
-	IL_006d:  brtrue IL_007b
+	IL_006b:  ldarg.s 4
+	IL_006d:  brtrue IL_007b
+
+	IL_0072:  ldsfld int32[] Bless.Util.BaseConverter::DefaultMinDigits
+	IL_0077:  ldarg.1 
+	IL_0078:  ldelem.i4 
+	IL_0079:  starg.s 4
+	IL_007b:  br IL_008a
+
+	IL_0080:  ldloc.0 
+	IL_0081:  ldc.i4.0 
+	IL_0082:  ldc.i4.s 0x30
+	IL_0084:  callvirt instance class [mscorlib]System.Text.StringBuilder class [mscorlib]System.Text.StringBuilder::Insert(int32, char)
+	IL_0089:  pop 
+	IL_008a:  ldloc.0 
+	IL_008b:  callvirt instance int32 class [mscorlib]System.Text.StringBuilder::get_Length()
+	IL_0090:  ldarg.s 4
+	IL_0092:  blt IL_0080
+
+	IL_0097:  ldarg.2 
+	IL_0098:  brfalse IL_00d6
+
+	IL_009d:  ldarg.1 
+	IL_009e:  ldc.i4.s 0x10
+	IL_00a0:  bne.un IL_00b7
+
+	IL_00a5:  ldloc.0 
+	IL_00a6:  ldc.i4.0 
+	IL_00a7:  ldstr "0x"
+	IL_00ac:  callvirt instance class [mscorlib]System.Text.StringBuilder class [mscorlib]System.Text.StringBuilder::Insert(int32, string)
+	IL_00b1:  pop 
+	IL_00b2:  br IL_00d6
+
+	IL_00b7:  ldarg.1 
+	IL_00b8:  ldc.i4.8 
+	IL_00b9:  bne.un IL_00d6
+
+	IL_00be:  ldloc.0 
+	IL_00bf:  ldc.i4.0 
+	IL_00c0:  callvirt instance char class [mscorlib]System.Text.StringBuilder::get_Chars(int32)
+	IL_00c5:  ldc.i4.s 0x30
+	IL_00c7:  beq IL_00d6
+
+	IL_00cc:  ldloc.0 
+	IL_00cd:  ldc.i4.0 
+	IL_00ce:  ldc.i4.s 0x30
+	IL_00d0:  callvirt instance class [mscorlib]System.Text.StringBuilder class [mscorlib]System.Text.StringBuilder::Insert(int32, char)
+	IL_00d5:  pop 
+	IL_00d6:  ldloc.0 
+	IL_00d7:  callvirt instance string object::ToString()
+	IL_00dc:  ret 
+    } // end of method BaseConverter::ConvertToString
+
+    // method line 134
+    .method private static hidebysig 
+           default int32 CharToInt (char c, int32 b)  cil managed 
+    {
+        // Method begins at RVA 0x39a0
+	// Code size 109 (0x6d)
+	.maxstack 3
+	.locals init (
+		int32	V_0)
+	IL_0000:  ldc.i4.m1 
+	IL_0001:  stloc.0 
+	IL_0002:  ldarg.0 
+	IL_0003:  ldc.i4.s 0x30
+	IL_0005:  blt IL_001c
+
+	IL_000a:  ldarg.0 
+	IL_000b:  ldc.i4.s 0x39
+	IL_000d:  bgt IL_001c
+
+	IL_0012:  ldarg.0 
+	IL_0013:  ldc.i4.s 0x30
+	IL_0015:  sub 
+	IL_0016:  stloc.0 
+	IL_0017:  br IL_003c
+
+	IL_001c:  ldarg.0 
+	IL_001d:  call char char::ToLower(char)
+	IL_0022:  starg.s 0
+	IL_0024:  ldarg.0 
+	IL_0025:  ldc.i4.s 0x61
+	IL_0027:  blt IL_003c
+
+	IL_002c:  ldarg.0 
+	IL_002d:  ldc.i4.s 0x66
+	IL_002f:  bgt IL_003c
+
+	IL_0034:  ldarg.0 
+	IL_0035:  ldc.i4.s 0x61
+	IL_0037:  sub 
+	IL_0038:  ldc.i4.s 0x0a
+	IL_003a:  add 
+	IL_003b:  stloc.0 
+	IL_003c:  ldloc.0 
+	IL_003d:  ldarg.1 
+	IL_003e:  bge IL_004a
+
+	IL_0043:  ldloc.0 
+	IL_0044:  ldc.i4.m1 
+	IL_0045:  bne.un IL_006b
+
+	IL_004a:  ldstr "Character '{0}' is not valid in a number of base {1}."
+	IL_004f:  call string class [Mono.Posix]Mono.Unix.Catalog::GetString(string)
+	IL_0054:  ldarg.0 
+	IL_0055:  box [mscorlib]System.Char
+	IL_005a:  ldarg.1 
+	IL_005b:  box [mscorlib]System.Int32
+	IL_0060:  call string string::Format(string, object, object)
+	IL_0065:  newobj instance void class [mscorlib]System.FormatException::'.ctor'(string)
+	IL_006a:  throw 
+	IL_006b:  ldloc.0 
+	IL_006c:  ret 
+    } // end of method BaseConverter::CharToInt
+
+    // method line 135
+    .method public static hidebysig 
+           default int64 ConvertToNum (string s, int32 startIndex, int32 endIndex, int32 b)  cil managed 
+    {
+        // Method begins at RVA 0x3a1c
+	// Code size 43 (0x2b)
+	.maxstack 3
+	.locals init (
+		int64	V_0,
+		int32	V_1)
+	IL_0000:  ldc.i4.0 
+	IL_0001:  conv.i8 
+	IL_0002:  stloc.0 
+	IL_0003:  ldarg.1 
+	IL_0004:  stloc.1 
+	IL_0005:  br IL_0022
+
+	IL_000a:  ldarg.3 
+	IL_000b:  conv.i8 
+	IL_000c:  ldloc.0 
+	IL_000d:  mul 
+	IL_000e:  ldarg.0 
+	IL_000f:  ldloc.1 
+	IL_0010:  callvirt instance char string::get_Chars(int32)
+	IL_0015:  ldarg.3 
+	IL_0016:  call int32 class Bless.Util.BaseConverter::CharToInt(char, int32)
+	IL_001b:  conv.i8 
+	IL_001c:  add 
+	IL_001d:  stloc.0 
+	IL_001e:  ldloc.1 
+	IL_001f:  ldc.i4.1 
+	IL_0020:  add 
+	IL_0021:  stloc.1 
+	IL_0022:  ldloc.1 
+	IL_0023:  ldarg.2 
+	IL_0024:  ble IL_000a
+
+	IL_0029:  ldloc.0 
+	IL_002a:  ret 
+    } // end of method BaseConverter::ConvertToNum
+
+    // method line 136
+    .method public static hidebysig 
+           default int64 ConvertToNum (string s, int32 b)  cil managed 
+    {
+        // Method begins at RVA 0x3a53
+	// Code size 17 (0x11)
+	.maxstack 8
+	IL_0000:  ldarg.0 
+	IL_0001:  ldc.i4.0 
+	IL_0002:  ldarg.0 
+	IL_0003:  callvirt instance int32 string::get_Length()
+	IL_0008:  ldc.i4.1 
+	IL_0009:  sub 
+	IL_000a:  ldarg.1 
+	IL_000b:  call int64 class Bless.Util.BaseConverter::ConvertToNum(string, int32, int32, int32)
+	IL_0010:  ret 
+    } // end of method BaseConverter::ConvertToNum
+
+    // method line 137
+    .method public static hidebysig 
+           default int64 Parse (string s)  cil managed 
+    {
+        // Method begins at RVA 0x3a68
+	// Code size 135 (0x87)
+	.maxstack 4
+	.locals init (
+		string	V_0,
+		int32	V_1,
+		int32	V_2)
+	IL_0000:  ldarg.0 
+	IL_0001:  callvirt instance string string::Trim()
+	IL_0006:  stloc.0 
+	IL_0007:  ldc.i4.0 
+	IL_0008:  stloc.1 
+	IL_0009:  ldloc.0 
+	IL_000a:  callvirt instance int32 string::get_Length()
+	IL_000f:  stloc.2 
+	IL_0010:  ldloc.2 
+	IL_0011:  brtrue IL_0026
+
+	IL_0016:  ldstr "The string to parse is empty."
+	IL_001b:  call string class [Mono.Posix]Mono.Unix.Catalog::GetString(string)
+	IL_0020:  newobj instance void class [mscorlib]System.FormatException::'.ctor'(string)
+	IL_0025:  throw 
+	IL_0026:  ldloc.1 
+	IL_0027:  ldc.i4.1 
+	IL_0028:  add 
+	IL_0029:  ldloc.2 
+	IL_002a:  bge IL_0061
+
+	IL_002f:  ldloc.0 
+	IL_0030:  ldloc.1 
+	IL_0031:  callvirt instance char string::get_Chars(int32)
+	IL_0036:  ldc.i4.s 0x30
+	IL_0038:  bne.un IL_0061
+
+	IL_003d:  ldloc.0 
+	IL_003e:  ldloc.1 
+	IL_003f:  ldc.i4.1 
+	IL_0040:  add 
+	IL_0041:  callvirt instance char string::get_Chars(int32)
+	IL_0046:  ldc.i4.s 0x78
+	IL_0048:  bne.un IL_0061
+
+	IL_004d:  ldloc.0 
+	IL_004e:  ldloc.1 
+	IL_004f:  ldc.i4.2 
+	IL_0050:  add 
+	IL_0051:  ldloc.0 
+	IL_0052:  callvirt instance int32 string::get_Length()
+	IL_0057:  ldc.i4.1 
+	IL_0058:  sub 
+	IL_0059:  ldc.i4.s 0x10
+	IL_005b:  call int64 class Bless.Util.BaseConverter::ConvertToNum(string, int32, int32, int32)
+	IL_0060:  ret 
+	IL_0061:  ldloc.1 
+	IL_0062:  ldloc.2 
+	IL_0063:  bge IL_007e
+
+	IL_0068:  ldloc.0 
+	IL_0069:  ldloc.1 
+	IL_006a:  callvirt instance char string::get_Chars(int32)
+	IL_006f:  ldc.i4.s 0x30
+	IL_0071:  bne.un IL_007e
 
-	IL_0072:  ldsfld int32[] Bless.Util.BaseConverter::DefaultMinDigits
-	IL_0077:  ldarg.1 
-	IL_0078:  ldelem.i4 
-	IL_0079:  starg.s 4
-	IL_007b:  br IL_008a
+	IL_0076:  ldloc.0 
+	IL_0077:  ldc.i4.8 
+	IL_0078:  call int64 class Bless.Util.BaseConverter::ConvertToNum(string, int32)
+	IL_007d:  ret 
+	IL_007e:  ldloc.0 
+	IL_007f:  ldc.i4.s 0x0a
+	IL_0081:  call int64 class Bless.Util.BaseConverter::ConvertToNum(string, int32)
+	IL_0086:  ret 
+    } // end of method BaseConverter::Parse
 
-	IL_0080:  ldloc.0 
-	IL_0081:  ldc.i4.0 
-	IL_0082:  ldc.i4.s 0x30
-	IL_0084:  callvirt instance class [mscorlib]System.Text.StringBuilder class [mscorlib]System.Text.StringBuilder::Insert(int32, char)
-	IL_0089:  pop 
-	IL_008a:  ldloc.0 
-	IL_008b:  callvirt instance int32 class [mscorlib]System.Text.StringBuilder::get_Length()
-	IL_0090:  ldarg.s 4
-	IL_0092:  blt IL_0080
+    // method line 138
+    .method private static hidebysig specialname rtspecialname 
+           default void '.cctor' ()  cil managed 
+    {
+        // Method begins at RVA 0x3afb
+	// Code size 24 (0x18)
+	.maxstack 8
+	IL_0000:  ldc.i4.s 0x11
+	IL_0002:  newarr [mscorlib]System.Int32
+	IL_0007:  dup 
+	IL_0008:  ldtoken field valuetype '<PrivateImplementationDetails>'/'$ArrayType=68' '<PrivateImplementationDetails>'::'$field-D442AC57A7E324FE61ED421E827DE44EBE129B07'
+	IL_000d:  call void class [mscorlib]System.Runtime.CompilerServices.RuntimeHelpers::InitializeArray(class [mscorlib]System.Array, valuetype [mscorlib]System.RuntimeFieldHandle)
+	IL_0012:  stsfld int32[] Bless.Util.BaseConverter::DefaultMinDigits
+	IL_0017:  ret 
+    } // end of method BaseConverter::.cctor
 
-	IL_0097:  ldarg.2 
-	IL_0098:  brfalse IL_00d6
+  } // end of class Bless.Util.BaseConverter
+}
 
-	IL_009d:  ldarg.1 
-	IL_009e:  ldc.i4.s 0x10
-	IL_00a0:  bne.un IL_00b7
+.namespace Bless.Util
+{
+  .class public auto ansi beforefieldinit List`1<T>
+  	extends [mscorlib]System.Object
+  	implements class [mscorlib]System.Collections.Generic.IEnumerable`1<!0>, [mscorlib]System.Collections.IEnumerable  {
+    .custom instance void class [mscorlib]System.Reflection.DefaultMemberAttribute::'.ctor'(string) =  (01 00 04 49 74 65 6D 00 00 ) // ...Item..
 
-	IL_00a5:  ldloc.0 
-	IL_00a6:  ldc.i4.0 
-	IL_00a7:  ldstr "0x"
-	IL_00ac:  callvirt instance class [mscorlib]System.Text.StringBuilder class [mscorlib]System.Text.StringBuilder::Insert(int32, string)
-	IL_00b1:  pop 
-	IL_00b2:  br IL_00d6
+    .field  private  class Bless.Util.List`1/Node<!0> m_first
+    .field  private  class Bless.Util.List`1/Node<!0> m_last
+    .field  private  int32 m_count
 
-	IL_00b7:  ldarg.1 
-	IL_00b8:  ldc.i4.8 
-	IL_00b9:  bne.un IL_00d6
+    // method line 139
+    .method public hidebysig specialname rtspecialname 
+           instance default void '.ctor' ()  cil managed 
+    {
+        // Method begins at RVA 0x3b14
+	// Code size 21 (0x15)
+	.maxstack 8
+	IL_0000:  ldarg.0 
+	IL_0001:  call instance void object::'.ctor'()
+	IL_0006:  ldarg.0 
+	IL_0007:  ldnull 
+	IL_0008:  stfld class Bless.Util.List`1/Node<!0> class Bless.Util.List`1<!0>::m_first
+	IL_000d:  ldarg.0 
+	IL_000e:  ldnull 
+	IL_000f:  stfld class Bless.Util.List`1/Node<!0> class Bless.Util.List`1<!0>::m_last
+	IL_0014:  ret 
+    } // end of method List`1::.ctor
 
-	IL_00be:  ldloc.0 
-	IL_00bf:  ldc.i4.0 
-	IL_00c0:  callvirt instance char class [mscorlib]System.Text.StringBuilder::get_Chars(int32)
-	IL_00c5:  ldc.i4.s 0x30
-	IL_00c7:  beq IL_00d6
+    // method line 140
+    .method private hidebysig 
+           instance default class Bless.Util.List`1/Node<!T> AddFirst (!T o)  cil managed 
+    {
+        // Method begins at RVA 0x3b2a
+	// Code size 47 (0x2f)
+	.maxstack 8
+	IL_0000:  ldarg.0 
+	IL_0001:  ldarg.1 
+	IL_0002:  ldnull 
+	IL_0003:  ldnull 
+	IL_0004:  newobj instance void class Bless.Util.List`1/Node<!T>::'.ctor'(!0, class Bless.Util.List`1/Node<!0>, class Bless.Util.List`1/Node<!0>)
+	IL_0009:  stfld class Bless.Util.List`1/Node<!0> class Bless.Util.List`1<!0>::m_first
+	IL_000e:  ldarg.0 
+	IL_000f:  ldarg.0 
+	IL_0010:  ldfld class Bless.Util.List`1/Node<!0> class Bless.Util.List`1<!0>::m_first
+	IL_0015:  stfld class Bless.Util.List`1/Node<!0> class Bless.Util.List`1<!0>::m_last
+	IL_001a:  ldarg.0 
+	IL_001b:  dup 
+	IL_001c:  ldfld int32 class Bless.Util.List`1<!0>::m_count
+	IL_0021:  ldc.i4.1 
+	IL_0022:  add 
+	IL_0023:  stfld int32 class Bless.Util.List`1<!0>::m_count
+	IL_0028:  ldarg.0 
+	IL_0029:  ldfld class Bless.Util.List`1/Node<!0> class Bless.Util.List`1<!0>::m_first
+	IL_002e:  ret 
+    } // end of method List`1::AddFirst
 
-	IL_00cc:  ldloc.0 
-	IL_00cd:  ldc.i4.0 
-	IL_00ce:  ldc.i4.s 0x30
-	IL_00d0:  callvirt instance class [mscorlib]System.Text.StringBuilder class [mscorlib]System.Text.StringBuilder::Insert(int32, char)
-	IL_00d5:  pop 
-	IL_00d6:  ldloc.0 
-	IL_00d7:  callvirt instance string object::ToString()
-	IL_00dc:  ret 
-    } // end of method BaseConverter::ConvertToString
+    // method line 141
+    .method public hidebysig 
+           instance default class Bless.Util.List`1/Node<!T> Append (!T o)  cil managed 
+    {
+        // Method begins at RVA 0x3b5a
+	// Code size 14 (0xe)
+	.maxstack 8
+	IL_0000:  ldarg.0 
+	IL_0001:  ldarg.0 
+	IL_0002:  ldfld class Bless.Util.List`1/Node<!0> class Bless.Util.List`1<!0>::m_last
+	IL_0007:  ldarg.1 
+	IL_0008:  call instance class Bless.Util.List`1/Node<!0> class Bless.Util.List`1<!T>::InsertAfter(class Bless.Util.List`1/Node<!0>, !0)
+	IL_000d:  ret 
+    } // end of method List`1::Append
 
-    // method line 140
-    .method private static hidebysig 
-           default int32 CharToInt (char c, int32 b)  cil managed 
+    // method line 142
+    .method public hidebysig 
+           instance default class Bless.Util.List`1/Node<!T> InsertBefore (class Bless.Util.List`1/Node<!T> n, !T o)  cil managed 
     {
-        // Method begins at RVA 0x3d10
-	// Code size 109 (0x6d)
+        // Method begins at RVA 0x3b6c
+	// Code size 103 (0x67)
 	.maxstack 3
 	.locals init (
-		int32	V_0)
-	IL_0000:  ldc.i4.m1 
-	IL_0001:  stloc.0 
-	IL_0002:  ldarg.0 
-	IL_0003:  ldc.i4.s 0x30
-	IL_0005:  blt IL_001c
+		class Bless.Util.List`1/Node<!T>	V_0)
+	IL_0000:  ldarg.0 
+	IL_0001:  ldfld class Bless.Util.List`1/Node<!0> class Bless.Util.List`1<!0>::m_last
+	IL_0006:  brtrue IL_0013
 
-	IL_000a:  ldarg.0 
-	IL_000b:  ldc.i4.s 0x39
-	IL_000d:  bgt IL_001c
+	IL_000b:  ldarg.0 
+	IL_000c:  ldarg.2 
+	IL_000d:  call instance class Bless.Util.List`1/Node<!0> class Bless.Util.List`1<!T>::AddFirst(!0)
+	IL_0012:  ret 
+	IL_0013:  ldarg.2 
+	IL_0014:  ldarg.1 
+	IL_0015:  ldfld class Bless.Util.List`1/Node<!0> class Bless.Util.List`1/Node<!0>::prev
+	IL_001a:  ldarg.1 
+	IL_001b:  newobj instance void class Bless.Util.List`1/Node<!T>::'.ctor'(!0, class Bless.Util.List`1/Node<!0>, class Bless.Util.List`1/Node<!0>)
+	IL_0020:  stloc.0 
+	IL_0021:  ldarg.1 
+	IL_0022:  ldfld class Bless.Util.List`1/Node<!0> class Bless.Util.List`1/Node<!0>::prev
+	IL_0027:  brfalse IL_0038
 
-	IL_0012:  ldarg.0 
-	IL_0013:  ldc.i4.s 0x30
-	IL_0015:  sub 
-	IL_0016:  stloc.0 
-	IL_0017:  br IL_003c
+	IL_002c:  ldarg.1 
+	IL_002d:  ldfld class Bless.Util.List`1/Node<!0> class Bless.Util.List`1/Node<!0>::prev
+	IL_0032:  ldloc.0 
+	IL_0033:  stfld class Bless.Util.List`1/Node<!0> class Bless.Util.List`1/Node<!0>::next
+	IL_0038:  ldarg.1 
+	IL_0039:  ldloc.0 
+	IL_003a:  stfld class Bless.Util.List`1/Node<!0> class Bless.Util.List`1/Node<!0>::prev
+	IL_003f:  ldarg.1 
+	IL_0040:  ldarg.0 
+	IL_0041:  ldfld class Bless.Util.List`1/Node<!0> class Bless.Util.List`1<!0>::m_first
+	IL_0046:  call bool object::ReferenceEquals(object, object)
+	IL_004b:  brfalse IL_0057
 
-	IL_001c:  ldarg.0 
-	IL_001d:  call char char::ToLower(char)
-	IL_0022:  starg.s 0
-	IL_0024:  ldarg.0 
-	IL_0025:  ldc.i4.s 0x61
-	IL_0027:  blt IL_003c
+	IL_0050:  ldarg.0 
+	IL_0051:  ldloc.0 
+	IL_0052:  stfld class Bless.Util.List`1/Node<!0> class Bless.Util.List`1<!0>::m_first
+	IL_0057:  ldarg.0 
+	IL_0058:  dup 
+	IL_0059:  ldfld int32 class Bless.Util.List`1<!0>::m_count
+	IL_005e:  ldc.i4.1 
+	IL_005f:  add 
+	IL_0060:  stfld int32 class Bless.Util.List`1<!0>::m_count
+	IL_0065:  ldloc.0 
+	IL_0066:  ret 
+    } // end of method List`1::InsertBefore
 
-	IL_002c:  ldarg.0 
-	IL_002d:  ldc.i4.s 0x66
-	IL_002f:  bgt IL_003c
+    // method line 143
+    .method public hidebysig 
+           instance default class Bless.Util.List`1/Node<!T> InsertAfter (class Bless.Util.List`1/Node<!T> n, !T o)  cil managed 
+    {
+        // Method begins at RVA 0x3be0
+	// Code size 103 (0x67)
+	.maxstack 3
+	.locals init (
+		class Bless.Util.List`1/Node<!T>	V_0)
+	IL_0000:  ldarg.0 
+	IL_0001:  ldfld class Bless.Util.List`1/Node<!0> class Bless.Util.List`1<!0>::m_last
+	IL_0006:  brtrue IL_0013
 
-	IL_0034:  ldarg.0 
-	IL_0035:  ldc.i4.s 0x61
-	IL_0037:  sub 
-	IL_0038:  ldc.i4.s 0x0a
-	IL_003a:  add 
-	IL_003b:  stloc.0 
-	IL_003c:  ldloc.0 
-	IL_003d:  ldarg.1 
-	IL_003e:  bge IL_004a
+	IL_000b:  ldarg.0 
+	IL_000c:  ldarg.2 
+	IL_000d:  call instance class Bless.Util.List`1/Node<!0> class Bless.Util.List`1<!T>::AddFirst(!0)
+	IL_0012:  ret 
+	IL_0013:  ldarg.2 
+	IL_0014:  ldarg.1 
+	IL_0015:  ldarg.1 
+	IL_0016:  ldfld class Bless.Util.List`1/Node<!0> class Bless.Util.List`1/Node<!0>::next
+	IL_001b:  newobj instance void class Bless.Util.List`1/Node<!T>::'.ctor'(!0, class Bless.Util.List`1/Node<!0>, class Bless.Util.List`1/Node<!0>)
+	IL_0020:  stloc.0 
+	IL_0021:  ldarg.1 
+	IL_0022:  ldfld class Bless.Util.List`1/Node<!0> class Bless.Util.List`1/Node<!0>::next
+	IL_0027:  brfalse IL_0038
 
-	IL_0043:  ldloc.0 
-	IL_0044:  ldc.i4.m1 
-	IL_0045:  bne.un IL_006b
+	IL_002c:  ldarg.1 
+	IL_002d:  ldfld class Bless.Util.List`1/Node<!0> class Bless.Util.List`1/Node<!0>::next
+	IL_0032:  ldloc.0 
+	IL_0033:  stfld class Bless.Util.List`1/Node<!0> class Bless.Util.List`1/Node<!0>::prev
+	IL_0038:  ldarg.1 
+	IL_0039:  ldloc.0 
+	IL_003a:  stfld class Bless.Util.List`1/Node<!0> class Bless.Util.List`1/Node<!0>::next
+	IL_003f:  ldarg.1 
+	IL_0040:  ldarg.0 
+	IL_0041:  ldfld class Bless.Util.List`1/Node<!0> class Bless.Util.List`1<!0>::m_last
+	IL_0046:  call bool object::ReferenceEquals(object, object)
+	IL_004b:  brfalse IL_0057
 
-	IL_004a:  ldstr "Character '{0}' is not valid in a number of base {1}."
-	IL_004f:  call string class [Mono.Posix]Mono.Unix.Catalog::GetString(string)
-	IL_0054:  ldarg.0 
-	IL_0055:  box [mscorlib]System.Char
-	IL_005a:  ldarg.1 
-	IL_005b:  box [mscorlib]System.Int32
-	IL_0060:  call string string::Format(string, object, object)
-	IL_0065:  newobj instance void class [mscorlib]System.FormatException::'.ctor'(string)
-	IL_006a:  throw 
-	IL_006b:  ldloc.0 
-	IL_006c:  ret 
-    } // end of method BaseConverter::CharToInt
+	IL_0050:  ldarg.0 
+	IL_0051:  ldloc.0 
+	IL_0052:  stfld class Bless.Util.List`1/Node<!0> class Bless.Util.List`1<!0>::m_last
+	IL_0057:  ldarg.0 
+	IL_0058:  dup 
+	IL_0059:  ldfld int32 class Bless.Util.List`1<!0>::m_count
+	IL_005e:  ldc.i4.1 
+	IL_005f:  add 
+	IL_0060:  stfld int32 class Bless.Util.List`1<!0>::m_count
+	IL_0065:  ldloc.0 
+	IL_0066:  ret 
+    } // end of method List`1::InsertAfter
 
-    // method line 141
-    .method public static hidebysig 
-           default int64 ConvertToNum (string s, int32 startIndex, int32 endIndex, int32 b)  cil managed 
+    // method line 144
+    .method public hidebysig 
+           instance default void Remove (class Bless.Util.List`1/Node<!T> n)  cil managed 
     {
-        // Method begins at RVA 0x3d8c
-	// Code size 43 (0x2b)
+        // Method begins at RVA 0x3c54
+	// Code size 143 (0x8f)
 	.maxstack 3
-	.locals init (
-		int64	V_0,
-		int32	V_1)
-	IL_0000:  ldc.i4.0 
-	IL_0001:  conv.i8 
-	IL_0002:  stloc.0 
-	IL_0003:  ldarg.1 
-	IL_0004:  stloc.1 
-	IL_0005:  br IL_0022
+	IL_0000:  ldarg.1 
+	IL_0001:  ldfld class Bless.Util.List`1/Node<!0> class Bless.Util.List`1/Node<!0>::prev
+	IL_0006:  brfalse IL_001c
 
-	IL_000a:  ldarg.3 
-	IL_000b:  conv.i8 
-	IL_000c:  ldloc.0 
-	IL_000d:  mul 
-	IL_000e:  ldarg.0 
-	IL_000f:  ldloc.1 
-	IL_0010:  callvirt instance char string::get_Chars(int32)
-	IL_0015:  ldarg.3 
-	IL_0016:  call int32 class Bless.Util.BaseConverter::CharToInt(char, int32)
-	IL_001b:  conv.i8 
-	IL_001c:  add 
-	IL_001d:  stloc.0 
-	IL_001e:  ldloc.1 
-	IL_001f:  ldc.i4.1 
-	IL_0020:  add 
-	IL_0021:  stloc.1 
-	IL_0022:  ldloc.1 
-	IL_0023:  ldarg.2 
-	IL_0024:  ble IL_000a
+	IL_000b:  ldarg.1 
+	IL_000c:  ldfld class Bless.Util.List`1/Node<!0> class Bless.Util.List`1/Node<!0>::prev
+	IL_0011:  ldarg.1 
+	IL_0012:  ldfld class Bless.Util.List`1/Node<!0> class Bless.Util.List`1/Node<!0>::next
+	IL_0017:  stfld class Bless.Util.List`1/Node<!0> class Bless.Util.List`1/Node<!0>::next
+	IL_001c:  ldarg.1 
+	IL_001d:  ldfld class Bless.Util.List`1/Node<!0> class Bless.Util.List`1/Node<!0>::next
+	IL_0022:  brfalse IL_0038
 
-	IL_0029:  ldloc.0 
-	IL_002a:  ret 
-    } // end of method BaseConverter::ConvertToNum
+	IL_0027:  ldarg.1 
+	IL_0028:  ldfld class Bless.Util.List`1/Node<!0> class Bless.Util.List`1/Node<!0>::next
+	IL_002d:  ldarg.1 
+	IL_002e:  ldfld class Bless.Util.List`1/Node<!0> class Bless.Util.List`1/Node<!0>::prev
+	IL_0033:  stfld class Bless.Util.List`1/Node<!0> class Bless.Util.List`1/Node<!0>::prev
+	IL_0038:  ldarg.1 
+	IL_0039:  ldarg.0 
+	IL_003a:  ldfld class Bless.Util.List`1/Node<!0> class Bless.Util.List`1<!0>::m_first
+	IL_003f:  call bool object::ReferenceEquals(object, object)
+	IL_0044:  brfalse IL_0055
 
-    // method line 142
-    .method public static hidebysig 
-           default int64 ConvertToNum (string s, int32 b)  cil managed 
-    {
-        // Method begins at RVA 0x3dc3
-	// Code size 17 (0x11)
-	.maxstack 8
-	IL_0000:  ldarg.0 
-	IL_0001:  ldc.i4.0 
-	IL_0002:  ldarg.0 
-	IL_0003:  callvirt instance int32 string::get_Length()
-	IL_0008:  ldc.i4.1 
-	IL_0009:  sub 
-	IL_000a:  ldarg.1 
-	IL_000b:  call int64 class Bless.Util.BaseConverter::ConvertToNum(string, int32, int32, int32)
-	IL_0010:  ret 
-    } // end of method BaseConverter::ConvertToNum
+	IL_0049:  ldarg.0 
+	IL_004a:  ldarg.1 
+	IL_004b:  ldfld class Bless.Util.List`1/Node<!0> class Bless.Util.List`1/Node<!0>::next
+	IL_0050:  stfld class Bless.Util.List`1/Node<!0> class Bless.Util.List`1<!0>::m_first
+	IL_0055:  ldarg.1 
+	IL_0056:  ldarg.0 
+	IL_0057:  ldfld class Bless.Util.List`1/Node<!0> class Bless.Util.List`1<!0>::m_last
+	IL_005c:  call bool object::ReferenceEquals(object, object)
+	IL_0061:  brfalse IL_0072
 
-    // method line 143
-    .method public static hidebysig 
-           default int64 Parse (string s)  cil managed 
+	IL_0066:  ldarg.0 
+	IL_0067:  ldarg.1 
+	IL_0068:  ldfld class Bless.Util.List`1/Node<!0> class Bless.Util.List`1/Node<!0>::prev
+	IL_006d:  stfld class Bless.Util.List`1/Node<!0> class Bless.Util.List`1<!0>::m_last
+	IL_0072:  ldarg.1 
+	IL_0073:  ldnull 
+	IL_0074:  stfld class Bless.Util.List`1/Node<!0> class Bless.Util.List`1/Node<!0>::next
+	IL_0079:  ldarg.1 
+	IL_007a:  ldnull 
+	IL_007b:  stfld class Bless.Util.List`1/Node<!0> class Bless.Util.List`1/Node<!0>::prev
+	IL_0080:  ldarg.0 
+	IL_0081:  dup 
+	IL_0082:  ldfld int32 class Bless.Util.List`1<!0>::m_count
+	IL_0087:  ldc.i4.1 
+	IL_0088:  sub 
+	IL_0089:  stfld int32 class Bless.Util.List`1<!0>::m_count
+	IL_008e:  ret 
+    } // end of method List`1::Remove
+
+    // method line 145
+    .method public hidebysig specialname 
+           instance default !T get_Item (int32 index)  cil managed 
     {
-        // Method begins at RVA 0x3dd8
-	// Code size 135 (0x87)
-	.maxstack 4
+        // Method begins at RVA 0x3cf0
+	// Code size 61 (0x3d)
+	.maxstack 2
 	.locals init (
-		string	V_0,
-		int32	V_1,
+		!T	V_0,
+		class Bless.Util.List`1/Node<!T>	V_1,
 		int32	V_2)
-	IL_0000:  ldarg.0 
-	IL_0001:  callvirt instance string string::Trim()
-	IL_0006:  stloc.0 
-	IL_0007:  ldc.i4.0 
-	IL_0008:  stloc.1 
-	IL_0009:  ldloc.0 
-	IL_000a:  callvirt instance int32 string::get_Length()
-	IL_000f:  stloc.2 
-	IL_0010:  ldloc.2 
-	IL_0011:  brtrue IL_0026
-
-	IL_0016:  ldstr "The string to parse is empty."
-	IL_001b:  call string class [Mono.Posix]Mono.Unix.Catalog::GetString(string)
-	IL_0020:  newobj instance void class [mscorlib]System.FormatException::'.ctor'(string)
-	IL_0025:  throw 
-	IL_0026:  ldloc.1 
-	IL_0027:  ldc.i4.1 
-	IL_0028:  add 
-	IL_0029:  ldloc.2 
-	IL_002a:  bge IL_0061
-
-	IL_002f:  ldloc.0 
-	IL_0030:  ldloc.1 
-	IL_0031:  callvirt instance char string::get_Chars(int32)
-	IL_0036:  ldc.i4.s 0x30
-	IL_0038:  bne.un IL_0061
-
-	IL_003d:  ldloc.0 
-	IL_003e:  ldloc.1 
-	IL_003f:  ldc.i4.1 
-	IL_0040:  add 
-	IL_0041:  callvirt instance char string::get_Chars(int32)
-	IL_0046:  ldc.i4.s 0x78
-	IL_0048:  bne.un IL_0061
+	IL_0000:  ldarg.1 
+	IL_0001:  ldarg.0 
+	IL_0002:  ldfld int32 class Bless.Util.List`1<!0>::m_count
+	IL_0007:  ble IL_0016
 
-	IL_004d:  ldloc.0 
-	IL_004e:  ldloc.1 
-	IL_004f:  ldc.i4.2 
-	IL_0050:  add 
-	IL_0051:  ldloc.0 
-	IL_0052:  callvirt instance int32 string::get_Length()
-	IL_0057:  ldc.i4.1 
-	IL_0058:  sub 
-	IL_0059:  ldc.i4.s 0x10
-	IL_005b:  call int64 class Bless.Util.BaseConverter::ConvertToNum(string, int32, int32, int32)
-	IL_0060:  ret 
-	IL_0061:  ldloc.1 
-	IL_0062:  ldloc.2 
-	IL_0063:  bge IL_007e
+	IL_000c:  ldloca.s 0
+	IL_000e:  initobj !0
+	IL_0014:  ldloc.0 
+	IL_0015:  ret 
+	IL_0016:  ldarg.0 
+	IL_0017:  ldfld class Bless.Util.List`1/Node<!0> class Bless.Util.List`1<!0>::m_first
+	IL_001c:  stloc.1 
+	IL_001d:  ldc.i4.0 
+	IL_001e:  stloc.2 
+	IL_001f:  br IL_002f
 
-	IL_0068:  ldloc.0 
-	IL_0069:  ldloc.1 
-	IL_006a:  callvirt instance char string::get_Chars(int32)
-	IL_006f:  ldc.i4.s 0x30
-	IL_0071:  bne.un IL_007e
+	IL_0024:  ldloc.1 
+	IL_0025:  ldfld class Bless.Util.List`1/Node<!0> class Bless.Util.List`1/Node<!0>::next
+	IL_002a:  stloc.1 
+	IL_002b:  ldloc.2 
+	IL_002c:  ldc.i4.1 
+	IL_002d:  add 
+	IL_002e:  stloc.2 
+	IL_002f:  ldloc.2 
+	IL_0030:  ldarg.1 
+	IL_0031:  blt IL_0024
 
-	IL_0076:  ldloc.0 
-	IL_0077:  ldc.i4.8 
-	IL_0078:  call int64 class Bless.Util.BaseConverter::ConvertToNum(string, int32)
-	IL_007d:  ret 
-	IL_007e:  ldloc.0 
-	IL_007f:  ldc.i4.s 0x0a
-	IL_0081:  call int64 class Bless.Util.BaseConverter::ConvertToNum(string, int32)
-	IL_0086:  ret 
-    } // end of method BaseConverter::Parse
+	IL_0036:  ldloc.1 
+	IL_0037:  ldfld !0 class Bless.Util.List`1/Node<!0>::data
+	IL_003c:  ret 
+    } // end of method List`1::get_Item
 
-    // method line 144
-    .method private static hidebysig specialname rtspecialname 
-           default void '.cctor' ()  cil managed 
+    // method line 146
+    .method public final virtual hidebysig newslot 
+           instance default class [mscorlib]System.Collections.Generic.IEnumerator`1<!T> GetEnumerator ()  cil managed 
     {
-        // Method begins at RVA 0x3e6b
-	// Code size 24 (0x18)
-	.maxstack 8
-	IL_0000:  ldc.i4.s 0x11
-	IL_0002:  newarr [mscorlib]System.Int32
-	IL_0007:  dup 
-	IL_0008:  ldtoken field valuetype '<PrivateImplementationDetails>'/'$ArrayType=68' '<PrivateImplementationDetails>'::'$field-D442AC57A7E324FE61ED421E827DE44EBE129B07'
-	IL_000d:  call void class [mscorlib]System.Runtime.CompilerServices.RuntimeHelpers::InitializeArray(class [mscorlib]System.Array, valuetype [mscorlib]System.RuntimeFieldHandle)
-	IL_0012:  stsfld int32[] Bless.Util.BaseConverter::DefaultMinDigits
-	IL_0017:  ret 
-    } // end of method BaseConverter::.cctor
-
-  } // end of class Bless.Util.BaseConverter
-}
+        .custom instance void class [mscorlib]System.Diagnostics.DebuggerHiddenAttribute::'.ctor'() =  (01 00 00 00 ) // ....
 
-.namespace Bless.Util
-{
-  .class public auto ansi beforefieldinit RangeCollection
-  	extends [mscorlib]System.Collections.ArrayList
-  {
+        // Method begins at RVA 0x3d3c
+	// Code size 15 (0xf)
+	.maxstack 2
+	.locals init (
+		class Bless.Util.List`1/'<GetEnumerator>c__Iterator0'<!T>	V_0)
+	IL_0000:  newobj instance void class Bless.Util.List`1/'<GetEnumerator>c__Iterator0'<!T>::'.ctor'()
+	IL_0005:  stloc.0 
+	IL_0006:  ldloc.0 
+	IL_0007:  ldarg.0 
+	IL_0008:  stfld class Bless.Util.List`1<!0> class Bless.Util.List`1/'<GetEnumerator>c__Iterator0'<!0>::$this
+	IL_000d:  ldloc.0 
+	IL_000e:  ret 
+    } // end of method List`1::GetEnumerator
 
-    // method line 145
-    .method public hidebysig specialname rtspecialname 
-           instance default void '.ctor' ()  cil managed 
+    // method line 147
+    .method private final virtual hidebysig newslot 
+           instance default class [mscorlib]System.Collections.IEnumerator System.Collections.IEnumerable.GetEnumerator ()  cil managed 
     {
-        // Method begins at RVA 0x3e84
-	// Code size 19 (0x13)
+        // Method begins at RVA 0x3d57
+	.override Could not decode method override class [mscorlib]System.Collections.IEnumerable::GetEnumerator due to (null)
+	// Code size 7 (0x7)
 	.maxstack 8
 	IL_0000:  ldarg.0 
-	IL_0001:  call instance void class [mscorlib]System.Collections.ArrayList::'.ctor'()
-	IL_0006:  ldarg.0 
-	IL_0007:  newobj instance void class Bless.Util.Range::'.ctor'()
-	IL_000c:  callvirt instance int32 class [mscorlib]System.Collections.ArrayList::Add(object)
-	IL_0011:  pop 
-	IL_0012:  ret 
-    } // end of method RangeCollection::.ctor
+	IL_0001:  call instance class [mscorlib]System.Collections.Generic.IEnumerator`1<!0> class Bless.Util.List`1<!T>::GetEnumerator()
+	IL_0006:  ret 
+    } // end of method List`1::System.Collections.IEnumerable.GetEnumerator
 
-    // method line 146
+    // method line 148
+    .method public hidebysig 
+           instance default void Display ()  cil managed 
+    {
+        // Method begins at RVA 0x3d60
+	// Code size 52 (0x34)
+	.maxstack 2
+	.locals init (
+		class Bless.Util.List`1/Node<!T>	V_0)
+	IL_0000:  ldarg.0 
+	IL_0001:  ldfld class Bless.Util.List`1/Node<!0> class Bless.Util.List`1<!0>::m_first
+	IL_0006:  stloc.0 
+	IL_0007:  br IL_0028
+
+	IL_000c:  ldstr "{0}<=>"
+	IL_0011:  ldloc.0 
+	IL_0012:  ldfld !0 class Bless.Util.List`1/Node<!0>::data
+	IL_0017:  box !0
+	IL_001c:  call void class [mscorlib]System.Console::Write(string, object)
+	IL_0021:  ldloc.0 
+	IL_0022:  ldfld class Bless.Util.List`1/Node<!0> class Bless.Util.List`1/Node<!0>::next
+	IL_0027:  stloc.0 
+	IL_0028:  ldloc.0 
+	IL_0029:  brtrue IL_000c
+
+	IL_002e:  call void class [mscorlib]System.Console::WriteLine()
+	IL_0033:  ret 
+    } // end of method List`1::Display
+
+    // method line 149
     .method public hidebysig specialname 
-           instance default class Bless.Util.Range get_LastAdded ()  cil managed 
+           instance default class Bless.Util.List`1/Node<!T> get_First ()  cil managed 
     {
-        // Method begins at RVA 0x3e98
-	// Code size 20 (0x14)
+        // Method begins at RVA 0x3da0
+	// Code size 7 (0x7)
 	.maxstack 8
 	IL_0000:  ldarg.0 
-	IL_0001:  ldarg.0 
-	IL_0002:  callvirt instance int32 class [mscorlib]System.Collections.ArrayList::get_Count()
-	IL_0007:  ldc.i4.1 
-	IL_0008:  sub 
-	IL_0009:  callvirt instance object class [mscorlib]System.Collections.ArrayList::get_Item(int32)
-	IL_000e:  castclass Bless.Util.Range
-	IL_0013:  ret 
-    } // end of method RangeCollection::get_LastAdded
+	IL_0001:  ldfld class Bless.Util.List`1/Node<!0> class Bless.Util.List`1<!0>::m_first
+	IL_0006:  ret 
+    } // end of method List`1::get_First
 
-    // method line 147
-    .method public hidebysig 
-           instance default void UpdateRange (class Bless.Util.Range oldRange, class Bless.Util.Range newRange)  cil managed 
+    // method line 150
+    .method public hidebysig specialname 
+           instance default class Bless.Util.List`1/Node<!T> get_Last ()  cil managed 
     {
-        // Method begins at RVA 0x3eb0
-	// Code size 24 (0x18)
-	.maxstack 3
-	.locals init (
-		int32	V_0)
+        // Method begins at RVA 0x3da8
+	// Code size 7 (0x7)
+	.maxstack 8
 	IL_0000:  ldarg.0 
-	IL_0001:  ldarg.1 
-	IL_0002:  callvirt instance int32 class [mscorlib]System.Collections.ArrayList::IndexOf(object)
-	IL_0007:  stloc.0 
-	IL_0008:  ldarg.0 
-	IL_0009:  ldloc.0 
-	IL_000a:  callvirt instance void class [mscorlib]System.Collections.ArrayList::RemoveAt(int32)
-	IL_000f:  ldarg.0 
-	IL_0010:  ldloc.0 
-	IL_0011:  ldarg.2 
-	IL_0012:  callvirt instance void class [mscorlib]System.Collections.ArrayList::Insert(int32, object)
-	IL_0017:  ret 
-    } // end of method RangeCollection::UpdateRange
+	IL_0001:  ldfld class Bless.Util.List`1/Node<!0> class Bless.Util.List`1<!0>::m_last
+	IL_0006:  ret 
+    } // end of method List`1::get_Last
 
-    // method line 148
-    .method public hidebysig 
-           instance default void Clear ()  cil managed 
+    // method line 151
+    .method public hidebysig specialname 
+           instance default int32 get_Count ()  cil managed 
     {
-        // Method begins at RVA 0x3ed4
-	// Code size 19 (0x13)
+        // Method begins at RVA 0x3db0
+	// Code size 7 (0x7)
 	.maxstack 8
 	IL_0000:  ldarg.0 
-	IL_0001:  call instance void class [mscorlib]System.Collections.ArrayList::Clear()
-	IL_0006:  ldarg.0 
-	IL_0007:  newobj instance void class Bless.Util.Range::'.ctor'()
-	IL_000c:  callvirt instance int32 class [mscorlib]System.Collections.ArrayList::Add(object)
-	IL_0011:  pop 
-	IL_0012:  ret 
-    } // end of method RangeCollection::Clear
+	IL_0001:  ldfld int32 class Bless.Util.List`1<!0>::m_count
+	IL_0006:  ret 
+    } // end of method List`1::get_Count
 
-	.property instance class Bless.Util.Range LastAdded ()
+	.property instance !T Item (int32)
 	{
-		.get instance default class Bless.Util.Range Bless.Util.RangeCollection::get_LastAdded () 
+		.get instance default !0 Bless.Util.List`1::get_Item (int32 index) 
 	}
-  } // end of class Bless.Util.RangeCollection
-}
-
-.namespace Bless.Util
-{
-  .class public auto ansi abstract beforefieldinit ThreadedAsyncOperation
+	.property instance class Bless.Util.List`1/Node<!T> First ()
+	{
+		.get instance default class Bless.Util.List`1/Node<!0> Bless.Util.List`1::get_First () 
+	}
+	.property instance class Bless.Util.List`1/Node<!T> Last ()
+	{
+		.get instance default class Bless.Util.List`1/Node<!0> Bless.Util.List`1::get_Last () 
+	}
+	.property instance int32 Count ()
+	{
+		.get instance default int32 Bless.Util.List`1::get_Count () 
+	}
+  .class nested public auto ansi beforefieldinit Node<T>
   	extends [mscorlib]System.Object
   {
-    .field  family  bool cancelled
-    .field  family  class Bless.Util.ProgressCallback progressCallback
-    .field  family  class [mscorlib]System.AsyncCallback opFinishedCallback
-    .field  family  bool activateProgress
-    .field  private  class [mscorlib]System.Exception threadException
-    .field  private  valuetype Bless.Util.ThreadedAsyncOperation/OperationResult opResult
-    .field  private  bool useGLibIdle
-    .field  private  class [mscorlib]System.Threading.Timer showProgressTimer
-    .field  private  class [mscorlib]System.Threading.Timer progressTimer
+    .field  public  !0 data
+    .field  public  class Bless.Util.List`1/Node<!0> next
+    .field  public  class Bless.Util.List`1/Node<!0> prev
 
-    // method line 149
+    // method line 152
     .method public hidebysig specialname rtspecialname 
-           instance default void '.ctor' (class Bless.Util.ProgressCallback pc, class [mscorlib]System.AsyncCallback ac, bool glibIdle)  cil managed 
+           instance default void '.ctor' (!T d, class Bless.Util.List`1/Node<!T> p, class Bless.Util.List`1/Node<!T> n)  cil managed 
     {
-        // Method begins at RVA 0x3ee8
-	// Code size 94 (0x5e)
-	.maxstack 5
+        // Method begins at RVA 0x3db8
+	// Code size 28 (0x1c)
+	.maxstack 8
 	IL_0000:  ldarg.0 
 	IL_0001:  call instance void object::'.ctor'()
 	IL_0006:  ldarg.0 
 	IL_0007:  ldarg.1 
-	IL_0008:  stfld class Bless.Util.ProgressCallback Bless.Util.ThreadedAsyncOperation::progressCallback
+	IL_0008:  stfld !0 class Bless.Util.List`1/Node<!0>::data
 	IL_000d:  ldarg.0 
 	IL_000e:  ldarg.2 
-	IL_000f:  stfld class [mscorlib]System.AsyncCallback Bless.Util.ThreadedAsyncOperation::opFinishedCallback
+	IL_000f:  stfld class Bless.Util.List`1/Node<!0> class Bless.Util.List`1/Node<!0>::prev
 	IL_0014:  ldarg.0 
 	IL_0015:  ldarg.3 
-	IL_0016:  stfld bool Bless.Util.ThreadedAsyncOperation::useGLibIdle
-	IL_001b:  ldarg.0 
-	IL_001c:  ldc.i4.0 
-	IL_001d:  stfld bool Bless.Util.ThreadedAsyncOperation::cancelled
+	IL_0016:  stfld class Bless.Util.List`1/Node<!0> class Bless.Util.List`1/Node<!0>::next
+	IL_001b:  ret 
+    } // end of method Node::.ctor
+
+  } // end of class Node
+
+  .class nested private auto ansi sealed beforefieldinit '<GetEnumerator>c__Iterator0'<T>
+  	extends [mscorlib]System.Object
+  	implements [mscorlib]System.Collections.IEnumerator, [mscorlib]System.IDisposable, class [mscorlib]System.Collections.Generic.IEnumerator`1<!0>  {
+    .custom instance void class [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::'.ctor'() =  (01 00 00 00 ) // ....
+
+    .field  assembly  class Bless.Util.List`1/Node<!0> '<currentNode>__0'
+    .field  assembly  class Bless.Util.List`1<!0> $this
+    .field  assembly  !0 $current
+    .field  assembly  bool $disposing
+    .field  assembly  int32 $PC
+
+    // method line 176
+    .method public hidebysig specialname rtspecialname 
+           instance default void '.ctor' ()  cil managed 
+    {
+        .custom instance void class [mscorlib]System.Diagnostics.DebuggerHiddenAttribute::'.ctor'() =  (01 00 00 00 ) // ....
+
+        // Method begins at RVA 0x3dd5
+	// Code size 7 (0x7)
+	.maxstack 8
+	IL_0000:  ldarg.0 
+	IL_0001:  call instance void object::'.ctor'()
+	IL_0006:  ret 
+    } // end of method <GetEnumerator>c__Iterator0::.ctor
+
+    // method line 177
+    .method public final virtual hidebysig newslot 
+           instance default bool MoveNext ()  cil managed 
+    {
+        // Method begins at RVA 0x3de0
+	// Code size 131 (0x83)
+	.maxstack 2
+	.locals init (
+		unsigned int32	V_0)
+	IL_0000:  ldarg.0 
+	IL_0001:  ldfld int32 class Bless.Util.List`1/'<GetEnumerator>c__Iterator0'<!0>::$PC
+	IL_0006:  stloc.0 
+	IL_0007:  ldarg.0 
+	IL_0008:  ldc.i4.m1 
+	IL_0009:  stfld int32 class Bless.Util.List`1/'<GetEnumerator>c__Iterator0'<!0>::$PC
+	IL_000e:  ldloc.0 
+	IL_000f:  switch (
+	  IL_0021,
+	  IL_005c)
+	IL_001c:  br IL_007f
+
+	IL_0021:  ldarg.0 
 	IL_0022:  ldarg.0 
-	IL_0023:  ldc.i4.1 
-	IL_0024:  stfld bool Bless.Util.ThreadedAsyncOperation::activateProgress
-	IL_0029:  ldarg.0 
-	IL_002a:  ldarg.0 
-	IL_002b:  ldftn instance void class Bless.Util.ThreadedAsyncOperation::ShowProgressTimerExpired(object)
-	IL_0031:  newobj instance void class [mscorlib]System.Threading.TimerCallback::'.ctor'(object, native int)
-	IL_0036:  ldnull 
-	IL_0037:  ldc.i4.m1 
-	IL_0038:  ldc.i4.m1 
-	IL_0039:  newobj instance void class [mscorlib]System.Threading.Timer::'.ctor'(class [mscorlib]System.Threading.TimerCallback, object, int32, int32)
-	IL_003e:  stfld class [mscorlib]System.Threading.Timer Bless.Util.ThreadedAsyncOperation::showProgressTimer
-	IL_0043:  ldarg.0 
-	IL_0044:  ldarg.0 
-	IL_0045:  ldftn instance void class Bless.Util.ThreadedAsyncOperation::ProgressTimerExpired(object)
-	IL_004b:  newobj instance void class [mscorlib]System.Threading.TimerCallback::'.ctor'(object, native int)
-	IL_0050:  ldnull 
-	IL_0051:  ldc.i4.m1 
-	IL_0052:  ldc.i4.m1 
-	IL_0053:  newobj instance void class [mscorlib]System.Threading.Timer::'.ctor'(class [mscorlib]System.Threading.TimerCallback, object, int32, int32)
-	IL_0058:  stfld class [mscorlib]System.Threading.Timer Bless.Util.ThreadedAsyncOperation::progressTimer
-	IL_005d:  ret 
-    } // end of method ThreadedAsyncOperation::.ctor
+	IL_0023:  ldfld class Bless.Util.List`1<!0> class Bless.Util.List`1/'<GetEnumerator>c__Iterator0'<!0>::$this
+	IL_0028:  call instance class Bless.Util.List`1/Node<!0> class Bless.Util.List`1<!T>::get_First()
+	IL_002d:  stfld class Bless.Util.List`1/Node<!0> class Bless.Util.List`1/'<GetEnumerator>c__Iterator0'<!0>::'<currentNode>__0'
+	IL_0032:  br IL_006d
 
-    // method line 150
-    .method public hidebysig specialname 
-           instance default valuetype Bless.Util.ThreadedAsyncOperation/OperationResult get_Result ()  cil managed 
+	IL_0037:  ldarg.0 
+	IL_0038:  ldarg.0 
+	IL_0039:  ldfld class Bless.Util.List`1/Node<!0> class Bless.Util.List`1/'<GetEnumerator>c__Iterator0'<!0>::'<currentNode>__0'
+	IL_003e:  ldfld !0 class Bless.Util.List`1/Node<!0>::data
+	IL_0043:  stfld !0 class Bless.Util.List`1/'<GetEnumerator>c__Iterator0'<!0>::$current
+	IL_0048:  ldarg.0 
+	IL_0049:  ldfld bool class Bless.Util.List`1/'<GetEnumerator>c__Iterator0'<!0>::$disposing
+	IL_004e:  brtrue.s IL_0057
+
+	IL_0050:  ldarg.0 
+	IL_0051:  ldc.i4.1 
+	IL_0052:  stfld int32 class Bless.Util.List`1/'<GetEnumerator>c__Iterator0'<!0>::$PC
+	IL_0057:  br IL_0081
+
+	IL_005c:  ldarg.0 
+	IL_005d:  ldarg.0 
+	IL_005e:  ldfld class Bless.Util.List`1/Node<!0> class Bless.Util.List`1/'<GetEnumerator>c__Iterator0'<!0>::'<currentNode>__0'
+	IL_0063:  ldfld class Bless.Util.List`1/Node<!0> class Bless.Util.List`1/Node<!0>::next
+	IL_0068:  stfld class Bless.Util.List`1/Node<!0> class Bless.Util.List`1/'<GetEnumerator>c__Iterator0'<!0>::'<currentNode>__0'
+	IL_006d:  ldarg.0 
+	IL_006e:  ldfld class Bless.Util.List`1/Node<!0> class Bless.Util.List`1/'<GetEnumerator>c__Iterator0'<!0>::'<currentNode>__0'
+	IL_0073:  brtrue IL_0037
+
+	IL_0078:  ldarg.0 
+	IL_0079:  ldc.i4.m1 
+	IL_007a:  stfld int32 class Bless.Util.List`1/'<GetEnumerator>c__Iterator0'<!0>::$PC
+	IL_007f:  ldc.i4.0 
+	IL_0080:  ret 
+	IL_0081:  ldc.i4.1 
+	IL_0082:  ret 
+    } // end of method <GetEnumerator>c__Iterator0::MoveNext
+
+    // method line 178
+    .method private final virtual hidebysig newslot specialname 
+           instance default !T 'System.Collections.Generic.IEnumerator<T>.get_Current' ()  cil managed 
     {
-        // Method begins at RVA 0x3f52
+        .custom instance void class [mscorlib]System.Diagnostics.DebuggerHiddenAttribute::'.ctor'() =  (01 00 00 00 ) // ....
+
+        // Method begins at RVA 0x3e6f
+	.override method instance !0 class [mscorlib]System.Collections.Generic.IEnumerator`1<!T>::get_Current()
 	// Code size 7 (0x7)
 	.maxstack 8
 	IL_0000:  ldarg.0 
-	IL_0001:  ldfld valuetype Bless.Util.ThreadedAsyncOperation/OperationResult Bless.Util.ThreadedAsyncOperation::opResult
+	IL_0001:  ldfld !0 class Bless.Util.List`1/'<GetEnumerator>c__Iterator0'<!0>::$current
 	IL_0006:  ret 
-    } // end of method ThreadedAsyncOperation::get_Result
+    } // end of method <GetEnumerator>c__Iterator0::System.Collections.Generic.IEnumerator<T>.get_Current
 
-    // method line 151
-    .method public hidebysig specialname 
-           instance default void set_Result (valuetype Bless.Util.ThreadedAsyncOperation/OperationResult 'value')  cil managed 
+    // method line 179
+    .method private final virtual hidebysig newslot specialname 
+           instance default object System.Collections.IEnumerator.get_Current ()  cil managed 
     {
-        // Method begins at RVA 0x3f5a
-	// Code size 8 (0x8)
+        .custom instance void class [mscorlib]System.Diagnostics.DebuggerHiddenAttribute::'.ctor'() =  (01 00 00 00 ) // ....
+
+        // Method begins at RVA 0x3e77
+	.override Could not decode method override class [mscorlib]System.Collections.IEnumerator::get_Current due to (null)
+	// Code size 12 (0xc)
 	.maxstack 8
 	IL_0000:  ldarg.0 
-	IL_0001:  ldarg.1 
-	IL_0002:  stfld valuetype Bless.Util.ThreadedAsyncOperation/OperationResult Bless.Util.ThreadedAsyncOperation::opResult
-	IL_0007:  ret 
-    } // end of method ThreadedAsyncOperation::set_Result
+	IL_0001:  ldfld !0 class Bless.Util.List`1/'<GetEnumerator>c__Iterator0'<!0>::$current
+	IL_0006:  box !0
+	IL_000b:  ret 
+    } // end of method <GetEnumerator>c__Iterator0::System.Collections.IEnumerator.get_Current
 
-    // method line 152
-    .method public hidebysig specialname 
-           instance default class [mscorlib]System.Exception get_ThreadException ()  cil managed 
+    // method line 180
+    .method public final virtual hidebysig newslot 
+           instance default void Dispose ()  cil managed 
     {
-        // Method begins at RVA 0x3f63
-	// Code size 7 (0x7)
+        .custom instance void class [mscorlib]System.Diagnostics.DebuggerHiddenAttribute::'.ctor'() =  (01 00 00 00 ) // ....
+
+        // Method begins at RVA 0x3e84
+	// Code size 15 (0xf)
 	.maxstack 8
 	IL_0000:  ldarg.0 
-	IL_0001:  ldfld class [mscorlib]System.Exception Bless.Util.ThreadedAsyncOperation::threadException
-	IL_0006:  ret 
-    } // end of method ThreadedAsyncOperation::get_ThreadException
+	IL_0001:  ldc.i4.1 
+	IL_0002:  stfld bool class Bless.Util.List`1/'<GetEnumerator>c__Iterator0'<!0>::$disposing
+	IL_0007:  ldarg.0 
+	IL_0008:  ldc.i4.m1 
+	IL_0009:  stfld int32 class Bless.Util.List`1/'<GetEnumerator>c__Iterator0'<!0>::$PC
+	IL_000e:  ret 
+    } // end of method <GetEnumerator>c__Iterator0::Dispose
+
+    // method line 181
+    .method public final virtual hidebysig newslot 
+           instance default void Reset ()  cil managed 
+    {
+        .custom instance void class [mscorlib]System.Diagnostics.DebuggerHiddenAttribute::'.ctor'() =  (01 00 00 00 ) // ....
+
+        // Method begins at RVA 0x3e94
+	// Code size 6 (0x6)
+	.maxstack 8
+	IL_0000:  newobj instance void class [mscorlib]System.NotSupportedException::'.ctor'()
+	IL_0005:  throw 
+    } // end of method <GetEnumerator>c__Iterator0::Reset
+
+	.property instance !T 'System.Collections.Generic.IEnumerator<T>.Current' ()
+	{
+		.get instance default !0 Bless.Util.List`1/'<GetEnumerator>c__Iterator0'::'System.Collections.Generic.IEnumerator<T>.get_Current' () 
+	}
+	.property instance object System.Collections.IEnumerator.Current ()
+	{
+		.get instance default object Bless.Util.List`1/'<GetEnumerator>c__Iterator0'::System.Collections.IEnumerator.get_Current () 
+	}
+  } // end of class <GetEnumerator>c__Iterator0
+
+  } // end of class Bless.Util.List`1
+}
+
+.namespace Bless.Util
+{
+  .class public auto ansi beforefieldinit IntervalTree`1<(class Bless.Util.IRange) T>
+  	extends class Bless.Util.RedBlackTree`2<int64,!0>
+  {
+    .field  private  class [mscorlib]System.Collections.Generic.List`1<!0> searchResults
 
     // method line 153
-    .method public hidebysig specialname 
-           instance default void set_ThreadException (class [mscorlib]System.Exception 'value')  cil managed 
+    .method public hidebysig specialname rtspecialname 
+           instance default void '.ctor' ()  cil managed 
     {
-        // Method begins at RVA 0x3f6b
-	// Code size 8 (0x8)
+        // Method begins at RVA 0x3e9b
+	// Code size 12 (0xc)
 	.maxstack 8
 	IL_0000:  ldarg.0 
-	IL_0001:  ldarg.1 
-	IL_0002:  stfld class [mscorlib]System.Exception Bless.Util.ThreadedAsyncOperation::threadException
-	IL_0007:  ret 
-    } // end of method ThreadedAsyncOperation::set_ThreadException
+	IL_0001:  newobj instance void class Bless.Util.IntervalTree`1/ITNodeFactory<!T>::'.ctor'()
+	IL_0006:  call instance void class Bless.Util.RedBlackTree`2<int64, !T>::'.ctor'(class Bless.Util.RedBlackTree`2/INodeFactory<!0,!1>)
+	IL_000b:  ret 
+    } // end of method IntervalTree`1::.ctor
 
     // method line 154
-    .method family virtual hidebysig newslot abstract 
-           instance default bool StartProgress ()  cil managed 
+    .method private hidebysig 
+           instance default bool RangesOverlap (class Bless.Util.IRange r1, class Bless.Util.IRange r2)  cil managed 
     {
-        // Method begins at RVA 0x0
-    } // end of method ThreadedAsyncOperation::StartProgress
+        // Method begins at RVA 0x3ea8
+	// Code size 110 (0x6e)
+	.maxstack 2
+	IL_0000:  ldarg.1 
+	IL_0001:  callvirt instance int64 class Bless.Util.IRange::get_Start()
+	IL_0006:  ldarg.2 
+	IL_0007:  callvirt instance int64 class Bless.Util.IRange::get_Start()
+	IL_000c:  blt IL_0024
 
-    // method line 155
-    .method family virtual hidebysig newslot abstract 
-           instance default bool UpdateProgress ()  cil managed 
-    {
-        // Method begins at RVA 0x0
-    } // end of method ThreadedAsyncOperation::UpdateProgress
+	IL_0011:  ldarg.1 
+	IL_0012:  callvirt instance int64 class Bless.Util.IRange::get_Start()
+	IL_0017:  ldarg.2 
+	IL_0018:  callvirt instance int64 class Bless.Util.IRange::get_End()
+	IL_001d:  bgt IL_0024
 
-    // method line 156
-    .method family virtual hidebysig newslot abstract 
-           instance default bool EndProgress ()  cil managed 
-    {
-        // Method begins at RVA 0x0
-    } // end of method ThreadedAsyncOperation::EndProgress
+	IL_0022:  ldc.i4.1 
+	IL_0023:  ret 
+	IL_0024:  ldarg.1 
+	IL_0025:  callvirt instance int64 class Bless.Util.IRange::get_End()
+	IL_002a:  ldarg.2 
+	IL_002b:  callvirt instance int64 class Bless.Util.IRange::get_Start()
+	IL_0030:  blt IL_0048
 
-    // method line 157
-    .method family virtual hidebysig newslot abstract 
-           instance default void DoOperation ()  cil managed 
-    {
-        // Method begins at RVA 0x0
-    } // end of method ThreadedAsyncOperation::DoOperation
+	IL_0035:  ldarg.1 
+	IL_0036:  callvirt instance int64 class Bless.Util.IRange::get_End()
+	IL_003b:  ldarg.2 
+	IL_003c:  callvirt instance int64 class Bless.Util.IRange::get_End()
+	IL_0041:  bgt IL_0048
 
-    // method line 158
-    .method family virtual hidebysig newslot abstract 
-           instance default void EndOperation ()  cil managed 
-    {
-        // Method begins at RVA 0x0
-    } // end of method ThreadedAsyncOperation::EndOperation
+	IL_0046:  ldc.i4.1 
+	IL_0047:  ret 
+	IL_0048:  ldarg.1 
+	IL_0049:  callvirt instance int64 class Bless.Util.IRange::get_Start()
+	IL_004e:  ldarg.2 
+	IL_004f:  callvirt instance int64 class Bless.Util.IRange::get_Start()
+	IL_0054:  bgt IL_006c
 
-    // method line 159
-    .method private hidebysig 
-           instance default void OperationFinished ()  cil managed 
+	IL_0059:  ldarg.1 
+	IL_005a:  callvirt instance int64 class Bless.Util.IRange::get_End()
+	IL_005f:  ldarg.2 
+	IL_0060:  callvirt instance int64 class Bless.Util.IRange::get_End()
+	IL_0065:  blt IL_006c
+
+	IL_006a:  ldc.i4.1 
+	IL_006b:  ret 
+	IL_006c:  ldc.i4.0 
+	IL_006d:  ret 
+    } // end of method IntervalTree`1::RangesOverlap
+
+    // method line 155
+    .method family virtual hidebysig 
+           instance default void AddToValues (class Bless.Util.RedBlackTree`2/INode<int64, !T> n, !T val)  cil managed 
     {
-        // Method begins at RVA 0x3f74
+        // Method begins at RVA 0x3f22
 	// Code size 49 (0x31)
 	.maxstack 8
 	IL_0000:  ldarg.0 
-	IL_0001:  ldfld class Bless.Util.ProgressCallback Bless.Util.ThreadedAsyncOperation::progressCallback
-	IL_0006:  brfalse IL_0012
-
-	IL_000b:  ldarg.0 
-	IL_000c:  callvirt instance bool class Bless.Util.ThreadedAsyncOperation::EndProgress()
-	IL_0011:  pop 
-	IL_0012:  ldarg.0 
-	IL_0013:  ldfld class [mscorlib]System.AsyncCallback Bless.Util.ThreadedAsyncOperation::opFinishedCallback
-	IL_0018:  brfalse IL_0030
-
-	IL_001d:  ldarg.0 
-	IL_001e:  ldfld class [mscorlib]System.AsyncCallback Bless.Util.ThreadedAsyncOperation::opFinishedCallback
-	IL_0023:  ldarg.0 
-	IL_0024:  ldnull 
-	IL_0025:  ldc.i4.1 
-	IL_0026:  newobj instance void class Bless.Util.ThreadedAsyncResult::'.ctor'(object, class [mscorlib]System.Threading.WaitHandle, bool)
-	IL_002b:  callvirt instance void class [mscorlib]System.AsyncCallback::Invoke(class [mscorlib]System.IAsyncResult)
+	IL_0001:  ldarg.1 
+	IL_0002:  ldarg.2 
+	IL_0003:  call instance void class Bless.Util.RedBlackTree`2<int64, !T>::AddToValues(class Bless.Util.RedBlackTree`2/INode<!0,!1>, !1)
+	IL_0008:  ldarg.1 
+	IL_0009:  isinst class Bless.Util.IntervalTree`1/ITNode<!0>
+	IL_000e:  ldarg.1 
+	IL_000f:  isinst class Bless.Util.IntervalTree`1/ITNode<!0>
+	IL_0014:  callvirt instance int64 class Bless.Util.IntervalTree`1/ITNode<!T>::get_Max()
+	IL_0019:  ldarga.s 2
+	IL_001b:  constrained. !0
+	IL_0021:  callvirt instance int64 class Bless.Util.IRange::get_End()
+	IL_0026:  call int64 class [mscorlib]System.Math::Max(int64, int64)
+	IL_002b:  callvirt instance void class Bless.Util.IntervalTree`1/ITNode<!T>::set_Max(int64)
 	IL_0030:  ret 
-    } // end of method ThreadedAsyncOperation::OperationFinished
+    } // end of method IntervalTree`1::AddToValues
+
+    // method line 156
+    .method public hidebysig 
+           instance default void Insert (!T r)  cil managed 
+    {
+        // Method begins at RVA 0x3f54
+	// Code size 21 (0x15)
+	.maxstack 8
+	IL_0000:  ldarg.0 
+	IL_0001:  ldarga.s 1
+	IL_0003:  constrained. !0
+	IL_0009:  callvirt instance int64 class Bless.Util.IRange::get_Start()
+	IL_000e:  ldarg.1 
+	IL_000f:  callvirt instance void class Bless.Util.RedBlackTree`2<int64, !T>::Insert(!0, !1)
+	IL_0014:  ret 
+    } // end of method IntervalTree`1::Insert
 
-    // method line 160
-    .method private hidebysig 
-           instance default void ShowProgressTimerExpired (object o)  cil managed 
+    // method line 157
+    .method public hidebysig 
+           instance default class [mscorlib]System.Collections.Generic.IList`1<!T> SearchOverlap (class Bless.Util.IRange r)  cil managed 
     {
-        // Method begins at RVA 0x3fa6
-	// Code size 54 (0x36)
-	.maxstack 8
+        // Method begins at RVA 0x3f6c
+	// Code size 70 (0x46)
+	.maxstack 3
+	.locals init (
+		object	V_0,
+		bool	V_1,
+		class [mscorlib]System.Collections.Generic.IList`1<!T>	V_2)
 	IL_0000:  ldarg.0 
-	IL_0001:  ldfld class Bless.Util.ProgressCallback Bless.Util.ThreadedAsyncOperation::progressCallback
-	IL_0006:  brfalse IL_0035
-
-	IL_000b:  ldarg.0 
-	IL_000c:  ldfld bool Bless.Util.ThreadedAsyncOperation::useGLibIdle
-	IL_0011:  brfalse IL_002e
+	IL_0001:  ldfld object class Bless.Util.RedBlackTree`2<int64,!0>::lockObj
+	IL_0006:  stloc.0 
+	IL_0007:  ldc.i4.0 
+	IL_0008:  stloc.1 
+	.try { // 0
+	  IL_0009:  ldloc.0 
+	  IL_000a:  ldloca.s 1
+	  IL_000c:  call void class [mscorlib]System.Threading.Monitor::Enter(object, [out] bool&)
+	  IL_0011:  ldarg.0 
+	  IL_0012:  newobj instance void class [mscorlib]System.Collections.Generic.List`1<!T>::'.ctor'()
+	  IL_0017:  stfld class [mscorlib]System.Collections.Generic.List`1<!0> class Bless.Util.IntervalTree`1<!0>::searchResults
+	  IL_001c:  ldarg.0 
+	  IL_001d:  ldarg.0 
+	  IL_001e:  ldfld class Bless.Util.RedBlackTree`2/INode<!0,!1> class Bless.Util.RedBlackTree`2<int64,!0>::root
+	  IL_0023:  isinst class Bless.Util.IntervalTree`1/ITNode<!0>
+	  IL_0028:  ldarg.1 
+	  IL_0029:  call instance void class Bless.Util.IntervalTree`1<!T>::SearchOverlap(class Bless.Util.IntervalTree`1/ITNode<!0>, class Bless.Util.IRange)
+	  IL_002e:  ldarg.0 
+	  IL_002f:  ldfld class [mscorlib]System.Collections.Generic.List`1<!0> class Bless.Util.IntervalTree`1<!0>::searchResults
+	  IL_0034:  stloc.2 
+	  IL_0035:  leave IL_0044
 
-	IL_0016:  ldarg.0 
-	IL_0017:  dup 
-	IL_0018:  ldvirtftn instance bool class Bless.Util.ThreadedAsyncOperation::StartProgress()
-	IL_001e:  newobj instance void ['glib-sharp']GLib.IdleHandler::.ctor(object, native int)
-	IL_0023:  call unsigned int32 ['glib-sharp']GLib.Idle::Add(<BROKEN CLASS token_ 100002d due to Could not load file or assembly or one of its dependencies. assembly:glib-sharp, Version=2.12.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f type:<unknown type> member:<none>>)
-	IL_0028:  pop 
-	IL_0029:  br IL_0035
+	} // end .try 0
+	finally  { // 0
+	  IL_003a:  ldloc.1 
+	  IL_003b:  brfalse.s IL_0043
 
-	IL_002e:  ldarg.0 
-	IL_002f:  callvirt instance bool class Bless.Util.ThreadedAsyncOperation::StartProgress()
-	IL_0034:  pop 
-	IL_0035:  ret 
-    } // end of method ThreadedAsyncOperation::ShowProgressTimerExpired
+	  IL_003d:  ldloc.0 
+	  IL_003e:  call void class [mscorlib]System.Threading.Monitor::Exit(object)
+	  IL_0043:  endfinally 
+	} // end handler 0
+	IL_0044:  ldloc.2 
+	IL_0045:  ret 
+    } // end of method IntervalTree`1::SearchOverlap
 
-    // method line 161
+    // method line 158
     .method private hidebysig 
-           instance default void ProgressTimerExpired (object o)  cil managed 
+           instance default void SearchOverlap (class Bless.Util.IntervalTree`1/ITNode<!T> n, class Bless.Util.IRange r)  cil managed 
     {
-        // Method begins at RVA 0x3fdd
-	// Code size 58 (0x3a)
-	.maxstack 8
-	IL_0000:  ldarg.0 
-	IL_0001:  ldfld class Bless.Util.ProgressCallback Bless.Util.ThreadedAsyncOperation::progressCallback
-	IL_0006:  brfalse IL_0039
-
-	IL_000b:  ldarg.0 
-	IL_000c:  ldfld bool Bless.Util.ThreadedAsyncOperation::useGLibIdle
-	IL_0011:  brfalse IL_002d
+        // Method begins at RVA 0x3fd0
+	// Code size 182 (0xb6)
+	.maxstack 3
+	.locals init (
+		!T	V_0,
+		class [mscorlib]System.Collections.Generic.IEnumerator`1<!T>	V_1)
+	IL_0000:  ldarg.1 
+	IL_0001:  brfalse IL_00b5
 
-	IL_0016:  ldarg.0 
-	IL_0017:  ldftn instance bool class Bless.Util.ThreadedAsyncOperation::'<ProgressTimerExpired>m__0'()
-	IL_001d:  newobj instance void ['glib-sharp']GLib.IdleHandler::.ctor(object, native int)
-	IL_0022:  call unsigned int32 ['glib-sharp']GLib.Idle::Add(<BROKEN CLASS token_ 100002d due to Could not load file or assembly or one of its dependencies. assembly:glib-sharp, Version=2.12.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f type:<unknown type> member:<none>>)
-	IL_0027:  pop 
-	IL_0028:  br IL_0039
+	IL_0006:  ldarg.1 
+	IL_0007:  callvirt instance int64 class Bless.Util.IntervalTree`1/ITNode<!T>::get_Max()
+	IL_000c:  ldarg.2 
+	IL_000d:  callvirt instance int64 class Bless.Util.IRange::get_Start()
+	IL_0012:  blt IL_0087
 
-	IL_002d:  ldarg.0 
-	IL_002e:  ldarg.0 
-	IL_002f:  callvirt instance bool class Bless.Util.ThreadedAsyncOperation::UpdateProgress()
-	IL_0034:  stfld bool Bless.Util.ThreadedAsyncOperation::cancelled
-	IL_0039:  ret 
-    } // end of method ThreadedAsyncOperation::ProgressTimerExpired
+	IL_0017:  ldarg.1 
+	IL_0018:  callvirt instance class Bless.Util.RedBlackTree`2/INode<int64,!0> class Bless.Util.IntervalTree`1/ITNode<!T>::get_Left()
+	IL_001d:  brfalse IL_0034
 
-    // method line 162
-    .method family hidebysig 
-           instance default void ActivateProgressReport (bool activate)  cil managed 
-    {
-        // Method begins at RVA 0x4018
-	// Code size 84 (0x54)
-	.maxstack 3
+	IL_0022:  ldarg.0 
+	IL_0023:  ldarg.1 
+	IL_0024:  callvirt instance class Bless.Util.RedBlackTree`2/INode<int64,!0> class Bless.Util.IntervalTree`1/ITNode<!T>::get_Left()
+	IL_0029:  isinst class Bless.Util.IntervalTree`1/ITNode<!0>
+	IL_002e:  ldarg.2 
+	IL_002f:  call instance void class Bless.Util.IntervalTree`1<!T>::SearchOverlap(class Bless.Util.IntervalTree`1/ITNode<!0>, class Bless.Util.IRange)
+	IL_0034:  ldarg.1 
+	IL_0035:  callvirt instance class [mscorlib]System.Collections.Generic.IList`1<!0> class Bless.Util.IntervalTree`1/ITNode<!T>::get_Values()
+	IL_003a:  callvirt instance class [mscorlib]System.Collections.Generic.IEnumerator`1<!0> class [mscorlib]System.Collections.Generic.IEnumerable`1<!T>::GetEnumerator()
+	IL_003f:  stloc.1 
 	.try { // 0
-	  IL_0000:  ldarg.1 
-	  IL_0001:  brfalse IL_002c
+	  IL_0040:  br IL_006a
 
-	  IL_0006:  ldarg.0 
-	  IL_0007:  ldfld class [mscorlib]System.Threading.Timer Bless.Util.ThreadedAsyncOperation::progressTimer
-	  IL_000c:  ldc.i4.0 
-	  IL_000d:  ldc.i4.s 0x32
-	  IL_000f:  callvirt instance bool class [mscorlib]System.Threading.Timer::Change(int32, int32)
-	  IL_0014:  pop 
-	  IL_0015:  ldarg.0 
-	  IL_0016:  ldfld class [mscorlib]System.Threading.Timer Bless.Util.ThreadedAsyncOperation::showProgressTimer
-	  IL_001b:  ldc.i4 500
-	  IL_0020:  ldc.i4.0 
-	  IL_0021:  callvirt instance bool class [mscorlib]System.Threading.Timer::Change(int32, int32)
-	  IL_0026:  pop 
-	  IL_0027:  br IL_0048
+	  IL_0045:  ldloc.1 
+	  IL_0046:  callvirt instance !0 class [mscorlib]System.Collections.Generic.IEnumerator`1<!T>::get_Current()
+	  IL_004b:  stloc.0 
+	  IL_004c:  ldarg.0 
+	  IL_004d:  ldloc.0 
+	  IL_004e:  box !0
+	  IL_0053:  ldarg.2 
+	  IL_0054:  call instance bool class Bless.Util.IntervalTree`1<!T>::RangesOverlap(class Bless.Util.IRange, class Bless.Util.IRange)
+	  IL_0059:  brfalse IL_006a
 
-	  IL_002c:  ldarg.0 
-	  IL_002d:  ldfld class [mscorlib]System.Threading.Timer Bless.Util.ThreadedAsyncOperation::progressTimer
-	  IL_0032:  ldc.i4.m1 
-	  IL_0033:  ldc.i4.m1 
-	  IL_0034:  callvirt instance bool class [mscorlib]System.Threading.Timer::Change(int32, int32)
-	  IL_0039:  pop 
-	  IL_003a:  ldarg.0 
-	  IL_003b:  ldfld class [mscorlib]System.Threading.Timer Bless.Util.ThreadedAsyncOperation::showProgressTimer
-	  IL_0040:  ldc.i4.m1 
-	  IL_0041:  ldc.i4.m1 
-	  IL_0042:  callvirt instance bool class [mscorlib]System.Threading.Timer::Change(int32, int32)
-	  IL_0047:  pop 
-	  IL_0048:  leave IL_0053
+	  IL_005e:  ldarg.0 
+	  IL_005f:  ldfld class [mscorlib]System.Collections.Generic.List`1<!0> class Bless.Util.IntervalTree`1<!0>::searchResults
+	  IL_0064:  ldloc.0 
+	  IL_0065:  callvirt instance void class [mscorlib]System.Collections.Generic.List`1<!T>::Add(!0)
+	  IL_006a:  ldloc.1 
+	  IL_006b:  callvirt instance bool class [mscorlib]System.Collections.IEnumerator::MoveNext()
+	  IL_0070:  brtrue IL_0045
+
+	  IL_0075:  leave IL_0087
 
 	} // end .try 0
-	catch class [mscorlib]System.ObjectDisposedException { // 0
-	  IL_004d:  pop 
-	  IL_004e:  leave IL_0053
+	finally  { // 0
+	  IL_007a:  ldloc.1 
+	  IL_007b:  brfalse IL_0086
 
+	  IL_0080:  ldloc.1 
+	  IL_0081:  callvirt instance void class [mscorlib]System.IDisposable::Dispose()
+	  IL_0086:  endfinally 
 	} // end handler 0
-	IL_0053:  ret 
-    } // end of method ThreadedAsyncOperation::ActivateProgressReport
+	IL_0087:  ldarg.1 
+	IL_0088:  callvirt instance int64 class Bless.Util.IntervalTree`1/ITNode<!T>::get_Key()
+	IL_008d:  ldarg.2 
+	IL_008e:  callvirt instance int64 class Bless.Util.IRange::get_End()
+	IL_0093:  bgt IL_00b5
 
-    // method line 163
+	IL_0098:  ldarg.1 
+	IL_0099:  callvirt instance class Bless.Util.RedBlackTree`2/INode<int64,!0> class Bless.Util.IntervalTree`1/ITNode<!T>::get_Right()
+	IL_009e:  brfalse IL_00b5
+
+	IL_00a3:  ldarg.0 
+	IL_00a4:  ldarg.1 
+	IL_00a5:  callvirt instance class Bless.Util.RedBlackTree`2/INode<int64,!0> class Bless.Util.IntervalTree`1/ITNode<!T>::get_Right()
+	IL_00aa:  isinst class Bless.Util.IntervalTree`1/ITNode<!0>
+	IL_00af:  ldarg.2 
+	IL_00b0:  call instance void class Bless.Util.IntervalTree`1<!T>::SearchOverlap(class Bless.Util.IntervalTree`1/ITNode<!0>, class Bless.Util.IRange)
+	IL_00b5:  ret 
+    } // end of method IntervalTree`1::SearchOverlap
+
+    // method line 159
     .method public hidebysig 
-           instance default void OperationThread ()  cil managed 
+           instance default void Delete (!T r)  cil managed 
     {
-        // Method begins at RVA 0x4088
-	// Code size 143 (0x8f)
+        // Method begins at RVA 0x40a4
+	// Code size 81 (0x51)
 	.maxstack 2
 	.locals init (
-		class [mscorlib]System.Exception	V_0)
+		class Bless.Util.IntervalTree`1/ITNode<!T>	V_0)
 	IL_0000:  ldarg.0 
-	IL_0001:  ldarg.0 
-	IL_0002:  ldfld bool Bless.Util.ThreadedAsyncOperation::activateProgress
-	IL_0007:  call instance void class Bless.Util.ThreadedAsyncOperation::ActivateProgressReport(bool)
-	.try { // 1
-	  .try { // 0
-	    IL_000c:  ldarg.0 
-	    IL_000d:  callvirt instance void class Bless.Util.ThreadedAsyncOperation::DoOperation()
-	    IL_0012:  ldarg.0 
-	    IL_0013:  ldfld bool Bless.Util.ThreadedAsyncOperation::cancelled
-	    IL_0018:  brfalse IL_0029
-
-	    IL_001d:  ldarg.0 
-	    IL_001e:  ldc.i4.1 
-	    IL_001f:  stfld valuetype Bless.Util.ThreadedAsyncOperation/OperationResult Bless.Util.ThreadedAsyncOperation::opResult
-	    IL_0024:  br IL_0030
-
-	    IL_0029:  ldarg.0 
-	    IL_002a:  ldc.i4.0 
-	    IL_002b:  stfld valuetype Bless.Util.ThreadedAsyncOperation/OperationResult Bless.Util.ThreadedAsyncOperation::opResult
-	    IL_0030:  leave IL_008e
-
-	  } // end .try 0
-	  catch class [mscorlib]System.Exception { // 0
-	    IL_0035:  stloc.0 
-	    IL_0036:  ldarg.0 
-	    IL_0037:  ldloc.0 
-	    IL_0038:  stfld class [mscorlib]System.Exception Bless.Util.ThreadedAsyncOperation::threadException
-	    IL_003d:  ldarg.0 
-	    IL_003e:  ldc.i4.2 
-	    IL_003f:  stfld valuetype Bless.Util.ThreadedAsyncOperation/OperationResult Bless.Util.ThreadedAsyncOperation::opResult
-	    IL_0044:  leave IL_008e
-
-	  } // end handler 0
-	} // end .try 1
-	finally  { // 1
-	  IL_0049:  ldarg.0 
-	  IL_004a:  ldfld class [mscorlib]System.Threading.Timer Bless.Util.ThreadedAsyncOperation::progressTimer
-	  IL_004f:  callvirt instance void class [mscorlib]System.Threading.Timer::Dispose()
-	  IL_0054:  ldarg.0 
-	  IL_0055:  ldfld class [mscorlib]System.Threading.Timer Bless.Util.ThreadedAsyncOperation::showProgressTimer
-	  IL_005a:  callvirt instance void class [mscorlib]System.Threading.Timer::Dispose()
-	  IL_005f:  ldarg.0 
-	  IL_0060:  callvirt instance void class Bless.Util.ThreadedAsyncOperation::EndOperation()
-	  IL_0065:  ldarg.0 
-	  IL_0066:  ldfld bool Bless.Util.ThreadedAsyncOperation::useGLibIdle
-	  IL_006b:  brfalse IL_0087
+	IL_0001:  ldarga.s 1
+	IL_0003:  constrained. !0
+	IL_0009:  callvirt instance int64 class Bless.Util.IRange::get_Start()
+	IL_000e:  callvirt instance class Bless.Util.RedBlackTree`2/INode<!0,!1> class Bless.Util.RedBlackTree`2<int64, !T>::SearchNode(!0)
+	IL_0013:  isinst class Bless.Util.IntervalTree`1/ITNode<!0>
+	IL_0018:  stloc.0 
+	IL_0019:  ldloc.0 
+	IL_001a:  brtrue IL_0020
 
-	  IL_0070:  ldarg.0 
-	  IL_0071:  ldftn instance bool class Bless.Util.ThreadedAsyncOperation::'<OperationThread>m__1'()
-	  IL_0077:  newobj instance void ['glib-sharp']GLib.IdleHandler::.ctor(object, native int)
-	  IL_007c:  call unsigned int32 ['glib-sharp']GLib.Idle::Add(<BROKEN CLASS token_ 100002d due to Could not load file or assembly or one of its dependencies. assembly:glib-sharp, Version=2.12.0.0, Culture=neutral, PublicKeyToken=35e10195dab3c99f type:<unknown type> member:<none>>)
-	  IL_0081:  pop 
-	  IL_0082:  br IL_008d
+	IL_001f:  ret 
+	IL_0020:  ldloc.0 
+	IL_0021:  callvirt instance class [mscorlib]System.Collections.Generic.IList`1<!0> class Bless.Util.IntervalTree`1/ITNode<!T>::get_Values()
+	IL_0026:  ldarg.1 
+	IL_0027:  callvirt instance bool class [mscorlib]System.Collections.Generic.ICollection`1<!T>::Remove(!0)
+	IL_002c:  pop 
+	IL_002d:  ldloc.0 
+	IL_002e:  callvirt instance class [mscorlib]System.Collections.Generic.IList`1<!0> class Bless.Util.IntervalTree`1/ITNode<!T>::get_Values()
+	IL_0033:  callvirt instance int32 class [mscorlib]System.Collections.Generic.ICollection`1<!T>::get_Count()
+	IL_0038:  brtrue IL_0050
 
-	  IL_0087:  ldarg.0 
-	  IL_0088:  call instance void class Bless.Util.ThreadedAsyncOperation::OperationFinished()
-	  IL_008d:  endfinally 
-	} // end handler 1
-	IL_008e:  ret 
-    } // end of method ThreadedAsyncOperation::OperationThread
+	IL_003d:  ldarg.0 
+	IL_003e:  ldarga.s 1
+	IL_0040:  constrained. !0
+	IL_0046:  callvirt instance int64 class Bless.Util.IRange::get_Start()
+	IL_004b:  callvirt instance void class Bless.Util.RedBlackTree`2<int64, !T>::Delete(!0)
+	IL_0050:  ret 
+    } // end of method IntervalTree`1::Delete
 
-    // method line 164
-    .method private hidebysig 
-           instance default bool '<ProgressTimerExpired>m__0' ()  cil managed 
-    {
-        .custom instance void class [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::'.ctor'() =  (01 00 00 00 ) // ....
+  .class nested family auto ansi beforefieldinit ITNode<(class Bless.Util.IRange) T>
+  	extends [mscorlib]System.Object
+  	implements class Bless.Util.RedBlackTree`2/INode<int64,!0>  {
+    .field  private  int64 max
+    .field  private  int64 key
+    .field  private  class [mscorlib]System.Collections.Generic.IList`1<!0> values
+    .field  private  class Bless.Util.RedBlackTree`2/INode<int64,!0> left
+    .field  private  class Bless.Util.RedBlackTree`2/INode<int64,!0> right
+    .field  private  valuetype Bless.Util.RedBlackTree`2/Color<int64,!0> color
 
-        // Method begins at RVA 0x4140
-	// Code size 14 (0xe)
+    // method line 160
+    .method public hidebysig specialname rtspecialname 
+           instance default void '.ctor' (int64 key, !T val, valuetype Bless.Util.RedBlackTree`2/Color<int64, !T> color)  cil managed 
+    {
+        // Method begins at RVA 0x4101
+	// Code size 63 (0x3f)
 	.maxstack 8
 	IL_0000:  ldarg.0 
-	IL_0001:  ldarg.0 
-	IL_0002:  callvirt instance bool class Bless.Util.ThreadedAsyncOperation::UpdateProgress()
-	IL_0007:  stfld bool Bless.Util.ThreadedAsyncOperation::cancelled
-	IL_000c:  ldc.i4.0 
-	IL_000d:  ret 
-    } // end of method ThreadedAsyncOperation::<ProgressTimerExpired>m__0
+	IL_0001:  call instance void object::'.ctor'()
+	IL_0006:  ldarg.0 
+	IL_0007:  ldarg.1 
+	IL_0008:  stfld int64 class Bless.Util.IntervalTree`1/ITNode<!0>::key
+	IL_000d:  ldarg.0 
+	IL_000e:  newobj instance void class [mscorlib]System.Collections.Generic.List`1<!T>::'.ctor'()
+	IL_0013:  stfld class [mscorlib]System.Collections.Generic.IList`1<!0> class Bless.Util.IntervalTree`1/ITNode<!0>::values
+	IL_0018:  ldarg.0 
+	IL_0019:  ldfld class [mscorlib]System.Collections.Generic.IList`1<!0> class Bless.Util.IntervalTree`1/ITNode<!0>::values
+	IL_001e:  ldarg.2 
+	IL_001f:  callvirt instance void class [mscorlib]System.Collections.Generic.ICollection`1<!T>::Add(!0)
+	IL_0024:  ldarg.0 
+	IL_0025:  ldarg.3 
+	IL_0026:  stfld valuetype Bless.Util.RedBlackTree`2/Color<int64,!0> class Bless.Util.IntervalTree`1/ITNode<!0>::color
+	IL_002b:  ldarg.0 
+	IL_002c:  ldarga.s 2
+	IL_002e:  constrained. !0
+	IL_0034:  callvirt instance int64 class Bless.Util.IRange::get_End()
+	IL_0039:  stfld int64 class Bless.Util.IntervalTree`1/ITNode<!0>::max
+	IL_003e:  ret 
+    } // end of method ITNode::.ctor
 
-    // method line 165
-    .method private hidebysig 
-           instance default bool '<OperationThread>m__1' ()  cil managed 
+    // method line 161
+    .method public hidebysig specialname 
+           instance default int64 get_Max ()  cil managed 
     {
-        .custom instance void class [mscorlib]System.Runtime.CompilerServices.CompilerGeneratedAttribute::'.ctor'() =  (01 00 00 00 ) // ....
+        // Method begins at RVA 0x4141
+	// Code size 7 (0x7)
+	.maxstack 8
+	IL_0000:  ldarg.0 
+	IL_0001:  ldfld int64 class Bless.Util.IntervalTree`1/ITNode<!0>::max
+	IL_0006:  ret 
+    } // end of method ITNode::get_Max
 
-        // Method begins at RVA 0x414f
+    // method line 162
+    .method public hidebysig specialname 
+           instance default void set_Max (int64 'value')  cil managed 
+    {
+        // Method begins at RVA 0x4149
 	// Code size 8 (0x8)
 	.maxstack 8
 	IL_0000:  ldarg.0 
-	IL_0001:  call instance void class Bless.Util.ThreadedAsyncOperation::OperationFinished()
-	IL_0006:  ldc.i4.0 
+	IL_0001:  ldarg.1 
+	IL_0002:  stfld int64 class Bless.Util.IntervalTree`1/ITNode<!0>::max
 	IL_0007:  ret 
-    } // end of method ThreadedAsyncOperation::<OperationThread>m__1
-
-	.property instance valuetype Bless.Util.ThreadedAsyncOperation/OperationResult Result ()
-	{
-		.get instance default valuetype Bless.Util.ThreadedAsyncOperation/OperationResult Bless.Util.ThreadedAsyncOperation::get_Result () 
-		.set instance default void Bless.Util.ThreadedAsyncOperation::set_Result (valuetype Bless.Util.ThreadedAsyncOperation/OperationResult 'value') 
-	}
-	.property instance class [mscorlib]System.Exception ThreadException ()
-	{
-		.get instance default class [mscorlib]System.Exception Bless.Util.ThreadedAsyncOperation::get_ThreadException () 
-		.set instance default void Bless.Util.ThreadedAsyncOperation::set_ThreadException (class [mscorlib]System.Exception 'value') 
-	}
-  .class nested private auto ansi sealed Event
-  	extends [mscorlib]System.Enum
-  {
-    .field  public specialname rtspecialname  int32 value__
-    .field public static literal  valuetype Bless.Util.ThreadedAsyncOperation/Event ShowProgress = int32(0x00000000)
-    .field public static literal  valuetype Bless.Util.ThreadedAsyncOperation/Event Finished = int32(0x00000001)
-    .field public static literal  valuetype Bless.Util.ThreadedAsyncOperation/Event Exception = int32(0x00000002)
-
-  } // end of class Event
-
-  .class nested public auto ansi sealed OperationResult
-  	extends [mscorlib]System.Enum
-  {
-    .field  public specialname rtspecialname  int32 value__
-    .field public static literal  valuetype Bless.Util.ThreadedAsyncOperation/OperationResult Finished = int32(0x00000000)
-    .field public static literal  valuetype Bless.Util.ThreadedAsyncOperation/OperationResult Cancelled = int32(0x00000001)
-    .field public static literal  valuetype Bless.Util.ThreadedAsyncOperation/OperationResult CaughtException = int32(0x00000002)
+    } // end of method ITNode::set_Max
 
-  } // end of class OperationResult
+    // method line 163
+    .method public final virtual hidebysig newslot specialname 
+           instance default int64 get_Key ()  cil managed 
+    {
+        // Method begins at RVA 0x4152
+	// Code size 7 (0x7)
+	.maxstack 8
+	IL_0000:  ldarg.0 
+	IL_0001:  ldfld int64 class Bless.Util.IntervalTree`1/ITNode<!0>::key
+	IL_0006:  ret 
+    } // end of method ITNode::get_Key
 
-  } // end of class Bless.Util.ThreadedAsyncOperation
-}
+    // method line 164
+    .method public final virtual hidebysig newslot specialname 
+           instance default void set_Key (int64 'value')  cil managed 
+    {
+        // Method begins at RVA 0x415a
+	// Code size 8 (0x8)
+	.maxstack 8
+	IL_0000:  ldarg.0 
+	IL_0001:  ldarg.1 
+	IL_0002:  stfld int64 class Bless.Util.IntervalTree`1/ITNode<!0>::key
+	IL_0007:  ret 
+    } // end of method ITNode::set_Key
 
-.namespace Bless.Util
-{
-  .class public auto ansi beforefieldinit ThreadedAsyncResult
-  	extends [mscorlib]System.Object
-  	implements [mscorlib]System.IAsyncResult  {
-    .field  private  object asyncState
-    .field  private  class [mscorlib]System.Threading.WaitHandle asyncWaitHandle
-    .field  private  bool isCompleted
+    // method line 165
+    .method public final virtual hidebysig newslot specialname 
+           instance default class [mscorlib]System.Collections.Generic.IList`1<!T> get_Values ()  cil managed 
+    {
+        // Method begins at RVA 0x4163
+	// Code size 7 (0x7)
+	.maxstack 8
+	IL_0000:  ldarg.0 
+	IL_0001:  ldfld class [mscorlib]System.Collections.Generic.IList`1<!0> class Bless.Util.IntervalTree`1/ITNode<!0>::values
+	IL_0006:  ret 
+    } // end of method ITNode::get_Values
 
     // method line 166
-    .method public hidebysig specialname rtspecialname 
-           instance default void '.ctor' (object state, class [mscorlib]System.Threading.WaitHandle handle, bool complete)  cil managed 
+    .method public final virtual hidebysig newslot specialname 
+           instance default void set_Values (class [mscorlib]System.Collections.Generic.IList`1<!T> 'value')  cil managed 
     {
-        // Method begins at RVA 0x4158
-	// Code size 28 (0x1c)
+        // Method begins at RVA 0x416b
+	// Code size 14 (0xe)
 	.maxstack 8
 	IL_0000:  ldarg.0 
-	IL_0001:  call instance void object::'.ctor'()
-	IL_0006:  ldarg.0 
-	IL_0007:  ldarg.1 
-	IL_0008:  stfld object Bless.Util.ThreadedAsyncResult::asyncState
-	IL_000d:  ldarg.0 
-	IL_000e:  ldarg.2 
-	IL_000f:  stfld class [mscorlib]System.Threading.WaitHandle Bless.Util.ThreadedAsyncResult::asyncWaitHandle
-	IL_0014:  ldarg.0 
-	IL_0015:  ldarg.3 
-	IL_0016:  stfld bool Bless.Util.ThreadedAsyncResult::isCompleted
-	IL_001b:  ret 
-    } // end of method ThreadedAsyncResult::.ctor
+	IL_0001:  ldarg.1 
+	IL_0002:  stfld class [mscorlib]System.Collections.Generic.IList`1<!0> class Bless.Util.IntervalTree`1/ITNode<!0>::values
+	IL_0007:  ldarg.0 
+	IL_0008:  call instance void class Bless.Util.IntervalTree`1/ITNode<!T>::UpdateMax()
+	IL_000d:  ret 
+    } // end of method ITNode::set_Values
 
     // method line 167
     .method public final virtual hidebysig newslot specialname 
-           instance default object get_AsyncState ()  cil managed 
+           instance default class Bless.Util.RedBlackTree`2/INode<int64, !T> get_Left ()  cil managed 
     {
-        // Method begins at RVA 0x4175
+        // Method begins at RVA 0x417a
 	// Code size 7 (0x7)
 	.maxstack 8
 	IL_0000:  ldarg.0 
-	IL_0001:  ldfld object Bless.Util.ThreadedAsyncResult::asyncState
+	IL_0001:  ldfld class Bless.Util.RedBlackTree`2/INode<int64,!0> class Bless.Util.IntervalTree`1/ITNode<!0>::left
 	IL_0006:  ret 
-    } // end of method ThreadedAsyncResult::get_AsyncState
+    } // end of method ITNode::get_Left
 
     // method line 168
     .method public final virtual hidebysig newslot specialname 
-           instance default class [mscorlib]System.Threading.WaitHandle get_AsyncWaitHandle ()  cil managed 
+           instance default void set_Left (class Bless.Util.RedBlackTree`2/INode<int64, !T> 'value')  cil managed 
     {
-        // Method begins at RVA 0x417d
-	// Code size 7 (0x7)
+        // Method begins at RVA 0x4182
+	// Code size 14 (0xe)
 	.maxstack 8
 	IL_0000:  ldarg.0 
-	IL_0001:  ldfld class [mscorlib]System.Threading.WaitHandle Bless.Util.ThreadedAsyncResult::asyncWaitHandle
-	IL_0006:  ret 
-    } // end of method ThreadedAsyncResult::get_AsyncWaitHandle
+	IL_0001:  ldarg.1 
+	IL_0002:  stfld class Bless.Util.RedBlackTree`2/INode<int64,!0> class Bless.Util.IntervalTree`1/ITNode<!0>::left
+	IL_0007:  ldarg.0 
+	IL_0008:  call instance void class Bless.Util.IntervalTree`1/ITNode<!T>::UpdateMax()
+	IL_000d:  ret 
+    } // end of method ITNode::set_Left
 
     // method line 169
     .method public final virtual hidebysig newslot specialname 
-           instance default bool get_CompletedSynchronously ()  cil managed 
+           instance default class Bless.Util.RedBlackTree`2/INode<int64, !T> get_Right ()  cil managed 
     {
-        // Method begins at RVA 0x4185
-	// Code size 2 (0x2)
+        // Method begins at RVA 0x4191
+	// Code size 7 (0x7)
 	.maxstack 8
-	IL_0000:  ldc.i4.0 
-	IL_0001:  ret 
-    } // end of method ThreadedAsyncResult::get_CompletedSynchronously
+	IL_0000:  ldarg.0 
+	IL_0001:  ldfld class Bless.Util.RedBlackTree`2/INode<int64,!0> class Bless.Util.IntervalTree`1/ITNode<!0>::right
+	IL_0006:  ret 
+    } // end of method ITNode::get_Right
 
     // method line 170
     .method public final virtual hidebysig newslot specialname 
-           instance default bool get_IsCompleted ()  cil managed 
+           instance default void set_Right (class Bless.Util.RedBlackTree`2/INode<int64, !T> 'value')  cil managed 
     {
-        // Method begins at RVA 0x4188
-	// Code size 7 (0x7)
+        // Method begins at RVA 0x4199
+	// Code size 14 (0xe)
 	.maxstack 8
-	IL_0000:  ldarg.0 
-	IL_0001:  ldfld bool Bless.Util.ThreadedAsyncResult::isCompleted
-	IL_0006:  ret 
-    } // end of method ThreadedAsyncResult::get_IsCompleted
-
-	.property instance object AsyncState ()
-	{
-		.get instance default object Bless.Util.ThreadedAsyncResult::get_AsyncState () 
-	}
-	.property instance class [mscorlib]System.Threading.WaitHandle AsyncWaitHandle ()
-	{
-		.get instance default class [mscorlib]System.Threading.WaitHandle Bless.Util.ThreadedAsyncResult::get_AsyncWaitHandle () 
-	}
-	.property instance bool CompletedSynchronously ()
-	{
-		.get instance default bool Bless.Util.ThreadedAsyncResult::get_CompletedSynchronously () 
-	}
-	.property instance bool IsCompleted ()
-	{
-		.get instance default bool Bless.Util.ThreadedAsyncResult::get_IsCompleted () 
-	}
-  } // end of class Bless.Util.ThreadedAsyncResult
-}
-
-.namespace Bless.Util
-{
-  .class public auto ansi beforefieldinit TempFile
-  	extends [mscorlib]System.Object
-  {
+	IL_0000:  ldarg.0 
+	IL_0001:  ldarg.1 
+	IL_0002:  stfld class Bless.Util.RedBlackTree`2/INode<int64,!0> class Bless.Util.IntervalTree`1/ITNode<!0>::right
+	IL_0007:  ldarg.0 
+	IL_0008:  call instance void class Bless.Util.IntervalTree`1/ITNode<!T>::UpdateMax()
+	IL_000d:  ret 
+    } // end of method ITNode::set_Right
 
     // method line 171
-    .method private hidebysig specialname rtspecialname 
-           instance default void '.ctor' ()  cil managed 
+    .method public final virtual hidebysig newslot specialname 
+           instance default valuetype Bless.Util.RedBlackTree`2/Color<int64, !T> get_Color ()  cil managed 
     {
-        // Method begins at RVA 0x4190
+        // Method begins at RVA 0x41a8
 	// Code size 7 (0x7)
 	.maxstack 8
 	IL_0000:  ldarg.0 
-	IL_0001:  call instance void object::'.ctor'()
+	IL_0001:  ldfld valuetype Bless.Util.RedBlackTree`2/Color<int64,!0> class Bless.Util.IntervalTree`1/ITNode<!0>::color
 	IL_0006:  ret 
-    } // end of method TempFile::.ctor
+    } // end of method ITNode::get_Color
 
     // method line 172
-    .method public static hidebysig 
-           default string CreateName (string dir)  cil managed 
+    .method public final virtual hidebysig newslot specialname 
+           instance default void set_Color (valuetype Bless.Util.RedBlackTree`2/Color<int64, !T> 'value')  cil managed 
     {
-        // Method begins at RVA 0x4198
-	// Code size 132 (0x84)
-	.maxstack 4
+        // Method begins at RVA 0x41b0
+	// Code size 8 (0x8)
+	.maxstack 8
+	IL_0000:  ldarg.0 
+	IL_0001:  ldarg.1 
+	IL_0002:  stfld valuetype Bless.Util.RedBlackTree`2/Color<int64,!0> class Bless.Util.IntervalTree`1/ITNode<!0>::color
+	IL_0007:  ret 
+    } // end of method ITNode::set_Color
+
+    // method line 173
+    .method private hidebysig 
+           instance default void UpdateMax ()  cil managed 
+    {
+        // Method begins at RVA 0x41bc
+	// Code size 152 (0x98)
+	.maxstack 2
 	.locals init (
-		string	V_0,
-		class [mscorlib]System.Random	V_1,
-		int32	V_2)
-	IL_0000:  newobj instance void class [mscorlib]System.Random::'.ctor'()
-	IL_0005:  stloc.1 
-	IL_0006:  ldsfld string [mscorlib]System.String::Empty
-	IL_000b:  stloc.0 
-	IL_000c:  ldc.i4.0 
-	IL_000d:  stloc.2 
-	IL_000e:  br IL_0039
+		int64	V_0,
+		!T	V_1,
+		class [mscorlib]System.Collections.Generic.IEnumerator`1<!T>	V_2)
+	IL_0000:  ldc.i4.m1 
+	IL_0001:  conv.i8 
+	IL_0002:  stloc.0 
+	IL_0003:  ldarg.0 
+	IL_0004:  call instance class Bless.Util.RedBlackTree`2/INode<int64,!0> class Bless.Util.IntervalTree`1/ITNode<!T>::get_Left()
+	IL_0009:  brfalse IL_0025
 
-	IL_0013:  ldloc.0 
-	IL_0014:  ldloc.1 
-	IL_0015:  callvirt instance int32 class [mscorlib]System.Random::Next()
-	IL_001a:  ldc.i4.s 0x1a
-	IL_001c:  rem 
-	IL_001d:  ldc.i4.s 0x61
-	IL_001f:  call int32 class [mscorlib]System.Convert::ToInt32(char)
-	IL_0024:  add 
-	IL_0025:  call char class [mscorlib]System.Convert::ToChar(int32)
-	IL_002a:  box [mscorlib]System.Char
-	IL_002f:  call string string::Concat(object, object)
-	IL_0034:  stloc.0 
-	IL_0035:  ldloc.2 
-	IL_0036:  ldc.i4.1 
-	IL_0037:  add 
-	IL_0038:  stloc.2 
-	IL_0039:  ldloc.2 
-	IL_003a:  ldc.i4.8 
-	IL_003b:  blt IL_0013
+	IL_000e:  ldloc.0 
+	IL_000f:  ldarg.0 
+	IL_0010:  call instance class Bless.Util.RedBlackTree`2/INode<int64,!0> class Bless.Util.IntervalTree`1/ITNode<!T>::get_Left()
+	IL_0015:  isinst class Bless.Util.IntervalTree`1/ITNode<!0>
+	IL_001a:  callvirt instance int64 class Bless.Util.IntervalTree`1/ITNode<!T>::get_Max()
+	IL_001f:  call int64 class [mscorlib]System.Math::Max(int64, int64)
+	IL_0024:  stloc.0 
+	IL_0025:  ldarg.0 
+	IL_0026:  call instance class Bless.Util.RedBlackTree`2/INode<int64,!0> class Bless.Util.IntervalTree`1/ITNode<!T>::get_Right()
+	IL_002b:  brfalse IL_0047
 
-	IL_0040:  ldc.i4.4 
-	IL_0041:  newarr [mscorlib]System.Object
-	IL_0046:  dup 
-	IL_0047:  ldc.i4.0 
-	IL_0048:  ldarg.0 
-	IL_0049:  stelem.ref 
-	IL_004a:  dup 
-	IL_004b:  ldc.i4.1 
-	IL_004c:  ldsfld char [mscorlib]System.IO.Path::DirectorySeparatorChar
-	IL_0051:  box [mscorlib]System.Char
-	IL_0056:  stelem.ref 
-	IL_0057:  dup 
-	IL_0058:  ldc.i4.2 
-	IL_0059:  ldloc.0 
-	IL_005a:  stelem.ref 
-	IL_005b:  dup 
-	IL_005c:  ldc.i4.3 
-	IL_005d:  ldstr ".bless"
-	IL_0062:  stelem.ref 
-	IL_0063:  call string string::Concat(object[])
-	IL_0068:  call bool class [mscorlib]System.IO.File::Exists(string)
-	IL_006d:  brtrue IL_0006
+	IL_0030:  ldloc.0 
+	IL_0031:  ldarg.0 
+	IL_0032:  call instance class Bless.Util.RedBlackTree`2/INode<int64,!0> class Bless.Util.IntervalTree`1/ITNode<!T>::get_Right()
+	IL_0037:  isinst class Bless.Util.IntervalTree`1/ITNode<!0>
+	IL_003c:  callvirt instance int64 class Bless.Util.IntervalTree`1/ITNode<!T>::get_Max()
+	IL_0041:  call int64 class [mscorlib]System.Math::Max(int64, int64)
+	IL_0046:  stloc.0 
+	IL_0047:  ldarg.0 
+	IL_0048:  call instance class [mscorlib]System.Collections.Generic.IList`1<!0> class Bless.Util.IntervalTree`1/ITNode<!T>::get_Values()
+	IL_004d:  callvirt instance class [mscorlib]System.Collections.Generic.IEnumerator`1<!0> class [mscorlib]System.Collections.Generic.IEnumerable`1<!T>::GetEnumerator()
+	IL_0052:  stloc.2 
+	.try { // 0
+	  IL_0053:  br IL_0073
 
-	IL_0072:  ldarg.0 
-	IL_0073:  ldloc.0 
-	IL_0074:  ldstr ".bless"
-	IL_0079:  call string string::Concat(string, string)
-	IL_007e:  call string class [mscorlib]System.IO.Path::Combine(string, string)
-	IL_0083:  ret 
-    } // end of method TempFile::CreateName
+	  IL_0058:  ldloc.2 
+	  IL_0059:  callvirt instance !0 class [mscorlib]System.Collections.Generic.IEnumerator`1<!T>::get_Current()
+	  IL_005e:  stloc.1 
+	  IL_005f:  ldloc.0 
+	  IL_0060:  ldloca.s 1
+	  IL_0062:  constrained. !0
+	  IL_0068:  callvirt instance int64 class Bless.Util.IRange::get_End()
+	  IL_006d:  call int64 class [mscorlib]System.Math::Max(int64, int64)
+	  IL_0072:  stloc.0 
+	  IL_0073:  ldloc.2 
+	  IL_0074:  callvirt instance bool class [mscorlib]System.Collections.IEnumerator::MoveNext()
+	  IL_0079:  brtrue IL_0058
 
-  } // end of class Bless.Util.TempFile
-}
+	  IL_007e:  leave IL_0090
 
-  .class public auto ansi beforefieldinit Portable
+	} // end .try 0
+	finally  { // 0
+	  IL_0083:  ldloc.2 
+	  IL_0084:  brfalse IL_008f
+
+	  IL_0089:  ldloc.2 
+	  IL_008a:  callvirt instance void class [mscorlib]System.IDisposable::Dispose()
+	  IL_008f:  endfinally 
+	} // end handler 0
+	IL_0090:  ldarg.0 
+	IL_0091:  ldloc.0 
+	IL_0092:  stfld int64 class Bless.Util.IntervalTree`1/ITNode<!0>::max
+	IL_0097:  ret 
+    } // end of method ITNode::UpdateMax
+
+	.property instance int64 Max ()
+	{
+		.get instance default int64 Bless.Util.IntervalTree`1/ITNode::get_Max () 
+		.set instance default void Bless.Util.IntervalTree`1/ITNode::set_Max (int64 'value') 
+	}
+	.property instance int64 Key ()
+	{
+		.get instance default int64 Bless.Util.IntervalTree`1/ITNode::get_Key () 
+		.set instance default void Bless.Util.IntervalTree`1/ITNode::set_Key (int64 'value') 
+	}
+	.property instance class [mscorlib]System.Collections.Generic.IList`1<!T> Values ()
+	{
+		.get instance default class [mscorlib]System.Collections.Generic.IList`1<!0> Bless.Util.IntervalTree`1/ITNode::get_Values () 
+		.set instance default void Bless.Util.IntervalTree`1/ITNode::set_Values (class [mscorlib]System.Collections.Generic.IList`1<!0> 'value') 
+	}
+	.property instance class Bless.Util.RedBlackTree`2/INode<int64, !T> Left ()
+	{
+		.get instance default class Bless.Util.RedBlackTree`2/INode<int64, !0> Bless.Util.IntervalTree`1/ITNode::get_Left () 
+		.set instance default void Bless.Util.IntervalTree`1/ITNode::set_Left (class Bless.Util.RedBlackTree`2/INode<int64, !0> 'value') 
+	}
+	.property instance class Bless.Util.RedBlackTree`2/INode<int64, !T> Right ()
+	{
+		.get instance default class Bless.Util.RedBlackTree`2/INode<int64, !0> Bless.Util.IntervalTree`1/ITNode::get_Right () 
+		.set instance default void Bless.Util.IntervalTree`1/ITNode::set_Right (class Bless.Util.RedBlackTree`2/INode<int64, !0> 'value') 
+	}
+	.property instance valuetype Bless.Util.RedBlackTree`2/Color<int64, !T> Color ()
+	{
+		.get instance default valuetype Bless.Util.RedBlackTree`2/Color<int64, !0> Bless.Util.IntervalTree`1/ITNode::get_Color () 
+		.set instance default void Bless.Util.IntervalTree`1/ITNode::set_Color (valuetype Bless.Util.RedBlackTree`2/Color<int64, !0> 'value') 
+	}
+  } // end of class ITNode
+
+  .class nested family auto ansi beforefieldinit ITNodeFactory<(class Bless.Util.IRange) T>
   	extends [mscorlib]System.Object
-  {
+  	implements class Bless.Util.RedBlackTree`2/INodeFactory<int64,!0>  {
 
-    // method line 173
+    // method line 174
     .method public hidebysig specialname rtspecialname 
            instance default void '.ctor' ()  cil managed 
     {
-        // Method begins at RVA 0x4228
+        // Method begins at RVA 0x4270
 	// Code size 7 (0x7)
 	.maxstack 8
 	IL_0000:  ldarg.0 
 	IL_0001:  call instance void object::'.ctor'()
 	IL_0006:  ret 
-    } // end of method Portable::.ctor
-
-    // method line 174
-    .method public static hidebysig 
-           default int64 GetAvailableMemory ()  cil managed 
-    {
-        // Method begins at RVA 0x4230
-	// Code size 22 (0x16)
-	.maxstack 2
-	.locals init (
-		int64	V_0,
-		int64	V_1,
-		int64	V_2)
-	IL_0000:  ldc.i4.s 0x56
-	IL_0002:  call int64 class [Mono.Posix]Mono.Unix.Native.Syscall::sysconf(valuetype [Mono.Posix]Mono.Unix.Native.SysconfName)
-	IL_0007:  stloc.0 
-	IL_0008:  ldc.i4.s 0x1e
-	IL_000a:  call int64 class [Mono.Posix]Mono.Unix.Native.Syscall::sysconf(valuetype [Mono.Posix]Mono.Unix.Native.SysconfName)
-	IL_000f:  stloc.1 
-	IL_0010:  ldloc.0 
-	IL_0011:  ldloc.1 
-	IL_0012:  mul 
-	IL_0013:  stloc.2 
-	IL_0014:  ldloc.2 
-	IL_0015:  ret 
-    } // end of method Portable::GetAvailableMemory
+    } // end of method ITNodeFactory::.ctor
 
     // method line 175
-    .method public static hidebysig 
-           default int64 GetAvailableDiskSpace (string path)  cil managed 
+    .method public final virtual hidebysig newslot 
+           instance default class Bless.Util.RedBlackTree`2/INode<int64, !T> CreateNode (int64 key, !T val, valuetype Bless.Util.RedBlackTree`2/Color<int64, !T> color)  cil managed 
     {
-        // Method begins at RVA 0x4254
-	// Code size 35 (0x23)
-	.maxstack 2
-	.locals init (
-		valuetype [Mono.Posix]Mono.Unix.Native.Statvfs	V_0,
-		int64	V_1)
-	IL_0000:  ldloca.s 0
-	IL_0002:  initobj [Mono.Posix]Mono.Unix.Native.Statvfs
-	IL_0008:  ldarg.0 
-	IL_0009:  ldloca.s 0
-	IL_000b:  call int32 class [Mono.Posix]Mono.Unix.Native.Syscall::statvfs(string, [out] valuetype [Mono.Posix]Mono.Unix.Native.Statvfs&)
-	IL_0010:  pop 
-	IL_0011:  ldloca.s 0
-	IL_0013:  ldfld unsigned int64 [Mono.Posix]Mono.Unix.Native.Statvfs::f_bavail
-	IL_0018:  ldloca.s 0
-	IL_001a:  ldfld unsigned int64 [Mono.Posix]Mono.Unix.Native.Statvfs::f_bsize
-	IL_001f:  mul 
-	IL_0020:  stloc.1 
-	IL_0021:  ldloc.1 
-	IL_0022:  ret 
-    } // end of method Portable::GetAvailableDiskSpace
+        // Method begins at RVA 0x4278
+	// Code size 9 (0x9)
+	.maxstack 8
+	IL_0000:  ldarg.1 
+	IL_0001:  ldarg.2 
+	IL_0002:  ldarg.3 
+	IL_0003:  newobj instance void class Bless.Util.IntervalTree`1/ITNode<!T>::'.ctor'(int64, !0, valuetype Bless.Util.RedBlackTree`2/Color<int64,!0>)
+	IL_0008:  ret 
+    } // end of method ITNodeFactory::CreateNode
 
-  } // end of class Portable
+  } // end of class ITNodeFactory
+
+  } // end of class Bless.Util.IntervalTree`1
+}
 
   .class private auto ansi abstract sealed beforefieldinit '<PrivateImplementationDetails>'
   	extends [mscorlib]System.Object
overalldiffered=1 (not bit-by-bit identical)
overall=1