private string GenArrayWriteCode(Type valueType, BaseGenerator gen)
 {
     return(string.Format(
                "		int size = d.Length;\n"+
                "		o.Write(size);\n"+
                "		for(int i = 0; i < size; ++i)\n"+
                "		{{\n"+
                "			{0};\n"+
                "		}}\n"+
                "",
                gen.WriteExpression(valueType, "d[i]")
                ));
 }
 protected virtual string GenListWriteCode(Type type, Type keyType, Type valueType, BaseGenerator keyGen, BaseGenerator valueGen)
 {
     return(string.Format(
                "		int size = d.Count;\n"+
                "		o.Write(size);\n"+
                "		foreach(var elem in d)\n"+
                "		{{\n"+
                "			{0};\n"+
                "			{1};\n"+
                "		}}\n"+
                "",
                keyGen.WriteExpression(keyType, "elem.Key"),
                valueGen.WriteExpression(valueType, "elem.Value")
                ));
 }