public void writeKeyVal <T>(string key, IEnumerable <T> e, RawValueWriterCallback <T> callback)
 {
     writeKey(key);
     beginRawArray();
     foreach (var cur in e)
     {
         processComma();
         callback(cur, this);
     }
     endArray();
 }
 public void writeKeyVal <T>(string key, T val, RawValueWriterCallback <T> callback)
 {
     writeKey(key);
     callback(val, this);
 }