浏览代码

Reformatted to include braces

csharptest 14 年之前
父节点
当前提交
74c5e0c376
共有 67 个文件被更改,包括 1943 次插入773 次删除
  1. 2 1
      src/ProtoGen/EnumFieldGenerator.cs
  2. 2 1
      src/ProtoGen/EnumGenerator.cs
  3. 2 1
      src/ProtoGen/ExtensionGenerator.cs
  4. 19 3
      src/ProtoGen/FieldGeneratorBase.cs
  5. 6 4
      src/ProtoGen/Generator.cs
  6. 2 1
      src/ProtoGen/MessageFieldGenerator.cs
  7. 40 15
      src/ProtoGen/MessageGenerator.cs
  8. 2 1
      src/ProtoGen/PrimitiveFieldGenerator.cs
  9. 3 3
      src/ProtoGen/ProgramPreprocess.cs
  10. 0 1
      src/ProtoGen/Properties/AssemblyInfo.cs
  11. 9 3
      src/ProtoGen/RepeatedEnumFieldGenerator.cs
  12. 5 3
      src/ProtoGen/RepeatedMessageFieldGenerator.cs
  13. 10 4
      src/ProtoGen/RepeatedPrimitiveFieldGenerator.cs
  14. 4 2
      src/ProtoGen/ServiceGenerator.cs
  15. 18 7
      src/ProtoGen/ServiceInterfaceGenerator.cs
  16. 4 3
      src/ProtoGen/SourceGeneratorBase.cs
  17. 11 11
      src/ProtoGen/SourceGenerators.cs
  18. 2 1
      src/ProtoGen/UmbrellaClassGenerator.cs
  19. 0 1
      src/ProtocolBuffers/AbstractBuilder.cs
  20. 0 2
      src/ProtocolBuffers/AbstractBuilderLite.cs
  21. 11 24
      src/ProtocolBuffers/AbstractMessage.cs
  22. 0 2
      src/ProtocolBuffers/AbstractMessageLite.cs
  23. 14 3
      src/ProtocolBuffers/ByteArray.cs
  24. 4 3
      src/ProtocolBuffers/ByteString.cs
  25. 61 35
      src/ProtocolBuffers/CodedInputStream.cs
  26. 64 18
      src/ProtocolBuffers/CodedOutputStream.ComputeSize.cs
  27. 232 112
      src/ProtocolBuffers/CodedOutputStream.cs
  28. 18 3
      src/ProtocolBuffers/Collections/PopsicleList.cs
  29. 1 1
      src/ProtocolBuffers/Descriptors/DescriptorPool.cs
  30. 1 0
      src/ProtocolBuffers/Descriptors/EnumDescriptor.cs
  31. 2 4
      src/ProtocolBuffers/Descriptors/FieldMappingAttribute.cs
  32. 4 1
      src/ProtocolBuffers/DynamicMessage.cs
  33. 10 9
      src/ProtocolBuffers/EnumLite.cs
  34. 35 8
      src/ProtocolBuffers/ExtendableBuilderLite.cs
  35. 4 1
      src/ProtocolBuffers/ExtendableMessageLite.cs
  36. 5 1
      src/ProtocolBuffers/ExtensionRegistry.cs
  37. 18 8
      src/ProtocolBuffers/ExtensionRegistryLite.cs
  38. 4 1
      src/ProtocolBuffers/FieldAccess/SinglePrimitiveAccessor.cs
  39. 22 35
      src/ProtocolBuffers/FieldSet.cs
  40. 0 1
      src/ProtocolBuffers/GeneratedBuilderLite.cs
  41. 3 3
      src/ProtocolBuffers/GeneratedExtensionLite.cs
  42. 23 13
      src/ProtocolBuffers/GeneratedMessage.cs
  43. 17 8
      src/ProtocolBuffers/GeneratedMessageLite.cs
  44. 1 1
      src/ProtocolBuffers/GeneratedRepeatExtension.cs
  45. 0 2
      src/ProtocolBuffers/IBuilderLite.cs
  46. 7 4
      src/ProtocolBuffers/ICodedInputStream.cs
  47. 27 19
      src/ProtocolBuffers/ICodedOutputStream.cs
  48. 0 2
      src/ProtocolBuffers/IMessageLite.cs
  49. 0 2
      src/ProtocolBuffers/IRpcDispatch.cs
  50. 5 1
      src/ProtocolBuffers/MessageStreamIterator.cs
  51. 1 1
      src/ProtocolBuffers/NameHelpers.cs
  52. 216 62
      src/ProtocolBuffers/Serialization/AbstractReader.cs
  53. 14 11
      src/ProtocolBuffers/Serialization/AbstractTextReader.cs
  54. 44 11
      src/ProtocolBuffers/Serialization/AbstractTextWriter.cs
  55. 275 109
      src/ProtocolBuffers/Serialization/AbstractWriter.cs
  56. 35 16
      src/ProtocolBuffers/Serialization/DictionaryReader.cs
  57. 19 10
      src/ProtocolBuffers/Serialization/DictionaryWriter.cs
  58. 69 21
      src/ProtocolBuffers/Serialization/JsonFormatReader.cs
  59. 140 36
      src/ProtocolBuffers/Serialization/JsonFormatWriter.cs
  60. 147 37
      src/ProtocolBuffers/Serialization/JsonTextCursor.cs
  61. 74 21
      src/ProtocolBuffers/Serialization/XmlFormatReader.cs
  62. 83 23
      src/ProtocolBuffers/Serialization/XmlFormatWriter.cs
  63. 1 0
      src/ProtocolBuffers/Serialization/XmlReaderOptions.cs
  64. 3 0
      src/ProtocolBuffers/Serialization/XmlWriterOptions.cs
  65. 8 6
      src/ProtocolBuffers/TextFormat.cs
  66. 79 16
      src/ProtocolBuffers/UnknownFieldSet.cs
  67. 1 0
      src/ProtocolBuffers/WireFormat.cs

+ 2 - 1
src/ProtoGen/EnumFieldGenerator.cs

@@ -112,7 +112,8 @@ namespace Google.ProtocolBuffers.ProtoGen
         public void GenerateSerializationCode(TextGenerator writer)
         public void GenerateSerializationCode(TextGenerator writer)
         {
         {
             writer.WriteLine("if (has{0}) {{", PropertyName);
             writer.WriteLine("if (has{0}) {{", PropertyName);
-            writer.WriteLine("  output.WriteEnum({0}, field_names[{2}], (int) {1}, {1});", Number, PropertyName, FieldOrdinal);
+            writer.WriteLine("  output.WriteEnum({0}, field_names[{2}], (int) {1}, {1});", Number, PropertyName,
+                             FieldOrdinal);
             writer.WriteLine("}");
             writer.WriteLine("}");
         }
         }
 
 

+ 2 - 1
src/ProtoGen/EnumGenerator.cs

@@ -48,7 +48,8 @@ namespace Google.ProtocolBuffers.ProtoGen
         public void Generate(TextGenerator writer)
         public void Generate(TextGenerator writer)
         {
         {
             writer.WriteLine("[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]");
             writer.WriteLine("[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]");
-            writer.WriteLine("[global::System.CodeDom.Compiler.GeneratedCodeAttribute(\"{0}\", \"{1}\")]", GetType().Assembly.GetName().Name, GetType().Assembly.GetName().Version);
+            writer.WriteLine("[global::System.CodeDom.Compiler.GeneratedCodeAttribute(\"{0}\", \"{1}\")]",
+                             GetType().Assembly.GetName().Name, GetType().Assembly.GetName().Version);
             writer.WriteLine("{0} enum {1} {{", ClassAccessLevel, Descriptor.Name);
             writer.WriteLine("{0} enum {1} {{", ClassAccessLevel, Descriptor.Name);
             writer.Indent();
             writer.Indent();
             foreach (EnumValueDescriptor value in Descriptor.Values)
             foreach (EnumValueDescriptor value in Descriptor.Values)

+ 2 - 1
src/ProtoGen/ExtensionGenerator.cs

@@ -35,7 +35,6 @@
 #endregion
 #endregion
 
 
 using System;
 using System;
-using System.Globalization;
 using Google.ProtocolBuffers.Descriptors;
 using Google.ProtocolBuffers.Descriptors;
 
 
 namespace Google.ProtocolBuffers.ProtoGen
 namespace Google.ProtocolBuffers.ProtoGen
@@ -124,10 +123,12 @@ namespace Google.ProtocolBuffers.ProtoGen
                 writer.WriteLine("\"{0}\",", Descriptor.FullName);
                 writer.WriteLine("\"{0}\",", Descriptor.FullName);
                 writer.WriteLine("{0}.DefaultInstance,", extends);
                 writer.WriteLine("{0}.DefaultInstance,", extends);
                 if (!Descriptor.IsRepeated)
                 if (!Descriptor.IsRepeated)
+                {
                     writer.WriteLine("{0},",
                     writer.WriteLine("{0},",
                                      Descriptor.HasDefaultValue
                                      Descriptor.HasDefaultValue
                                          ? DefaultValue
                                          ? DefaultValue
                                          : IsNullableType ? "null" : "default(" + type + ")");
                                          : IsNullableType ? "null" : "default(" + type + ")");
+                }
                 writer.WriteLine("{0},",
                 writer.WriteLine("{0},",
                                  (Descriptor.MappedType == MappedType.Message) ? type + ".DefaultInstance" : "null");
                                  (Descriptor.MappedType == MappedType.Message) ? type + ".DefaultInstance" : "null");
                 writer.WriteLine("{0},",
                 writer.WriteLine("{0},",

+ 19 - 3
src/ProtoGen/FieldGeneratorBase.cs

@@ -36,6 +36,7 @@
 
 
 using System;
 using System;
 using System.Globalization;
 using System.Globalization;
+using System.Text;
 using Google.ProtocolBuffers.Descriptors;
 using Google.ProtocolBuffers.Descriptors;
 
 
 namespace Google.ProtocolBuffers.ProtoGen
 namespace Google.ProtocolBuffers.ProtoGen
@@ -54,7 +55,10 @@ namespace Google.ProtocolBuffers.ProtoGen
         public abstract void WriteEquals(TextGenerator writer);
         public abstract void WriteEquals(TextGenerator writer);
         public abstract void WriteToString(TextGenerator writer);
         public abstract void WriteToString(TextGenerator writer);
 
 
-        public int FieldOrdinal { get { return _fieldOrdinal; } }
+        public int FieldOrdinal
+        {
+            get { return _fieldOrdinal; }
+        }
 
 
         private static bool AllPrintableAscii(string text)
         private static bool AllPrintableAscii(string text)
         {
         {
@@ -70,7 +74,7 @@ namespace Google.ProtocolBuffers.ProtoGen
 
 
         protected bool HasDefaultValue
         protected bool HasDefaultValue
         {
         {
-            get 
+            get
             {
             {
                 switch (Descriptor.FieldType)
                 switch (Descriptor.FieldType)
                 {
                 {
@@ -141,20 +145,32 @@ namespace Google.ProtocolBuffers.ProtoGen
                             if (Descriptor.FieldType == FieldType.Double && value is double)
                             if (Descriptor.FieldType == FieldType.Double && value is double)
                             {
                             {
                                 if (double.IsNaN((double) value))
                                 if (double.IsNaN((double) value))
+                                {
                                     return "double.NaN";
                                     return "double.NaN";
+                                }
                                 if (double.IsPositiveInfinity((double) value))
                                 if (double.IsPositiveInfinity((double) value))
+                                {
                                     return "double.PositiveInfinity";
                                     return "double.PositiveInfinity";
+                                }
                                 if (double.IsNegativeInfinity((double) value))
                                 if (double.IsNegativeInfinity((double) value))
+                                {
                                     return "double.NegativeInfinity";
                                     return "double.NegativeInfinity";
+                                }
                             }
                             }
                             else if (Descriptor.FieldType == FieldType.Float && value is float)
                             else if (Descriptor.FieldType == FieldType.Float && value is float)
                             {
                             {
                                 if (float.IsNaN((float) value))
                                 if (float.IsNaN((float) value))
+                                {
                                     return "float.NaN";
                                     return "float.NaN";
+                                }
                                 if (float.IsPositiveInfinity((float) value))
                                 if (float.IsPositiveInfinity((float) value))
+                                {
                                     return "float.PositiveInfinity";
                                     return "float.PositiveInfinity";
+                                }
                                 if (float.IsNegativeInfinity((float) value))
                                 if (float.IsNegativeInfinity((float) value))
+                                {
                                     return "float.NegativeInfinity";
                                     return "float.NegativeInfinity";
+                                }
                             }
                             }
                             return value.ToString(CultureInfo.InvariantCulture) + suffix;
                             return value.ToString(CultureInfo.InvariantCulture) + suffix;
                         }
                         }
@@ -188,7 +204,7 @@ namespace Google.ProtocolBuffers.ProtoGen
                         {
                         {
                             string temp =
                             string temp =
                                 Convert.ToBase64String(
                                 Convert.ToBase64String(
-                                    System.Text.Encoding.UTF8.GetBytes((String) Descriptor.DefaultValue));
+                                    Encoding.UTF8.GetBytes((String) Descriptor.DefaultValue));
                             return String.Format("ByteString.FromBase64(\"{0}\").ToStringUtf8()", temp);
                             return String.Format("ByteString.FromBase64(\"{0}\").ToStringUtf8()", temp);
                         }
                         }
                         return string.Format("(string) {0}.Descriptor.Fields[{1}].DefaultValue",
                         return string.Format("(string) {0}.Descriptor.Fields[{1}].DefaultValue",

+ 6 - 4
src/ProtoGen/Generator.cs

@@ -35,11 +35,11 @@
 #endregion
 #endregion
 
 
 using System.Collections.Generic;
 using System.Collections.Generic;
+using System.IO;
 using System.Text;
 using System.Text;
+using Google.ProtocolBuffers.Collections;
 using Google.ProtocolBuffers.DescriptorProtos;
 using Google.ProtocolBuffers.DescriptorProtos;
-using System.IO;
 using Google.ProtocolBuffers.Descriptors;
 using Google.ProtocolBuffers.Descriptors;
-using Google.ProtocolBuffers.Collections;
 
 
 namespace Google.ProtocolBuffers.ProtoGen
 namespace Google.ProtocolBuffers.ProtoGen
 {
 {
@@ -148,7 +148,9 @@ namespace Google.ProtocolBuffers.ProtoGen
             // we've already converted all the dependencies, until we get to a stalemate
             // we've already converted all the dependencies, until we get to a stalemate
             List<FileDescriptorProto> fileList = new List<FileDescriptorProto>();
             List<FileDescriptorProto> fileList = new List<FileDescriptorProto>();
             foreach (FileDescriptorSet set in descriptorProtos)
             foreach (FileDescriptorSet set in descriptorProtos)
+            {
                 fileList.AddRange(set.FileList);
                 fileList.AddRange(set.FileList);
+            }
 
 
             FileDescriptor[] converted = new FileDescriptor[fileList.Count];
             FileDescriptor[] converted = new FileDescriptor[fileList.Count];
 
 
@@ -172,10 +174,10 @@ namespace Google.ProtocolBuffers.ProtoGen
 
 
 
 
                     CSharpFileOptions.Builder builder = options.ToBuilder();
                     CSharpFileOptions.Builder builder = options.ToBuilder();
-                    if (candidate.Options.HasExtension(DescriptorProtos.CSharpOptions.CSharpFileOptions))
+                    if (candidate.Options.HasExtension(CSharpOptions.CSharpFileOptions))
                     {
                     {
                         builder.MergeFrom(
                         builder.MergeFrom(
-                            candidate.Options.GetExtension(DescriptorProtos.CSharpOptions.CSharpFileOptions));
+                            candidate.Options.GetExtension(CSharpOptions.CSharpFileOptions));
                     }
                     }
                     CSharpFileOptions localOptions = builder.Build();
                     CSharpFileOptions localOptions = builder.Build();
 
 

+ 2 - 1
src/ProtoGen/MessageFieldGenerator.cs

@@ -129,7 +129,8 @@ namespace Google.ProtocolBuffers.ProtoGen
         public void GenerateSerializationCode(TextGenerator writer)
         public void GenerateSerializationCode(TextGenerator writer)
         {
         {
             writer.WriteLine("if (has{0}) {{", PropertyName);
             writer.WriteLine("if (has{0}) {{", PropertyName);
-            writer.WriteLine("  output.Write{0}({1}, field_names[{3}], {2});", MessageOrGroup, Number, PropertyName, FieldOrdinal);
+            writer.WriteLine("  output.Write{0}({1}, field_names[{3}], {2});", MessageOrGroup, Number, PropertyName,
+                             FieldOrdinal);
             writer.WriteLine("}");
             writer.WriteLine("}");
         }
         }
 
 

+ 40 - 15
src/ProtoGen/MessageGenerator.cs

@@ -38,7 +38,6 @@ using System;
 using System.Collections.Generic;
 using System.Collections.Generic;
 using Google.ProtocolBuffers.DescriptorProtos;
 using Google.ProtocolBuffers.DescriptorProtos;
 using Google.ProtocolBuffers.Descriptors;
 using Google.ProtocolBuffers.Descriptors;
-using ExtensionRange = Google.ProtocolBuffers.DescriptorProtos.DescriptorProto.Types.ExtensionRange;
 
 
 namespace Google.ProtocolBuffers.ProtoGen
 namespace Google.ProtocolBuffers.ProtoGen
 {
 {
@@ -146,7 +145,9 @@ namespace Google.ProtocolBuffers.ProtoGen
                 {
                 {
                     List<string> names = new List<string>();
                     List<string> names = new List<string>();
                     foreach (FieldDescriptor fieldDescriptor in Descriptor.Fields)
                     foreach (FieldDescriptor fieldDescriptor in Descriptor.Fields)
+                    {
                         names.Add(fieldDescriptor.Name);
                         names.Add(fieldDescriptor.Name);
+                    }
                     //if you change this, the search must also change in GenerateBuilderParsingMethods
                     //if you change this, the search must also change in GenerateBuilderParsingMethods
                     names.Sort(StringComparer.Ordinal);
                     names.Sort(StringComparer.Ordinal);
                     _fieldNames = names.ToArray();
                     _fieldNames = names.ToArray();
@@ -169,7 +170,8 @@ namespace Google.ProtocolBuffers.ProtoGen
         {
         {
             writer.WriteLine("[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]");
             writer.WriteLine("[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]");
             writer.WriteLine("[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]");
             writer.WriteLine("[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]");
-            writer.WriteLine("[global::System.CodeDom.Compiler.GeneratedCodeAttribute(\"{0}\", \"{1}\")]", GetType().Assembly.GetName().Name, GetType().Assembly.GetName().Version);
+            writer.WriteLine("[global::System.CodeDom.Compiler.GeneratedCodeAttribute(\"{0}\", \"{1}\")]",
+                             GetType().Assembly.GetName().Name, GetType().Assembly.GetName().Version);
             writer.WriteLine("{0} sealed partial class {1} : pb::{2}Message{3}<{1}, {1}.Builder> {{",
             writer.WriteLine("{0} sealed partial class {1} : pb::{2}Message{3}<{1}, {1}.Builder> {{",
                              ClassAccessLevel, ClassName,
                              ClassAccessLevel, ClassName,
                              Descriptor.Proto.ExtensionRangeCount > 0 ? "Extendable" : "Generated",
                              Descriptor.Proto.ExtensionRangeCount > 0 ? "Extendable" : "Generated",
@@ -181,13 +183,16 @@ namespace Google.ProtocolBuffers.ProtoGen
             if (OptimizeSpeed)
             if (OptimizeSpeed)
             {
             {
                 writer.WriteLine("private static readonly string[] _{0}FieldNames = new string[] {{ {2}{1}{2} }};",
                 writer.WriteLine("private static readonly string[] _{0}FieldNames = new string[] {{ {2}{1}{2} }};",
-                    NameHelpers.UnderscoresToCamelCase(ClassName), String.Join("\", \"", FieldNames), FieldNames.Length > 0 ? "\"" : "");
+                                 NameHelpers.UnderscoresToCamelCase(ClassName), String.Join("\", \"", FieldNames),
+                                 FieldNames.Length > 0 ? "\"" : "");
                 List<string> tags = new List<string>();
                 List<string> tags = new List<string>();
                 foreach (string name in FieldNames)
                 foreach (string name in FieldNames)
+                {
                     tags.Add(WireFormat.MakeTag(Descriptor.FindFieldByName(name)).ToString());
                     tags.Add(WireFormat.MakeTag(Descriptor.FindFieldByName(name)).ToString());
+                }
 
 
                 writer.WriteLine("private static readonly uint[] _{0}FieldTags = new uint[] {{ {1} }};",
                 writer.WriteLine("private static readonly uint[] _{0}FieldTags = new uint[] {{ {1} }};",
-                    NameHelpers.UnderscoresToCamelCase(ClassName), String.Join(", ", tags.ToArray()));
+                                 NameHelpers.UnderscoresToCamelCase(ClassName), String.Join(", ", tags.ToArray()));
             }
             }
             writer.WriteLine("public static {0} DefaultInstance {{", ClassName);
             writer.WriteLine("public static {0} DefaultInstance {{", ClassName);
             writer.WriteLine("  get { return defaultInstance; }");
             writer.WriteLine("  get { return defaultInstance; }");
@@ -227,7 +232,8 @@ namespace Google.ProtocolBuffers.ProtoGen
                 writer.WriteLine("#region Nested types");
                 writer.WriteLine("#region Nested types");
                 writer.WriteLine("[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]");
                 writer.WriteLine("[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]");
                 writer.WriteLine("[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]");
                 writer.WriteLine("[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]");
-                writer.WriteLine("[global::System.CodeDom.Compiler.GeneratedCodeAttribute(\"{0}\", \"{1}\")]", GetType().Assembly.GetName().Name, GetType().Assembly.GetName().Version);
+                writer.WriteLine("[global::System.CodeDom.Compiler.GeneratedCodeAttribute(\"{0}\", \"{1}\")]",
+                                 GetType().Assembly.GetName().Name, GetType().Assembly.GetName().Version);
                 writer.WriteLine("public static class Types {");
                 writer.WriteLine("public static class Types {");
                 writer.Indent();
                 writer.Indent();
                 WriteChildren(writer, null, Descriptor.EnumTypes);
                 WriteChildren(writer, null, Descriptor.EnumTypes);
@@ -287,7 +293,10 @@ namespace Google.ProtocolBuffers.ProtoGen
             {
             {
                 CreateFieldGenerator(fieldDescriptor).WriteHash(writer);
                 CreateFieldGenerator(fieldDescriptor).WriteHash(writer);
             }
             }
-            if (callbase) writer.WriteLine("hash ^= base.GetHashCode();");
+            if (callbase)
+            {
+                writer.WriteLine("hash ^= base.GetHashCode();");
+            }
             writer.WriteLine("return hash;");
             writer.WriteLine("return hash;");
             writer.Outdent();
             writer.Outdent();
             writer.WriteLine("}");
             writer.WriteLine("}");
@@ -301,7 +310,10 @@ namespace Google.ProtocolBuffers.ProtoGen
             {
             {
                 CreateFieldGenerator(fieldDescriptor).WriteEquals(writer);
                 CreateFieldGenerator(fieldDescriptor).WriteEquals(writer);
             }
             }
-            if (callbase) writer.WriteLine("if (!base.Equals(other)) return false;");
+            if (callbase)
+            {
+                writer.WriteLine("if (!base.Equals(other)) return false;");
+            }
             writer.WriteLine("return true;");
             writer.WriteLine("return true;");
             writer.Outdent();
             writer.Outdent();
             writer.WriteLine("}");
             writer.WriteLine("}");
@@ -317,7 +329,10 @@ namespace Google.ProtocolBuffers.ProtoGen
             {
             {
                 CreateFieldGenerator(fieldDescriptor).WriteToString(writer);
                 CreateFieldGenerator(fieldDescriptor).WriteToString(writer);
             }
             }
-            if (callbase) writer.WriteLine("base.PrintTo(writer);");
+            if (callbase)
+            {
+                writer.WriteLine("base.PrintTo(writer);");
+            }
             writer.Outdent();
             writer.Outdent();
             writer.WriteLine("}");
             writer.WriteLine("}");
             writer.WriteLine("#endregion");
             writer.WriteLine("#endregion");
@@ -329,7 +344,8 @@ namespace Google.ProtocolBuffers.ProtoGen
             List<FieldDescriptor> sortedFields = new List<FieldDescriptor>(Descriptor.Fields);
             List<FieldDescriptor> sortedFields = new List<FieldDescriptor>(Descriptor.Fields);
             sortedFields.Sort((f1, f2) => f1.FieldNumber.CompareTo(f2.FieldNumber));
             sortedFields.Sort((f1, f2) => f1.FieldNumber.CompareTo(f2.FieldNumber));
 
 
-            List<ExtensionRange> sortedExtensions = new List<ExtensionRange>(Descriptor.Proto.ExtensionRangeList);
+            List<DescriptorProto.Types.ExtensionRange> sortedExtensions =
+                new List<DescriptorProto.Types.ExtensionRange>(Descriptor.Proto.ExtensionRangeList);
             sortedExtensions.Sort((r1, r2) => (r1.Start.CompareTo(r2.Start)));
             sortedExtensions.Sort((r1, r2) => (r1.Start.CompareTo(r2.Start)));
 
 
             writer.WriteLine("public override void WriteTo(pb::ICodedOutputStream output) {");
             writer.WriteLine("public override void WriteTo(pb::ICodedOutputStream output) {");
@@ -423,7 +439,8 @@ namespace Google.ProtocolBuffers.ProtoGen
             CreateFieldGenerator(fieldDescriptor).GenerateSerializationCode(writer);
             CreateFieldGenerator(fieldDescriptor).GenerateSerializationCode(writer);
         }
         }
 
 
-        private static void GenerateSerializeOneExtensionRange(TextGenerator writer, ExtensionRange extensionRange)
+        private static void GenerateSerializeOneExtensionRange(TextGenerator writer,
+                                                               DescriptorProto.Types.ExtensionRange extensionRange)
         {
         {
             writer.WriteLine("extensionWriter.WriteUntil({0}, output);", extensionRange.End);
             writer.WriteLine("extensionWriter.WriteUntil({0}, output);", extensionRange.End);
         }
         }
@@ -534,7 +551,8 @@ namespace Google.ProtocolBuffers.ProtoGen
             writer.WriteLine();
             writer.WriteLine();
             writer.WriteLine("[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]");
             writer.WriteLine("[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]");
             writer.WriteLine("[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]");
             writer.WriteLine("[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]");
-            writer.WriteLine("[global::System.CodeDom.Compiler.GeneratedCodeAttribute(\"{0}\", \"{1}\")]", GetType().Assembly.GetName().Name, GetType().Assembly.GetName().Version);
+            writer.WriteLine("[global::System.CodeDom.Compiler.GeneratedCodeAttribute(\"{0}\", \"{1}\")]",
+                             GetType().Assembly.GetName().Name, GetType().Assembly.GetName().Version);
             writer.WriteLine("{0} sealed partial class Builder : pb::{2}Builder{3}<{1}, Builder> {{",
             writer.WriteLine("{0} sealed partial class Builder : pb::{2}Builder{3}<{1}, Builder> {{",
                              ClassAccessLevel, ClassName,
                              ClassAccessLevel, ClassName,
                              Descriptor.Proto.ExtensionRangeCount > 0 ? "Extendable" : "Generated", RuntimeSuffix);
                              Descriptor.Proto.ExtensionRangeCount > 0 ? "Extendable" : "Generated", RuntimeSuffix);
@@ -664,7 +682,8 @@ namespace Google.ProtocolBuffers.ProtoGen
             writer.WriteLine("if(tag == 0 && field_name != null) {");
             writer.WriteLine("if(tag == 0 && field_name != null) {");
             writer.Indent();
             writer.Indent();
             //if you change from StringComparer.Ordinal, the array sort in FieldNames { get; } must also change
             //if you change from StringComparer.Ordinal, the array sort in FieldNames { get; } must also change
-            writer.WriteLine("int field_ordinal = global::System.Array.BinarySearch(_{0}FieldNames, field_name, global::System.StringComparer.Ordinal);", 
+            writer.WriteLine(
+                "int field_ordinal = global::System.Array.BinarySearch(_{0}FieldNames, field_name, global::System.StringComparer.Ordinal);",
                 NameHelpers.UnderscoresToCamelCase(ClassName));
                 NameHelpers.UnderscoresToCamelCase(ClassName));
             writer.WriteLine("if(field_ordinal >= 0)");
             writer.WriteLine("if(field_ordinal >= 0)");
             writer.WriteLine("  tag = _{0}FieldTags[field_ordinal];", NameHelpers.UnderscoresToCamelCase(ClassName));
             writer.WriteLine("  tag = _{0}FieldTags[field_ordinal];", NameHelpers.UnderscoresToCamelCase(ClassName));
@@ -675,7 +694,8 @@ namespace Google.ProtocolBuffers.ProtoGen
                 writer.WriteLine("    unknownFields = pb::UnknownFieldSet.CreateBuilder(this.UnknownFields);");
                 writer.WriteLine("    unknownFields = pb::UnknownFieldSet.CreateBuilder(this.UnknownFields);");
                 writer.WriteLine("  }");
                 writer.WriteLine("  }");
             }
             }
-            writer.WriteLine("  ParseUnknownField(input, {0}extensionRegistry, tag, field_name);", UseLiteRuntime ? "" : "unknownFields, ");
+            writer.WriteLine("  ParseUnknownField(input, {0}extensionRegistry, tag, field_name);",
+                             UseLiteRuntime ? "" : "unknownFields, ");
             writer.WriteLine("  continue;");
             writer.WriteLine("  continue;");
             writer.WriteLine("}");
             writer.WriteLine("}");
             writer.Outdent();
             writer.Outdent();
@@ -718,8 +738,13 @@ namespace Google.ProtocolBuffers.ProtoGen
                 WireFormat.WireType wt = WireFormat.GetWireType(field.FieldType);
                 WireFormat.WireType wt = WireFormat.GetWireType(field.FieldType);
                 uint tag = WireFormat.MakeTag(field.FieldNumber, wt);
                 uint tag = WireFormat.MakeTag(field.FieldNumber, wt);
 
 
-                if(field.IsRepeated && (wt == WireFormat.WireType.Varint || wt == WireFormat.WireType.Fixed32 || wt == WireFormat.WireType.Fixed64))
-                    writer.WriteLine("case {0}:", WireFormat.MakeTag(field.FieldNumber, WireFormat.WireType.LengthDelimited));
+                if (field.IsRepeated &&
+                    (wt == WireFormat.WireType.Varint || wt == WireFormat.WireType.Fixed32 ||
+                     wt == WireFormat.WireType.Fixed64))
+                {
+                    writer.WriteLine("case {0}:",
+                                     WireFormat.MakeTag(field.FieldNumber, WireFormat.WireType.LengthDelimited));
+                }
 
 
                 writer.WriteLine("case {0}: {{", tag);
                 writer.WriteLine("case {0}: {{", tag);
                 writer.Indent();
                 writer.Indent();

+ 2 - 1
src/ProtoGen/PrimitiveFieldGenerator.cs

@@ -103,7 +103,8 @@ namespace Google.ProtocolBuffers.ProtoGen
         public void GenerateSerializationCode(TextGenerator writer)
         public void GenerateSerializationCode(TextGenerator writer)
         {
         {
             writer.WriteLine("if (has{0}) {{", PropertyName);
             writer.WriteLine("if (has{0}) {{", PropertyName);
-            writer.WriteLine("  output.Write{0}({1}, field_names[{3}], {2});", CapitalizedTypeName, Number, PropertyName, FieldOrdinal);
+            writer.WriteLine("  output.Write{0}({1}, field_names[{3}], {2});", CapitalizedTypeName, Number, PropertyName,
+                             FieldOrdinal);
             writer.WriteLine("}");
             writer.WriteLine("}");
         }
         }
 
 

+ 3 - 3
src/ProtoGen/ProgramPreprocess.cs

@@ -14,8 +14,8 @@ namespace Google.ProtocolBuffers.ProtoGen
     /// </summary>
     /// </summary>
     public class ProgramPreprocess
     public class ProgramPreprocess
     {
     {
-        const string ProtocExecutable = "protoc.exe";
-        const string ProtocDirectoryArg = "--protoc_dir=";
+        private const string ProtocExecutable = "protoc.exe";
+        private const string ProtocDirectoryArg = "--protoc_dir=";
 
 
         private static int Main(string[] args)
         private static int Main(string[] args)
         {
         {
@@ -154,7 +154,7 @@ namespace Google.ProtocolBuffers.ProtoGen
 
 
             foreach (string path in searchPath)
             foreach (string path in searchPath)
             {
             {
-                string exeFile = Path.Combine(path, ProtocExecutable); 
+                string exeFile = Path.Combine(path, ProtocExecutable);
                 if (File.Exists(exeFile))
                 if (File.Exists(exeFile))
                 {
                 {
                     return exeFile;
                     return exeFile;

+ 0 - 1
src/ProtoGen/Properties/AssemblyInfo.cs

@@ -1,5 +1,4 @@
 using System.Reflection;
 using System.Reflection;
-using System.Runtime.CompilerServices;
 using System.Runtime.InteropServices;
 using System.Runtime.InteropServices;
 
 
 // General Information about an assembly is controlled through the following 
 // General Information about an assembly is controlled through the following 

+ 9 - 3
src/ProtoGen/RepeatedEnumFieldGenerator.cs

@@ -34,7 +34,6 @@
 
 
 #endregion
 #endregion
 
 
-using Google.ProtocolBuffers.DescriptorProtos;
 using Google.ProtocolBuffers.Descriptors;
 using Google.ProtocolBuffers.Descriptors;
 
 
 namespace Google.ProtocolBuffers.ProtoGen
 namespace Google.ProtocolBuffers.ProtoGen
@@ -132,9 +131,16 @@ namespace Google.ProtocolBuffers.ProtoGen
             writer.WriteLine("if ({0}_.Count > 0) {{", Name);
             writer.WriteLine("if ({0}_.Count > 0) {{", Name);
             writer.Indent();
             writer.Indent();
             if (Descriptor.IsPacked)
             if (Descriptor.IsPacked)
-                writer.WriteLine("output.WritePackedEnumArray({0}, field_names[{2}], {1}MemoizedSerializedSize, {1}_);", Number, Name, FieldOrdinal, Descriptor.FieldType);
+            {
+                writer.WriteLine(
+                    "output.WritePackedEnumArray({0}, field_names[{2}], {1}MemoizedSerializedSize, {1}_);", Number, Name,
+                    FieldOrdinal, Descriptor.FieldType);
+            }
             else
             else
-                writer.WriteLine("output.WriteEnumArray({0}, field_names[{2}], {1}_);", Number, Name, FieldOrdinal, Descriptor.FieldType);
+            {
+                writer.WriteLine("output.WriteEnumArray({0}, field_names[{2}], {1}_);", Number, Name, FieldOrdinal,
+                                 Descriptor.FieldType);
+            }
             writer.Outdent();
             writer.Outdent();
             writer.WriteLine("}");
             writer.WriteLine("}");
         }
         }

+ 5 - 3
src/ProtoGen/RepeatedMessageFieldGenerator.cs

@@ -34,7 +34,6 @@
 
 
 #endregion
 #endregion
 
 
-using System;
 using Google.ProtocolBuffers.Descriptors;
 using Google.ProtocolBuffers.Descriptors;
 
 
 namespace Google.ProtocolBuffers.ProtoGen
 namespace Google.ProtocolBuffers.ProtoGen
@@ -122,14 +121,17 @@ namespace Google.ProtocolBuffers.ProtoGen
 
 
         public void GenerateParsingCode(TextGenerator writer)
         public void GenerateParsingCode(TextGenerator writer)
         {
         {
-            writer.WriteLine("input.Read{0}Array(tag, field_name, result.{1}_, {2}.DefaultInstance, extensionRegistry);", MessageOrGroup, Name, TypeName);
+            writer.WriteLine(
+                "input.Read{0}Array(tag, field_name, result.{1}_, {2}.DefaultInstance, extensionRegistry);",
+                MessageOrGroup, Name, TypeName);
         }
         }
 
 
         public void GenerateSerializationCode(TextGenerator writer)
         public void GenerateSerializationCode(TextGenerator writer)
         {
         {
             writer.WriteLine("if ({0}_.Count > 0) {{", Name);
             writer.WriteLine("if ({0}_.Count > 0) {{", Name);
             writer.Indent();
             writer.Indent();
-            writer.WriteLine("output.Write{0}Array({1}, field_names[{3}], {2}_);", MessageOrGroup, Number, Name, FieldOrdinal, Descriptor.FieldType);
+            writer.WriteLine("output.Write{0}Array({1}, field_names[{3}], {2}_);", MessageOrGroup, Number, Name,
+                             FieldOrdinal, Descriptor.FieldType);
             writer.Outdent();
             writer.Outdent();
             writer.WriteLine("}");
             writer.WriteLine("}");
         }
         }

+ 10 - 4
src/ProtoGen/RepeatedPrimitiveFieldGenerator.cs

@@ -34,7 +34,6 @@
 
 
 #endregion
 #endregion
 
 
-using Google.ProtocolBuffers.DescriptorProtos;
 using Google.ProtocolBuffers.Descriptors;
 using Google.ProtocolBuffers.Descriptors;
 
 
 namespace Google.ProtocolBuffers.ProtoGen
 namespace Google.ProtocolBuffers.ProtoGen
@@ -121,7 +120,8 @@ namespace Google.ProtocolBuffers.ProtoGen
 
 
         public void GenerateParsingCode(TextGenerator writer)
         public void GenerateParsingCode(TextGenerator writer)
         {
         {
-            writer.WriteLine("input.Read{0}Array(tag, field_name, result.{1}_);", CapitalizedTypeName, Name, Descriptor.FieldType);
+            writer.WriteLine("input.Read{0}Array(tag, field_name, result.{1}_);", CapitalizedTypeName, Name,
+                             Descriptor.FieldType);
         }
         }
 
 
         public void GenerateSerializationCode(TextGenerator writer)
         public void GenerateSerializationCode(TextGenerator writer)
@@ -129,9 +129,15 @@ namespace Google.ProtocolBuffers.ProtoGen
             writer.WriteLine("if ({0}_.Count > 0) {{", Name);
             writer.WriteLine("if ({0}_.Count > 0) {{", Name);
             writer.Indent();
             writer.Indent();
             if (Descriptor.IsPacked)
             if (Descriptor.IsPacked)
-                writer.WriteLine("output.WritePacked{0}Array({1}, field_names[{3}], {2}MemoizedSerializedSize, {2}_);", CapitalizedTypeName, Number, Name, FieldOrdinal, Descriptor.FieldType);
+            {
+                writer.WriteLine("output.WritePacked{0}Array({1}, field_names[{3}], {2}MemoizedSerializedSize, {2}_);",
+                                 CapitalizedTypeName, Number, Name, FieldOrdinal, Descriptor.FieldType);
+            }
             else
             else
-                writer.WriteLine("output.Write{0}Array({1}, field_names[{3}], {2}_);", CapitalizedTypeName, Number, Name, FieldOrdinal, Descriptor.FieldType);
+            {
+                writer.WriteLine("output.Write{0}Array({1}, field_names[{3}], {2}_);", CapitalizedTypeName, Number, Name,
+                                 FieldOrdinal, Descriptor.FieldType);
+            }
             writer.Outdent();
             writer.Outdent();
             writer.WriteLine("}");
             writer.WriteLine("}");
         }
         }

+ 4 - 2
src/ProtoGen/ServiceGenerator.cs

@@ -55,7 +55,8 @@ namespace Google.ProtocolBuffers.ProtoGen
         {
         {
             writer.WriteLine("[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]");
             writer.WriteLine("[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]");
             writer.WriteLine("[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]");
             writer.WriteLine("[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]");
-            writer.WriteLine("[global::System.CodeDom.Compiler.GeneratedCodeAttribute(\"{0}\", \"{1}\")]", GetType().Assembly.GetName().Name, GetType().Assembly.GetName().Version);
+            writer.WriteLine("[global::System.CodeDom.Compiler.GeneratedCodeAttribute(\"{0}\", \"{1}\")]",
+                             GetType().Assembly.GetName().Name, GetType().Assembly.GetName().Version);
             writer.WriteLine("{0} abstract class {1} : pb::IService {{", ClassAccessLevel, Descriptor.Name);
             writer.WriteLine("{0} abstract class {1} : pb::IService {{", ClassAccessLevel, Descriptor.Name);
             writer.Indent();
             writer.Indent();
 
 
@@ -156,7 +157,8 @@ namespace Google.ProtocolBuffers.ProtoGen
             writer.WriteLine();
             writer.WriteLine();
             writer.WriteLine("[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]");
             writer.WriteLine("[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]");
             writer.WriteLine("[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]");
             writer.WriteLine("[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]");
-            writer.WriteLine("[global::System.CodeDom.Compiler.GeneratedCodeAttribute(\"{0}\", \"{1}\")]", GetType().Assembly.GetName().Name, GetType().Assembly.GetName().Version);
+            writer.WriteLine("[global::System.CodeDom.Compiler.GeneratedCodeAttribute(\"{0}\", \"{1}\")]",
+                             GetType().Assembly.GetName().Name, GetType().Assembly.GetName().Version);
             writer.WriteLine("{0} class Stub : {1} {{", ClassAccessLevel, GetClassName(Descriptor));
             writer.WriteLine("{0} class Stub : {1} {{", ClassAccessLevel, GetClassName(Descriptor));
             writer.Indent();
             writer.Indent();
             writer.WriteLine("internal Stub(pb::IRpcChannel channel) {");
             writer.WriteLine("internal Stub(pb::IRpcChannel channel) {");

+ 18 - 7
src/ProtoGen/ServiceInterfaceGenerator.cs

@@ -35,7 +35,6 @@
 #endregion
 #endregion
 
 
 using System;
 using System;
-using System.Collections.Generic;
 using Google.ProtocolBuffers.DescriptorProtos;
 using Google.ProtocolBuffers.DescriptorProtos;
 using Google.ProtocolBuffers.Descriptors;
 using Google.ProtocolBuffers.Descriptors;
 
 
@@ -106,7 +105,8 @@ namespace Google.ProtocolBuffers.ProtoGen
                                      new Guid(options.InterfaceId));
                                      new Guid(options.InterfaceId));
                 }
                 }
                 writer.WriteLine("[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]");
                 writer.WriteLine("[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]");
-                writer.WriteLine("[global::System.CodeDom.Compiler.GeneratedCodeAttribute(\"{0}\", \"{1}\")]", GetType().Assembly.GetName().Name, GetType().Assembly.GetName().Version);
+                writer.WriteLine("[global::System.CodeDom.Compiler.GeneratedCodeAttribute(\"{0}\", \"{1}\")]",
+                                 GetType().Assembly.GetName().Name, GetType().Assembly.GetName().Version);
                 writer.WriteLine("{0} partial interface I{1} {{", ClassAccessLevel, Descriptor.Name);
                 writer.WriteLine("{0} partial interface I{1} {{", ClassAccessLevel, Descriptor.Name);
                 writer.Indent();
                 writer.Indent();
 
 
@@ -143,10 +143,13 @@ namespace Google.ProtocolBuffers.ProtoGen
                 // CLIENT Proxy
                 // CLIENT Proxy
                 {
                 {
                     if (Descriptor.File.CSharpOptions.ClsCompliance)
                     if (Descriptor.File.CSharpOptions.ClsCompliance)
+                    {
                         writer.WriteLine("[global::System.CLSCompliant(false)]");
                         writer.WriteLine("[global::System.CLSCompliant(false)]");
+                    }
                     writer.WriteLine("[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]");
                     writer.WriteLine("[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]");
                     writer.WriteLine("[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]");
                     writer.WriteLine("[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]");
-                    writer.WriteLine("[global::System.CodeDom.Compiler.GeneratedCodeAttribute(\"{0}\", \"{1}\")]", GetType().Assembly.GetName().Name, GetType().Assembly.GetName().Version);
+                    writer.WriteLine("[global::System.CodeDom.Compiler.GeneratedCodeAttribute(\"{0}\", \"{1}\")]",
+                                     GetType().Assembly.GetName().Name, GetType().Assembly.GetName().Version);
                     writer.WriteLine("{0} partial class {1} : I{1}, pb::IRpcDispatch, global::System.IDisposable {{",
                     writer.WriteLine("{0} partial class {1} : I{1}, pb::IRpcDispatch, global::System.IDisposable {{",
                                      ClassAccessLevel, Descriptor.Name);
                                      ClassAccessLevel, Descriptor.Name);
                     writer.Indent();
                     writer.Indent();
@@ -190,10 +193,13 @@ namespace Google.ProtocolBuffers.ProtoGen
                 // SERVER - DISPATCH
                 // SERVER - DISPATCH
                 {
                 {
                     if (Descriptor.File.CSharpOptions.ClsCompliance)
                     if (Descriptor.File.CSharpOptions.ClsCompliance)
+                    {
                         writer.WriteLine("[global::System.CLSCompliant(false)]");
                         writer.WriteLine("[global::System.CLSCompliant(false)]");
+                    }
                     writer.WriteLine("[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]");
                     writer.WriteLine("[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]");
                     writer.WriteLine("[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]");
                     writer.WriteLine("[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]");
-                    writer.WriteLine("[global::System.CodeDom.Compiler.GeneratedCodeAttribute(\"{0}\", \"{1}\")]", GetType().Assembly.GetName().Name, GetType().Assembly.GetName().Version);
+                    writer.WriteLine("[global::System.CodeDom.Compiler.GeneratedCodeAttribute(\"{0}\", \"{1}\")]",
+                                     GetType().Assembly.GetName().Name, GetType().Assembly.GetName().Version);
                     writer.WriteLine("public partial class Dispatch : pb::IRpcDispatch, global::System.IDisposable {");
                     writer.WriteLine("public partial class Dispatch : pb::IRpcDispatch, global::System.IDisposable {");
                     writer.Indent();
                     writer.Indent();
                     writer.WriteLine("private readonly bool dispose;");
                     writer.WriteLine("private readonly bool dispose;");
@@ -230,7 +236,8 @@ namespace Google.ProtocolBuffers.ProtoGen
                             GetClassName(method.InputType));
                             GetClassName(method.InputType));
                     }
                     }
                     writer.WriteLine(
                     writer.WriteLine(
-                        "default: throw new global::System.MissingMethodException(typeof(I{0}).FullName, methodName);", Descriptor.Name);
+                        "default: throw new global::System.MissingMethodException(typeof(I{0}).FullName, methodName);",
+                        Descriptor.Name);
                     writer.Outdent();
                     writer.Outdent();
                     writer.WriteLine("}"); //end switch
                     writer.WriteLine("}"); //end switch
                     writer.Outdent();
                     writer.Outdent();
@@ -241,10 +248,13 @@ namespace Google.ProtocolBuffers.ProtoGen
                 // SERVER - STUB
                 // SERVER - STUB
                 {
                 {
                     if (Descriptor.File.CSharpOptions.ClsCompliance)
                     if (Descriptor.File.CSharpOptions.ClsCompliance)
+                    {
                         writer.WriteLine("[global::System.CLSCompliant(false)]");
                         writer.WriteLine("[global::System.CLSCompliant(false)]");
+                    }
                     writer.WriteLine("[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]");
                     writer.WriteLine("[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]");
                     writer.WriteLine("[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]");
                     writer.WriteLine("[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]");
-                    writer.WriteLine("[global::System.CodeDom.Compiler.GeneratedCodeAttribute(\"{0}\", \"{1}\")]", GetType().Assembly.GetName().Name, GetType().Assembly.GetName().Version);
+                    writer.WriteLine("[global::System.CodeDom.Compiler.GeneratedCodeAttribute(\"{0}\", \"{1}\")]",
+                                     GetType().Assembly.GetName().Name, GetType().Assembly.GetName().Version);
                     writer.WriteLine(
                     writer.WriteLine(
                         "public partial class ServerStub : pb::IRpcServerStub, global::System.IDisposable {");
                         "public partial class ServerStub : pb::IRpcServerStub, global::System.IDisposable {");
                     writer.Indent();
                     writer.Indent();
@@ -287,7 +297,8 @@ namespace Google.ProtocolBuffers.ProtoGen
                             method.Name, GetClassName(method.InputType), GetClassName(method.OutputType));
                             method.Name, GetClassName(method.InputType), GetClassName(method.OutputType));
                     }
                     }
                     writer.WriteLine(
                     writer.WriteLine(
-                        "default: throw new global::System.MissingMethodException(typeof(I{0}).FullName, methodName);", Descriptor.Name);
+                        "default: throw new global::System.MissingMethodException(typeof(I{0}).FullName, methodName);",
+                        Descriptor.Name);
                     writer.Outdent();
                     writer.Outdent();
                     writer.WriteLine("}"); //end switch
                     writer.WriteLine("}"); //end switch
                     writer.Outdent();
                     writer.Outdent();

+ 4 - 3
src/ProtoGen/SourceGeneratorBase.cs

@@ -35,6 +35,7 @@
 #endregion
 #endregion
 
 
 using System.Collections.Generic;
 using System.Collections.Generic;
+using Google.ProtocolBuffers.DescriptorProtos;
 using Google.ProtocolBuffers.Descriptors;
 using Google.ProtocolBuffers.Descriptors;
 
 
 namespace Google.ProtocolBuffers.ProtoGen
 namespace Google.ProtocolBuffers.ProtoGen
@@ -53,11 +54,11 @@ namespace Google.ProtocolBuffers.ProtoGen
             this.descriptor = descriptor;
             this.descriptor = descriptor;
 
 
             OptimizeSize = descriptor.File.Options.OptimizeFor ==
             OptimizeSize = descriptor.File.Options.OptimizeFor ==
-                           Google.ProtocolBuffers.DescriptorProtos.FileOptions.Types.OptimizeMode.CODE_SIZE;
+                           FileOptions.Types.OptimizeMode.CODE_SIZE;
             OptimizeSpeed = descriptor.File.Options.OptimizeFor ==
             OptimizeSpeed = descriptor.File.Options.OptimizeFor ==
-                            Google.ProtocolBuffers.DescriptorProtos.FileOptions.Types.OptimizeMode.SPEED;
+                            FileOptions.Types.OptimizeMode.SPEED;
             UseLiteRuntime = descriptor.File.Options.OptimizeFor ==
             UseLiteRuntime = descriptor.File.Options.OptimizeFor ==
-                             Google.ProtocolBuffers.DescriptorProtos.FileOptions.Types.OptimizeMode.LITE_RUNTIME;
+                             FileOptions.Types.OptimizeMode.LITE_RUNTIME;
             //Lite runtime uses OptimizeSpeed code branches
             //Lite runtime uses OptimizeSpeed code branches
             OptimizeSpeed |= UseLiteRuntime;
             OptimizeSpeed |= UseLiteRuntime;
             RuntimeSuffix = UseLiteRuntime ? "Lite" : "";
             RuntimeSuffix = UseLiteRuntime ? "Lite" : "";

+ 11 - 11
src/ProtoGen/SourceGenerators.cs

@@ -44,16 +44,16 @@ namespace Google.ProtocolBuffers.ProtoGen
 
 
     internal static class SourceGenerators
     internal static class SourceGenerators
     {
     {
-        private static readonly Dictionary<Type, Func<IDescriptor, ISourceGenerator>> GeneratorFactories = 
+        private static readonly Dictionary<Type, Func<IDescriptor, ISourceGenerator>> GeneratorFactories =
             new Dictionary<Type, Func<IDescriptor, ISourceGenerator>>
             new Dictionary<Type, Func<IDescriptor, ISourceGenerator>>
-            {
-                {typeof(FileDescriptor),descriptor=>new UmbrellaClassGenerator((FileDescriptor)descriptor)},
-                {typeof(EnumDescriptor),descriptor=>new EnumGenerator((EnumDescriptor)descriptor)},
-                {typeof(ServiceDescriptor),descriptor=>new ServiceGenerator((ServiceDescriptor)descriptor)},
-                {typeof(MessageDescriptor),descriptor=>new MessageGenerator((MessageDescriptor)descriptor)},
-                // For other fields, we have IFieldSourceGenerators.
-                {typeof(FieldDescriptor),descriptor=>new ExtensionGenerator((FieldDescriptor)descriptor)}
-            };
+                {
+                    {typeof (FileDescriptor), descriptor => new UmbrellaClassGenerator((FileDescriptor) descriptor)},
+                    {typeof (EnumDescriptor), descriptor => new EnumGenerator((EnumDescriptor) descriptor)},
+                    {typeof (ServiceDescriptor), descriptor => new ServiceGenerator((ServiceDescriptor) descriptor)},
+                    {typeof (MessageDescriptor), descriptor => new MessageGenerator((MessageDescriptor) descriptor)},
+                    // For other fields, we have IFieldSourceGenerators.
+                    {typeof (FieldDescriptor), descriptor => new ExtensionGenerator((FieldDescriptor) descriptor)}
+                };
 
 
         public static IFieldSourceGenerator CreateFieldGenerator(FieldDescriptor field, int fieldOrdinal)
         public static IFieldSourceGenerator CreateFieldGenerator(FieldDescriptor field, int fieldOrdinal)
         {
         {
@@ -65,11 +65,11 @@ namespace Google.ProtocolBuffers.ProtoGen
                                : new MessageFieldGenerator(field, fieldOrdinal);
                                : new MessageFieldGenerator(field, fieldOrdinal);
                 case MappedType.Enum:
                 case MappedType.Enum:
                     return field.IsRepeated
                     return field.IsRepeated
-                               ? (IFieldSourceGenerator)new RepeatedEnumFieldGenerator(field, fieldOrdinal)
+                               ? (IFieldSourceGenerator) new RepeatedEnumFieldGenerator(field, fieldOrdinal)
                                : new EnumFieldGenerator(field, fieldOrdinal);
                                : new EnumFieldGenerator(field, fieldOrdinal);
                 default:
                 default:
                     return field.IsRepeated
                     return field.IsRepeated
-                               ? (IFieldSourceGenerator)new RepeatedPrimitiveFieldGenerator(field, fieldOrdinal)
+                               ? (IFieldSourceGenerator) new RepeatedPrimitiveFieldGenerator(field, fieldOrdinal)
                                : new PrimitiveFieldGenerator(field, fieldOrdinal);
                                : new PrimitiveFieldGenerator(field, fieldOrdinal);
             }
             }
         }
         }

+ 2 - 1
src/ProtoGen/UmbrellaClassGenerator.cs

@@ -163,7 +163,8 @@ namespace Google.ProtocolBuffers.ProtoGen
             }
             }
             writer.WriteLine("[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]");
             writer.WriteLine("[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]");
             writer.WriteLine("[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]");
             writer.WriteLine("[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]");
-            writer.WriteLine("[global::System.CodeDom.Compiler.GeneratedCodeAttribute(\"{0}\", \"{1}\")]", GetType().Assembly.GetName().Name, GetType().Assembly.GetName().Version);
+            writer.WriteLine("[global::System.CodeDom.Compiler.GeneratedCodeAttribute(\"{0}\", \"{1}\")]",
+                             GetType().Assembly.GetName().Name, GetType().Assembly.GetName().Version);
             writer.WriteLine("{0} static partial class {1} {{", ClassAccessLevel,
             writer.WriteLine("{0} static partial class {1} {{", ClassAccessLevel,
                              Descriptor.CSharpOptions.UmbrellaClassname);
                              Descriptor.CSharpOptions.UmbrellaClassname);
             writer.WriteLine();
             writer.WriteLine();

+ 0 - 1
src/ProtocolBuffers/AbstractBuilder.cs

@@ -37,7 +37,6 @@
 using System;
 using System;
 using System.Collections;
 using System.Collections;
 using System.Collections.Generic;
 using System.Collections.Generic;
-using System.IO;
 using Google.ProtocolBuffers.Descriptors;
 using Google.ProtocolBuffers.Descriptors;
 
 
 namespace Google.ProtocolBuffers
 namespace Google.ProtocolBuffers

+ 0 - 2
src/ProtocolBuffers/AbstractBuilderLite.cs

@@ -35,8 +35,6 @@
 #endregion
 #endregion
 
 
 using System;
 using System;
-using System.Collections;
-using System.Collections.Generic;
 using System.IO;
 using System.IO;
 
 
 namespace Google.ProtocolBuffers
 namespace Google.ProtocolBuffers

+ 11 - 24
src/ProtocolBuffers/AbstractMessage.cs

@@ -37,8 +37,10 @@
 using System.Collections;
 using System.Collections;
 using System.Collections.Generic;
 using System.Collections.Generic;
 using System.IO;
 using System.IO;
+using System.Text;
 using Google.ProtocolBuffers.Collections;
 using Google.ProtocolBuffers.Collections;
 using Google.ProtocolBuffers.Descriptors;
 using Google.ProtocolBuffers.Descriptors;
+using Google.ProtocolBuffers.Serialization;
 
 
 namespace Google.ProtocolBuffers
 namespace Google.ProtocolBuffers
 {
 {
@@ -123,22 +125,22 @@ namespace Google.ProtocolBuffers
 
 
         public string ToJson()
         public string ToJson()
         {
         {
-            Serialization.JsonFormatWriter w = Serialization.JsonFormatWriter.CreateInstance();
+            JsonFormatWriter w = JsonFormatWriter.CreateInstance();
             w.WriteMessage(this);
             w.WriteMessage(this);
             return w.ToString();
             return w.ToString();
         }
         }
 
 
         public string ToXml()
         public string ToXml()
         {
         {
-            StringWriter w = new StringWriter(new System.Text.StringBuilder(4096));
-            Serialization.XmlFormatWriter.CreateInstance(w).WriteMessage(this);
+            StringWriter w = new StringWriter(new StringBuilder(4096));
+            XmlFormatWriter.CreateInstance(w).WriteMessage(this);
             return w.ToString();
             return w.ToString();
         }
         }
 
 
         public string ToXml(string rootElementName)
         public string ToXml(string rootElementName)
         {
         {
-            StringWriter w = new StringWriter(new System.Text.StringBuilder(4096));
-            Serialization.XmlFormatWriter.CreateInstance(w).WriteMessage(rootElementName, this);
+            StringWriter w = new StringWriter(new StringBuilder(4096));
+            XmlFormatWriter.CreateInstance(w).WriteMessage(rootElementName, this);
             return w.ToString();
             return w.ToString();
         }
         }
 
 
@@ -170,28 +172,13 @@ namespace Google.ProtocolBuffers
                     // IEnumerable is the best we can do. (C# generics aren't covariant yet.)
                     // IEnumerable is the best we can do. (C# generics aren't covariant yet.)
                     IEnumerable valueList = (IEnumerable) entry.Value;
                     IEnumerable valueList = (IEnumerable) entry.Value;
                     if (field.IsPacked)
                     if (field.IsPacked)
+                    {
                         output.WritePackedArray(field.FieldType, field.FieldNumber, field.Name, valueList);
                         output.WritePackedArray(field.FieldType, field.FieldNumber, field.Name, valueList);
-                    //{
-                    //    output.WriteTag(field.FieldNumber, WireFormat.WireType.LengthDelimited);
-                    //    int dataSize = 0;
-                    //    foreach (object element in valueList)
-                    //    {
-                    //        dataSize += CodedOutputStream.ComputeFieldSizeNoTag(field.FieldType, element);
-                    //    }
-                    //    output.WriteRawVarint32((uint) dataSize);
-                    //    foreach (object element in valueList)
-                    //    {
-                    //        output.WriteFieldNoTag(field.FieldType, element);
-                    //    }
-                    //}
+                    }
                     else
                     else
+                    {
                         output.WriteArray(field.FieldType, field.FieldNumber, field.Name, valueList);
                         output.WriteArray(field.FieldType, field.FieldNumber, field.Name, valueList);
-                    //{
-                    //    foreach (object element in valueList)
-                    //    {
-                    //        output.WriteField(field.FieldType, field.FieldNumber, field.Name, element);
-                    //    }
-                    //}
+                    }
                 }
                 }
                 else
                 else
                 {
                 {

+ 0 - 2
src/ProtocolBuffers/AbstractMessageLite.cs

@@ -34,8 +34,6 @@
 
 
 #endregion
 #endregion
 
 
-using System.Collections;
-using System.Collections.Generic;
 using System.IO;
 using System.IO;
 
 
 namespace Google.ProtocolBuffers
 namespace Google.ProtocolBuffers

+ 14 - 3
src/ProtocolBuffers/ByteArray.cs

@@ -34,27 +34,35 @@
 
 
 #endregion
 #endregion
 
 
+using System;
+
 namespace Google.ProtocolBuffers
 namespace Google.ProtocolBuffers
 {
 {
     /// <summary>
     /// <summary>
     /// Provides a utility routine to copy small arrays much more quickly than Buffer.BlockCopy
     /// Provides a utility routine to copy small arrays much more quickly than Buffer.BlockCopy
     /// </summary>
     /// </summary>
-    static class ByteArray
+    internal static class ByteArray
     {
     {
         /// <summary>
         /// <summary>
         /// The threshold above which you should use Buffer.BlockCopy rather than ByteArray.Copy
         /// The threshold above which you should use Buffer.BlockCopy rather than ByteArray.Copy
         /// </summary>
         /// </summary>
-        const int CopyThreshold = 12;
+        private const int CopyThreshold = 12;
+
         /// <summary>
         /// <summary>
         /// Determines which copy routine to use based on the number of bytes to be copied.
         /// Determines which copy routine to use based on the number of bytes to be copied.
         /// </summary>
         /// </summary>
         public static void Copy(byte[] src, int srcOffset, byte[] dst, int dstOffset, int count)
         public static void Copy(byte[] src, int srcOffset, byte[] dst, int dstOffset, int count)
         {
         {
             if (count > CopyThreshold)
             if (count > CopyThreshold)
-                global::System.Buffer.BlockCopy(src, srcOffset, dst, dstOffset, count);
+            {
+                Buffer.BlockCopy(src, srcOffset, dst, dstOffset, count);
+            }
             else
             else
+            {
                 ByteCopy(src, srcOffset, dst, dstOffset, count);
                 ByteCopy(src, srcOffset, dst, dstOffset, count);
+            }
         }
         }
+
         /// <summary>
         /// <summary>
         /// Copy the bytes provided with a for loop, faster when there are only a few bytes to copy
         /// Copy the bytes provided with a for loop, faster when there are only a few bytes to copy
         /// </summary>
         /// </summary>
@@ -62,8 +70,11 @@ namespace Google.ProtocolBuffers
         {
         {
             int stop = srcOffset + count;
             int stop = srcOffset + count;
             for (int i = srcOffset; i < stop; i++)
             for (int i = srcOffset; i < stop; i++)
+            {
                 dst[dstOffset++] = src[i];
                 dst[dstOffset++] = src[i];
+            }
         }
         }
+
         /// <summary>
         /// <summary>
         /// Reverses the order of bytes in the array
         /// Reverses the order of bytes in the array
         /// </summary>
         /// </summary>

+ 4 - 3
src/ProtocolBuffers/ByteString.cs

@@ -37,6 +37,7 @@
 using System;
 using System;
 using System.Collections;
 using System.Collections;
 using System.Collections.Generic;
 using System.Collections.Generic;
+using System.IO;
 using System.Text;
 using System.Text;
 
 
 namespace Google.ProtocolBuffers
 namespace Google.ProtocolBuffers
@@ -91,7 +92,7 @@ namespace Google.ProtocolBuffers
 
 
         public byte[] ToByteArray()
         public byte[] ToByteArray()
         {
         {
-            return (byte[])bytes.Clone();
+            return (byte[]) bytes.Clone();
         }
         }
 
 
         public string ToBase64()
         public string ToBase64()
@@ -104,7 +105,7 @@ namespace Google.ProtocolBuffers
         /// </summary>
         /// </summary>
         public static ByteString FromBase64(string bytes)
         public static ByteString FromBase64(string bytes)
         {
         {
-            return new ByteString(System.Convert.FromBase64String(bytes));
+            return new ByteString(Convert.FromBase64String(bytes));
         }
         }
 
 
         /// <summary>
         /// <summary>
@@ -267,7 +268,7 @@ namespace Google.ProtocolBuffers
         /// <summary>
         /// <summary>
         /// Writes the entire byte array to the provided stream
         /// Writes the entire byte array to the provided stream
         /// </summary>
         /// </summary>
-        public void WriteTo(System.IO.Stream outputStream)
+        public void WriteTo(Stream outputStream)
         {
         {
             outputStream.Write(bytes, 0, bytes.Length);
             outputStream.Write(bytes, 0, bytes.Length);
         }
         }

+ 61 - 35
src/ProtocolBuffers/CodedInputStream.cs

@@ -165,7 +165,7 @@ namespace Google.ProtocolBuffers
         #endregion
         #endregion
 
 
         #region Reading of tags etc
         #region Reading of tags etc
-        
+
         /// <summary>
         /// <summary>
         /// Attempt to peek at the next field tag.
         /// Attempt to peek at the next field tag.
         /// </summary>
         /// </summary>
@@ -266,7 +266,9 @@ namespace Google.ProtocolBuffers
             {
             {
                 byte[] rawBytes = ReadRawBytes(4);
                 byte[] rawBytes = ReadRawBytes(4);
                 if (!BitConverter.IsLittleEndian)
                 if (!BitConverter.IsLittleEndian)
+                {
                     ByteArray.Reverse(rawBytes);
                     ByteArray.Reverse(rawBytes);
+                }
                 value = BitConverter.ToSingle(rawBytes, 0);
                 value = BitConverter.ToSingle(rawBytes, 0);
             }
             }
             return true;
             return true;
@@ -296,7 +298,7 @@ namespace Google.ProtocolBuffers
         /// </summary>
         /// </summary>
         public bool ReadInt32(ref int value)
         public bool ReadInt32(ref int value)
         {
         {
-            value = (int)ReadRawVarint32();
+            value = (int) ReadRawVarint32();
             return true;
             return true;
         }
         }
 
 
@@ -445,8 +447,8 @@ namespace Google.ProtocolBuffers
         /// </summary>   
         /// </summary>   
         public bool ReadEnum(ref IEnumLite value, out object unknown, IEnumLiteMap mapping)
         public bool ReadEnum(ref IEnumLite value, out object unknown, IEnumLiteMap mapping)
         {
         {
-            int rawValue = (int)ReadRawVarint32();
-            
+            int rawValue = (int) ReadRawVarint32();
+
             value = mapping.FindValueByNumber(rawValue);
             value = mapping.FindValueByNumber(rawValue);
             if (value != null)
             if (value != null)
             {
             {
@@ -466,11 +468,11 @@ namespace Google.ProtocolBuffers
         public bool ReadEnum<T>(ref T value, out object unknown)
         public bool ReadEnum<T>(ref T value, out object unknown)
             where T : struct, IComparable, IFormattable, IConvertible
             where T : struct, IComparable, IFormattable, IConvertible
         {
         {
-            int number = (int)ReadRawVarint32();
-            if (Enum.IsDefined(typeof(T), number))
+            int number = (int) ReadRawVarint32();
+            if (Enum.IsDefined(typeof (T), number))
             {
             {
                 unknown = null;
                 unknown = null;
-                value = (T)(object)number;
+                value = (T) (object) number;
                 return true;
                 return true;
             }
             }
             unknown = number;
             unknown = number;
@@ -482,7 +484,7 @@ namespace Google.ProtocolBuffers
         /// </summary>   
         /// </summary>   
         public bool ReadSFixed32(ref int value)
         public bool ReadSFixed32(ref int value)
         {
         {
-            value = (int)ReadRawLittleEndian32();
+            value = (int) ReadRawLittleEndian32();
             return true;
             return true;
         }
         }
 
 
@@ -491,7 +493,7 @@ namespace Google.ProtocolBuffers
         /// </summary>   
         /// </summary>   
         public bool ReadSFixed64(ref long value)
         public bool ReadSFixed64(ref long value)
         {
         {
-            value = (long)ReadRawLittleEndian64();
+            value = (long) ReadRawLittleEndian64();
             return true;
             return true;
         }
         }
 
 
@@ -566,17 +568,19 @@ namespace Google.ProtocolBuffers
         {
         {
             WireFormat.WireType normal = WireFormat.GetWireType(fieldType);
             WireFormat.WireType normal = WireFormat.GetWireType(fieldType);
             WireFormat.WireType wformat = WireFormat.GetTagWireType(fieldTag);
             WireFormat.WireType wformat = WireFormat.GetTagWireType(fieldTag);
-            
+
             // 2.3 allows packed form even if the field is not declared packed.
             // 2.3 allows packed form even if the field is not declared packed.
-            if(normal != wformat && wformat == WireFormat.WireType.LengthDelimited)
+            if (normal != wformat && wformat == WireFormat.WireType.LengthDelimited)
             {
             {
-                int length = (int)(ReadRawVarint32() & int.MaxValue);
+                int length = (int) (ReadRawVarint32() & int.MaxValue);
                 int limit = PushLimit(length);
                 int limit = PushLimit(length);
                 while (!ReachedLimit)
                 while (!ReachedLimit)
                 {
                 {
                     Object value = null;
                     Object value = null;
-                    if(ReadPrimitiveField(fieldType, ref value))
+                    if (ReadPrimitiveField(fieldType, ref value))
+                    {
                         list.Add(value);
                         list.Add(value);
+                    }
                 }
                 }
                 PopLimit(limit);
                 PopLimit(limit);
             }
             }
@@ -586,9 +590,10 @@ namespace Google.ProtocolBuffers
                 do
                 do
                 {
                 {
                     if (ReadPrimitiveField(fieldType, ref value))
                     if (ReadPrimitiveField(fieldType, ref value))
+                    {
                         list.Add(value);
                         list.Add(value);
-                }
-                while (ContinueArray(fieldTag, false, 0));
+                    }
+                } while (ContinueArray(fieldTag, false, 0));
             }
             }
         }
         }
 
 
@@ -611,8 +616,7 @@ namespace Google.ProtocolBuffers
             {
             {
                 ReadBytes(ref tmp);
                 ReadBytes(ref tmp);
                 list.Add(tmp);
                 list.Add(tmp);
-            }
-            while (ContinueArray(fieldTag, false, 0));
+            } while (ContinueArray(fieldTag, false, 0));
         }
         }
 
 
         [CLSCompliant(false)]
         [CLSCompliant(false)]
@@ -824,7 +828,8 @@ namespace Google.ProtocolBuffers
         }
         }
 
 
         [CLSCompliant(false)]
         [CLSCompliant(false)]
-        public void ReadEnumArray(uint fieldTag, string fieldName, ICollection<IEnumLite> list, out ICollection<object> unknown, IEnumLiteMap mapping)
+        public void ReadEnumArray(uint fieldTag, string fieldName, ICollection<IEnumLite> list,
+                                  out ICollection<object> unknown, IEnumLiteMap mapping)
         {
         {
             unknown = null;
             unknown = null;
             object unkval;
             object unkval;
@@ -834,16 +839,20 @@ namespace Google.ProtocolBuffers
             // 2.3 allows packed form even if the field is not declared packed.
             // 2.3 allows packed form even if the field is not declared packed.
             if (wformat == WireFormat.WireType.LengthDelimited)
             if (wformat == WireFormat.WireType.LengthDelimited)
             {
             {
-                int length = (int)(ReadRawVarint32() & int.MaxValue);
+                int length = (int) (ReadRawVarint32() & int.MaxValue);
                 int limit = PushLimit(length);
                 int limit = PushLimit(length);
                 while (!ReachedLimit)
                 while (!ReachedLimit)
                 {
                 {
                     if (ReadEnum(ref value, out unkval, mapping))
                     if (ReadEnum(ref value, out unkval, mapping))
+                    {
                         list.Add(value);
                         list.Add(value);
+                    }
                     else
                     else
                     {
                     {
                         if (unknown == null)
                         if (unknown == null)
+                        {
                             unknown = new List<object>();
                             unknown = new List<object>();
+                        }
                         unknown.Add(unkval);
                         unknown.Add(unkval);
                     }
                     }
                 }
                 }
@@ -854,20 +863,24 @@ namespace Google.ProtocolBuffers
                 do
                 do
                 {
                 {
                     if (ReadEnum(ref value, out unkval, mapping))
                     if (ReadEnum(ref value, out unkval, mapping))
+                    {
                         list.Add(value);
                         list.Add(value);
+                    }
                     else
                     else
                     {
                     {
                         if (unknown == null)
                         if (unknown == null)
+                        {
                             unknown = new List<object>();
                             unknown = new List<object>();
+                        }
                         unknown.Add(unkval);
                         unknown.Add(unkval);
                     }
                     }
-                }
-                while (ContinueArray(fieldTag, false, 0));
+                } while (ContinueArray(fieldTag, false, 0));
             }
             }
         }
         }
 
 
         [CLSCompliant(false)]
         [CLSCompliant(false)]
-        public void ReadEnumArray<T>(uint fieldTag, string fieldName, ICollection<T> list, out ICollection<object> unknown)
+        public void ReadEnumArray<T>(uint fieldTag, string fieldName, ICollection<T> list,
+                                     out ICollection<object> unknown)
             where T : struct, IComparable, IFormattable, IConvertible
             where T : struct, IComparable, IFormattable, IConvertible
         {
         {
             unknown = null;
             unknown = null;
@@ -878,16 +891,20 @@ namespace Google.ProtocolBuffers
             // 2.3 allows packed form even if the field is not declared packed.
             // 2.3 allows packed form even if the field is not declared packed.
             if (wformat == WireFormat.WireType.LengthDelimited)
             if (wformat == WireFormat.WireType.LengthDelimited)
             {
             {
-                int length = (int)(ReadRawVarint32() & int.MaxValue);
+                int length = (int) (ReadRawVarint32() & int.MaxValue);
                 int limit = PushLimit(length);
                 int limit = PushLimit(length);
                 while (!ReachedLimit)
                 while (!ReachedLimit)
                 {
                 {
                     if (ReadEnum<T>(ref value, out unkval))
                     if (ReadEnum<T>(ref value, out unkval))
+                    {
                         list.Add(value);
                         list.Add(value);
+                    }
                     else
                     else
                     {
                     {
                         if (unknown == null)
                         if (unknown == null)
+                        {
                             unknown = new List<object>();
                             unknown = new List<object>();
+                        }
                         unknown.Add(unkval);
                         unknown.Add(unkval);
                     }
                     }
                 }
                 }
@@ -898,40 +915,43 @@ namespace Google.ProtocolBuffers
                 do
                 do
                 {
                 {
                     if (ReadEnum(ref value, out unkval))
                     if (ReadEnum(ref value, out unkval))
+                    {
                         list.Add(value);
                         list.Add(value);
+                    }
                     else
                     else
                     {
                     {
                         if (unknown == null)
                         if (unknown == null)
+                        {
                             unknown = new List<object>();
                             unknown = new List<object>();
+                        }
                         unknown.Add(unkval);
                         unknown.Add(unkval);
                     }
                     }
-                }
-                while (ContinueArray(fieldTag, false, 0));
+                } while (ContinueArray(fieldTag, false, 0));
             }
             }
         }
         }
 
 
         [CLSCompliant(false)]
         [CLSCompliant(false)]
-        public void ReadMessageArray<T>(uint fieldTag, string fieldName, ICollection<T> list, T messageType, ExtensionRegistry registry) where T : IMessageLite
+        public void ReadMessageArray<T>(uint fieldTag, string fieldName, ICollection<T> list, T messageType,
+                                        ExtensionRegistry registry) where T : IMessageLite
         {
         {
             do
             do
             {
             {
                 IBuilderLite builder = messageType.WeakCreateBuilderForType();
                 IBuilderLite builder = messageType.WeakCreateBuilderForType();
                 ReadMessage(builder, registry);
                 ReadMessage(builder, registry);
-                list.Add((T)builder.WeakBuildPartial());
-            }
-            while (ContinueArray(fieldTag, false, 0));
+                list.Add((T) builder.WeakBuildPartial());
+            } while (ContinueArray(fieldTag, false, 0));
         }
         }
 
 
         [CLSCompliant(false)]
         [CLSCompliant(false)]
-        public void ReadGroupArray<T>(uint fieldTag, string fieldName, ICollection<T> list, T messageType, ExtensionRegistry registry) where T : IMessageLite
+        public void ReadGroupArray<T>(uint fieldTag, string fieldName, ICollection<T> list, T messageType,
+                                      ExtensionRegistry registry) where T : IMessageLite
         {
         {
             do
             do
             {
             {
                 IBuilderLite builder = messageType.WeakCreateBuilderForType();
                 IBuilderLite builder = messageType.WeakCreateBuilderForType();
                 ReadGroup(WireFormat.GetTagFieldNumber(fieldTag), builder, registry);
                 ReadGroup(WireFormat.GetTagFieldNumber(fieldTag), builder, registry);
-                list.Add((T)builder.WeakBuildPartial());
-            }
-            while (ContinueArray(fieldTag, false, 0));
+                list.Add((T) builder.WeakBuildPartial());
+            } while (ContinueArray(fieldTag, false, 0));
         }
         }
 
 
         /// <summary>
         /// <summary>
@@ -1148,7 +1168,10 @@ namespace Google.ProtocolBuffers
                             // Discard upper 32 bits.
                             // Discard upper 32 bits.
                             for (int i = 0; i < 5; i++)
                             for (int i = 0; i < 5; i++)
                             {
                             {
-                                if (ReadRawByte() < 128) return (uint) result;
+                                if (ReadRawByte() < 128)
+                                {
+                                    return (uint) result;
+                                }
                             }
                             }
                             throw InvalidProtocolBufferException.MalformedVarint();
                             throw InvalidProtocolBufferException.MalformedVarint();
                         }
                         }
@@ -1208,7 +1231,10 @@ namespace Google.ProtocolBuffers
                             // use the fast path in more cases, and we rarely hit this section of code.
                             // use the fast path in more cases, and we rarely hit this section of code.
                             for (int i = 0; i < 5; i++)
                             for (int i = 0; i < 5; i++)
                             {
                             {
-                                if (ReadRawByte() < 128) return (uint) result;
+                                if (ReadRawByte() < 128)
+                                {
+                                    return (uint) result;
+                                }
                             }
                             }
                             throw InvalidProtocolBufferException.MalformedVarint();
                             throw InvalidProtocolBufferException.MalformedVarint();
                         }
                         }

+ 64 - 18
src/ProtocolBuffers/CodedOutputStream.ComputeSize.cs

@@ -36,7 +36,6 @@
 
 
 using System;
 using System;
 using System.Globalization;
 using System.Globalization;
-using System.IO;
 using System.Text;
 using System.Text;
 using Google.ProtocolBuffers.Descriptors;
 using Google.ProtocolBuffers.Descriptors;
 
 
@@ -477,10 +476,22 @@ namespace Google.ProtocolBuffers
         [CLSCompliant(false)]
         [CLSCompliant(false)]
         public static int ComputeRawVarint32Size(uint value)
         public static int ComputeRawVarint32Size(uint value)
         {
         {
-            if ((value & (0xffffffff << 7)) == 0) return 1;
-            if ((value & (0xffffffff << 14)) == 0) return 2;
-            if ((value & (0xffffffff << 21)) == 0) return 3;
-            if ((value & (0xffffffff << 28)) == 0) return 4;
+            if ((value & (0xffffffff << 7)) == 0)
+            {
+                return 1;
+            }
+            if ((value & (0xffffffff << 14)) == 0)
+            {
+                return 2;
+            }
+            if ((value & (0xffffffff << 21)) == 0)
+            {
+                return 3;
+            }
+            if ((value & (0xffffffff << 28)) == 0)
+            {
+                return 4;
+            }
             return 5;
             return 5;
         }
         }
 
 
@@ -490,15 +501,42 @@ namespace Google.ProtocolBuffers
         [CLSCompliant(false)]
         [CLSCompliant(false)]
         public static int ComputeRawVarint64Size(ulong value)
         public static int ComputeRawVarint64Size(ulong value)
         {
         {
-            if ((value & (0xffffffffffffffffL << 7)) == 0) return 1;
-            if ((value & (0xffffffffffffffffL << 14)) == 0) return 2;
-            if ((value & (0xffffffffffffffffL << 21)) == 0) return 3;
-            if ((value & (0xffffffffffffffffL << 28)) == 0) return 4;
-            if ((value & (0xffffffffffffffffL << 35)) == 0) return 5;
-            if ((value & (0xffffffffffffffffL << 42)) == 0) return 6;
-            if ((value & (0xffffffffffffffffL << 49)) == 0) return 7;
-            if ((value & (0xffffffffffffffffL << 56)) == 0) return 8;
-            if ((value & (0xffffffffffffffffL << 63)) == 0) return 9;
+            if ((value & (0xffffffffffffffffL << 7)) == 0)
+            {
+                return 1;
+            }
+            if ((value & (0xffffffffffffffffL << 14)) == 0)
+            {
+                return 2;
+            }
+            if ((value & (0xffffffffffffffffL << 21)) == 0)
+            {
+                return 3;
+            }
+            if ((value & (0xffffffffffffffffL << 28)) == 0)
+            {
+                return 4;
+            }
+            if ((value & (0xffffffffffffffffL << 35)) == 0)
+            {
+                return 5;
+            }
+            if ((value & (0xffffffffffffffffL << 42)) == 0)
+            {
+                return 6;
+            }
+            if ((value & (0xffffffffffffffffL << 49)) == 0)
+            {
+                return 7;
+            }
+            if ((value & (0xffffffffffffffffL << 56)) == 0)
+            {
+                return 8;
+            }
+            if ((value & (0xffffffffffffffffL << 63)) == 0)
+            {
+                return 9;
+            }
             return 10;
             return 10;
         }
         }
 
 
@@ -545,10 +583,14 @@ namespace Google.ProtocolBuffers
                 case FieldType.SInt64:
                 case FieldType.SInt64:
                     return ComputeSInt64Size(fieldNumber, (long) value);
                     return ComputeSInt64Size(fieldNumber, (long) value);
                 case FieldType.Enum:
                 case FieldType.Enum:
-                    if (value is System.Enum)
-                        return ComputeEnumSize(fieldNumber, ((IConvertible)value).ToInt32(CultureInfo.InvariantCulture));
+                    if (value is Enum)
+                    {
+                        return ComputeEnumSize(fieldNumber, ((IConvertible) value).ToInt32(CultureInfo.InvariantCulture));
+                    }
                     else
                     else
+                    {
                         return ComputeEnumSize(fieldNumber, ((IEnumLite) value).Number);
                         return ComputeEnumSize(fieldNumber, ((IEnumLite) value).Number);
+                    }
                 default:
                 default:
                     throw new ArgumentOutOfRangeException("Invalid field type " + fieldType);
                     throw new ArgumentOutOfRangeException("Invalid field type " + fieldType);
             }
             }
@@ -597,10 +639,14 @@ namespace Google.ProtocolBuffers
                 case FieldType.SInt64:
                 case FieldType.SInt64:
                     return ComputeSInt64SizeNoTag((long) value);
                     return ComputeSInt64SizeNoTag((long) value);
                 case FieldType.Enum:
                 case FieldType.Enum:
-                    if (value is System.Enum)
-                        return ComputeEnumSizeNoTag(((IConvertible)value).ToInt32(CultureInfo.InvariantCulture));
+                    if (value is Enum)
+                    {
+                        return ComputeEnumSizeNoTag(((IConvertible) value).ToInt32(CultureInfo.InvariantCulture));
+                    }
                     else
                     else
+                    {
                         return ComputeEnumSizeNoTag(((IEnumLite) value).Number);
                         return ComputeEnumSizeNoTag(((IEnumLite) value).Number);
+                    }
                 default:
                 default:
                     throw new ArgumentOutOfRangeException("Invalid field type " + fieldType);
                     throw new ArgumentOutOfRangeException("Invalid field type " + fieldType);
             }
             }

+ 232 - 112
src/ProtocolBuffers/CodedOutputStream.cs

@@ -35,10 +35,9 @@
 #endregion
 #endregion
 
 
 using System;
 using System;
+using System.Collections;
 using System.Collections.Generic;
 using System.Collections.Generic;
-using System.Globalization;
 using System.IO;
 using System.IO;
-using System.Runtime.InteropServices;
 using System.Text;
 using System.Text;
 using Google.ProtocolBuffers.Collections;
 using Google.ProtocolBuffers.Collections;
 using Google.ProtocolBuffers.Descriptors;
 using Google.ProtocolBuffers.Descriptors;
@@ -145,14 +144,22 @@ namespace Google.ProtocolBuffers
         [CLSCompliant(false)]
         [CLSCompliant(false)]
         public void WriteUnknownField(int fieldNumber, WireFormat.WireType wireType, ulong value)
         public void WriteUnknownField(int fieldNumber, WireFormat.WireType wireType, ulong value)
         {
         {
-            if(wireType == WireFormat.WireType.Varint)
+            if (wireType == WireFormat.WireType.Varint)
+            {
                 WriteUInt64(fieldNumber, null /*not used*/, value);
                 WriteUInt64(fieldNumber, null /*not used*/, value);
+            }
             else if (wireType == WireFormat.WireType.Fixed32)
             else if (wireType == WireFormat.WireType.Fixed32)
-                WriteFixed32(fieldNumber, null /*not used*/, (uint)value);
+            {
+                WriteFixed32(fieldNumber, null /*not used*/, (uint) value);
+            }
             else if (wireType == WireFormat.WireType.Fixed64)
             else if (wireType == WireFormat.WireType.Fixed64)
+            {
                 WriteFixed64(fieldNumber, null /*not used*/, value);
                 WriteFixed64(fieldNumber, null /*not used*/, value);
+            }
             else
             else
+            {
                 throw InvalidProtocolBufferException.InvalidWireType();
                 throw InvalidProtocolBufferException.InvalidWireType();
+            }
         }
         }
 
 
         #endregion
         #endregion
@@ -164,61 +171,65 @@ namespace Google.ProtocolBuffers
             switch (fieldType)
             switch (fieldType)
             {
             {
                 case FieldType.String:
                 case FieldType.String:
-                    WriteString(fieldNumber, fieldName, (string)value);
+                    WriteString(fieldNumber, fieldName, (string) value);
                     break;
                     break;
                 case FieldType.Message:
                 case FieldType.Message:
-                    WriteMessage(fieldNumber, fieldName, (IMessageLite)value);
+                    WriteMessage(fieldNumber, fieldName, (IMessageLite) value);
                     break;
                     break;
                 case FieldType.Group:
                 case FieldType.Group:
-                    WriteGroup(fieldNumber, fieldName, (IMessageLite)value);
+                    WriteGroup(fieldNumber, fieldName, (IMessageLite) value);
                     break;
                     break;
                 case FieldType.Bytes:
                 case FieldType.Bytes:
-                    WriteBytes(fieldNumber, fieldName, (ByteString)value);
+                    WriteBytes(fieldNumber, fieldName, (ByteString) value);
                     break;
                     break;
                 case FieldType.Bool:
                 case FieldType.Bool:
-                    WriteBool(fieldNumber, fieldName, (bool)value);
+                    WriteBool(fieldNumber, fieldName, (bool) value);
                     break;
                     break;
                 case FieldType.Enum:
                 case FieldType.Enum:
-                    if (value is System.Enum)
-                        WriteEnum(fieldNumber, fieldName, (int)value, null/*not used*/);
+                    if (value is Enum)
+                    {
+                        WriteEnum(fieldNumber, fieldName, (int) value, null /*not used*/);
+                    }
                     else
                     else
-                        WriteEnum(fieldNumber, fieldName, ((IEnumLite)value).Number, null/*not used*/);
+                    {
+                        WriteEnum(fieldNumber, fieldName, ((IEnumLite) value).Number, null /*not used*/);
+                    }
                     break;
                     break;
                 case FieldType.Int32:
                 case FieldType.Int32:
-                    WriteInt32(fieldNumber, fieldName, (int)value);
+                    WriteInt32(fieldNumber, fieldName, (int) value);
                     break;
                     break;
                 case FieldType.Int64:
                 case FieldType.Int64:
-                    WriteInt64(fieldNumber, fieldName, (long)value);
+                    WriteInt64(fieldNumber, fieldName, (long) value);
                     break;
                     break;
                 case FieldType.UInt32:
                 case FieldType.UInt32:
-                    WriteUInt32(fieldNumber, fieldName, (uint)value);
+                    WriteUInt32(fieldNumber, fieldName, (uint) value);
                     break;
                     break;
                 case FieldType.UInt64:
                 case FieldType.UInt64:
-                    WriteUInt64(fieldNumber, fieldName, (ulong)value);
+                    WriteUInt64(fieldNumber, fieldName, (ulong) value);
                     break;
                     break;
                 case FieldType.SInt32:
                 case FieldType.SInt32:
-                    WriteSInt32(fieldNumber, fieldName, (int)value);
+                    WriteSInt32(fieldNumber, fieldName, (int) value);
                     break;
                     break;
                 case FieldType.SInt64:
                 case FieldType.SInt64:
-                    WriteSInt64(fieldNumber, fieldName, (long)value);
+                    WriteSInt64(fieldNumber, fieldName, (long) value);
                     break;
                     break;
                 case FieldType.Fixed32:
                 case FieldType.Fixed32:
-                    WriteFixed32(fieldNumber, fieldName, (uint)value);
+                    WriteFixed32(fieldNumber, fieldName, (uint) value);
                     break;
                     break;
                 case FieldType.Fixed64:
                 case FieldType.Fixed64:
-                    WriteFixed64(fieldNumber, fieldName, (ulong)value);
+                    WriteFixed64(fieldNumber, fieldName, (ulong) value);
                     break;
                     break;
                 case FieldType.SFixed32:
                 case FieldType.SFixed32:
-                    WriteSFixed32(fieldNumber, fieldName, (int)value);
+                    WriteSFixed32(fieldNumber, fieldName, (int) value);
                     break;
                     break;
                 case FieldType.SFixed64:
                 case FieldType.SFixed64:
-                    WriteSFixed64(fieldNumber, fieldName, (long)value);
+                    WriteSFixed64(fieldNumber, fieldName, (long) value);
                     break;
                     break;
                 case FieldType.Double:
                 case FieldType.Double:
-                    WriteDouble(fieldNumber, fieldName, (double)value);
+                    WriteDouble(fieldNumber, fieldName, (double) value);
                     break;
                     break;
                 case FieldType.Float:
                 case FieldType.Float:
-                    WriteFloat(fieldNumber, fieldName, (float)value);
+                    WriteFloat(fieldNumber, fieldName, (float) value);
                     break;
                     break;
             }
             }
         }
         }
@@ -348,7 +359,7 @@ namespace Google.ProtocolBuffers
         public void WriteBytes(int fieldNumber, string fieldName, ByteString value)
         public void WriteBytes(int fieldNumber, string fieldName, ByteString value)
         {
         {
             WriteTag(fieldNumber, WireFormat.WireType.LengthDelimited);
             WriteTag(fieldNumber, WireFormat.WireType.LengthDelimited);
-            WriteRawVarint32((uint)value.Length);
+            WriteRawVarint32((uint) value.Length);
             value.WriteTo(this);
             value.WriteTo(this);
         }
         }
 
 
@@ -414,61 +425,65 @@ namespace Google.ProtocolBuffers
             switch (fieldType)
             switch (fieldType)
             {
             {
                 case FieldType.String:
                 case FieldType.String:
-                    WriteStringNoTag((string)value);
+                    WriteStringNoTag((string) value);
                     break;
                     break;
                 case FieldType.Message:
                 case FieldType.Message:
-                    WriteMessageNoTag((IMessageLite)value);
+                    WriteMessageNoTag((IMessageLite) value);
                     break;
                     break;
                 case FieldType.Group:
                 case FieldType.Group:
-                    WriteGroupNoTag((IMessageLite)value);
+                    WriteGroupNoTag((IMessageLite) value);
                     break;
                     break;
                 case FieldType.Bytes:
                 case FieldType.Bytes:
-                    WriteBytesNoTag((ByteString)value);
+                    WriteBytesNoTag((ByteString) value);
                     break;
                     break;
                 case FieldType.Bool:
                 case FieldType.Bool:
-                    WriteBoolNoTag((bool)value);
+                    WriteBoolNoTag((bool) value);
                     break;
                     break;
                 case FieldType.Enum:
                 case FieldType.Enum:
-                    if (value is System.Enum)
-                        WriteEnumNoTag((int)value);
+                    if (value is Enum)
+                    {
+                        WriteEnumNoTag((int) value);
+                    }
                     else
                     else
-                        WriteEnumNoTag(((IEnumLite)value).Number);
+                    {
+                        WriteEnumNoTag(((IEnumLite) value).Number);
+                    }
                     break;
                     break;
                 case FieldType.Int32:
                 case FieldType.Int32:
-                    WriteInt32NoTag((int)value);
+                    WriteInt32NoTag((int) value);
                     break;
                     break;
                 case FieldType.Int64:
                 case FieldType.Int64:
-                    WriteInt64NoTag((long)value);
+                    WriteInt64NoTag((long) value);
                     break;
                     break;
                 case FieldType.UInt32:
                 case FieldType.UInt32:
-                    WriteUInt32NoTag((uint)value);
+                    WriteUInt32NoTag((uint) value);
                     break;
                     break;
                 case FieldType.UInt64:
                 case FieldType.UInt64:
-                    WriteUInt64NoTag((ulong)value);
+                    WriteUInt64NoTag((ulong) value);
                     break;
                     break;
                 case FieldType.SInt32:
                 case FieldType.SInt32:
-                    WriteSInt32NoTag((int)value);
+                    WriteSInt32NoTag((int) value);
                     break;
                     break;
                 case FieldType.SInt64:
                 case FieldType.SInt64:
-                    WriteSInt64NoTag((long)value);
+                    WriteSInt64NoTag((long) value);
                     break;
                     break;
                 case FieldType.Fixed32:
                 case FieldType.Fixed32:
-                    WriteFixed32NoTag((uint)value);
+                    WriteFixed32NoTag((uint) value);
                     break;
                     break;
                 case FieldType.Fixed64:
                 case FieldType.Fixed64:
-                    WriteFixed64NoTag((ulong)value);
+                    WriteFixed64NoTag((ulong) value);
                     break;
                     break;
                 case FieldType.SFixed32:
                 case FieldType.SFixed32:
-                    WriteSFixed32NoTag((int)value);
+                    WriteSFixed32NoTag((int) value);
                     break;
                     break;
                 case FieldType.SFixed64:
                 case FieldType.SFixed64:
-                    WriteSFixed64NoTag((long)value);
+                    WriteSFixed64NoTag((long) value);
                     break;
                     break;
                 case FieldType.Double:
                 case FieldType.Double:
-                    WriteDoubleNoTag((double)value);
+                    WriteDoubleNoTag((double) value);
                     break;
                     break;
                 case FieldType.Float:
                 case FieldType.Float:
-                    WriteFloatNoTag((float)value);
+                    WriteFloatNoTag((float) value);
                     break;
                     break;
             }
             }
         }
         }
@@ -497,7 +512,7 @@ namespace Google.ProtocolBuffers
             else
             else
                 WriteRawBytes(rawBytes, 0, 8);
                 WriteRawBytes(rawBytes, 0, 8);
 #else
 #else
-            WriteRawLittleEndian64((ulong)BitConverter.DoubleToInt64Bits(value));
+            WriteRawLittleEndian64((ulong) BitConverter.DoubleToInt64Bits(value));
 #endif
 #endif
         }
         }
 
 
@@ -508,7 +523,9 @@ namespace Google.ProtocolBuffers
         {
         {
             byte[] rawBytes = BitConverter.GetBytes(value);
             byte[] rawBytes = BitConverter.GetBytes(value);
             if (!BitConverter.IsLittleEndian)
             if (!BitConverter.IsLittleEndian)
+            {
                 ByteArray.Reverse(rawBytes);
                 ByteArray.Reverse(rawBytes);
+            }
 
 
             if (limit - position >= 4)
             if (limit - position >= 4)
             {
             {
@@ -518,7 +535,9 @@ namespace Google.ProtocolBuffers
                 buffer[position++] = rawBytes[3];
                 buffer[position++] = rawBytes[3];
             }
             }
             else
             else
+            {
                 WriteRawBytes(rawBytes, 0, 4);
                 WriteRawBytes(rawBytes, 0, 4);
+            }
         }
         }
 
 
         /// <summary>
         /// <summary>
@@ -535,7 +554,7 @@ namespace Google.ProtocolBuffers
         /// </summary>
         /// </summary>
         public void WriteInt64NoTag(long value)
         public void WriteInt64NoTag(long value)
         {
         {
-            WriteRawVarint64((ulong)value);
+            WriteRawVarint64((ulong) value);
         }
         }
 
 
         /// <summary>
         /// <summary>
@@ -545,12 +564,12 @@ namespace Google.ProtocolBuffers
         {
         {
             if (value >= 0)
             if (value >= 0)
             {
             {
-                WriteRawVarint32((uint)value);
+                WriteRawVarint32((uint) value);
             }
             }
             else
             else
             {
             {
                 // Must sign-extend.
                 // Must sign-extend.
-                WriteRawVarint64((ulong)value);
+                WriteRawVarint64((ulong) value);
             }
             }
         }
         }
 
 
@@ -577,7 +596,7 @@ namespace Google.ProtocolBuffers
         /// </summary>
         /// </summary>
         public void WriteBoolNoTag(bool value)
         public void WriteBoolNoTag(bool value)
         {
         {
-            WriteRawByte(value ? (byte)1 : (byte)0);
+            WriteRawByte(value ? (byte) 1 : (byte) 0);
         }
         }
 
 
         /// <summary>
         /// <summary>
@@ -588,7 +607,7 @@ namespace Google.ProtocolBuffers
             // Optimise the case where we have enough space to write
             // Optimise the case where we have enough space to write
             // the string directly to the buffer, which should be common.
             // the string directly to the buffer, which should be common.
             int length = Encoding.UTF8.GetByteCount(value);
             int length = Encoding.UTF8.GetByteCount(value);
-            WriteRawVarint32((uint)length);
+            WriteRawVarint32((uint) length);
             if (limit - position >= length)
             if (limit - position >= length)
             {
             {
                 Encoding.UTF8.GetBytes(value, 0, value.Length, buffer, position);
                 Encoding.UTF8.GetBytes(value, 0, value.Length, buffer, position);
@@ -611,13 +630,13 @@ namespace Google.ProtocolBuffers
 
 
         public void WriteMessageNoTag(IMessageLite value)
         public void WriteMessageNoTag(IMessageLite value)
         {
         {
-            WriteRawVarint32((uint)value.SerializedSize);
+            WriteRawVarint32((uint) value.SerializedSize);
             value.WriteTo(this);
             value.WriteTo(this);
         }
         }
 
 
         public void WriteBytesNoTag(ByteString value)
         public void WriteBytesNoTag(ByteString value)
         {
         {
-            WriteRawVarint32((uint)value.Length);
+            WriteRawVarint32((uint) value.Length);
             value.WriteTo(this);
             value.WriteTo(this);
         }
         }
 
 
@@ -629,17 +648,17 @@ namespace Google.ProtocolBuffers
 
 
         public void WriteEnumNoTag(int value)
         public void WriteEnumNoTag(int value)
         {
         {
-            WriteRawVarint32((uint)value);
+            WriteRawVarint32((uint) value);
         }
         }
 
 
         public void WriteSFixed32NoTag(int value)
         public void WriteSFixed32NoTag(int value)
         {
         {
-            WriteRawLittleEndian32((uint)value);
+            WriteRawLittleEndian32((uint) value);
         }
         }
 
 
         public void WriteSFixed64NoTag(long value)
         public void WriteSFixed64NoTag(long value)
         {
         {
-            WriteRawLittleEndian64((ulong)value);
+            WriteRawLittleEndian64((ulong) value);
         }
         }
 
 
         public void WriteSInt32NoTag(int value)
         public void WriteSInt32NoTag(int value)
@@ -656,114 +675,150 @@ namespace Google.ProtocolBuffers
 
 
         #region Write array members
         #region Write array members
 
 
-        public void WriteArray(FieldType fieldType, int fieldNumber, string fieldName, System.Collections.IEnumerable list)
+        public void WriteArray(FieldType fieldType, int fieldNumber, string fieldName, IEnumerable list)
         {
         {
             foreach (object element in list)
             foreach (object element in list)
+            {
                 WriteField(fieldType, fieldNumber, fieldName, element);
                 WriteField(fieldType, fieldNumber, fieldName, element);
+            }
         }
         }
 
 
         public void WriteGroupArray<T>(int fieldNumber, string fieldName, IEnumerable<T> list)
         public void WriteGroupArray<T>(int fieldNumber, string fieldName, IEnumerable<T> list)
             where T : IMessageLite
             where T : IMessageLite
         {
         {
             foreach (IMessageLite value in list)
             foreach (IMessageLite value in list)
+            {
                 WriteGroup(fieldNumber, fieldName, value);
                 WriteGroup(fieldNumber, fieldName, value);
+            }
         }
         }
 
 
         public void WriteMessageArray<T>(int fieldNumber, string fieldName, IEnumerable<T> list)
         public void WriteMessageArray<T>(int fieldNumber, string fieldName, IEnumerable<T> list)
             where T : IMessageLite
             where T : IMessageLite
         {
         {
             foreach (IMessageLite value in list)
             foreach (IMessageLite value in list)
+            {
                 WriteMessage(fieldNumber, fieldName, value);
                 WriteMessage(fieldNumber, fieldName, value);
+            }
         }
         }
 
 
         public void WriteStringArray(int fieldNumber, string fieldName, IEnumerable<string> list)
         public void WriteStringArray(int fieldNumber, string fieldName, IEnumerable<string> list)
         {
         {
             foreach (var value in list)
             foreach (var value in list)
+            {
                 WriteString(fieldNumber, fieldName, value);
                 WriteString(fieldNumber, fieldName, value);
+            }
         }
         }
 
 
         public void WriteBytesArray(int fieldNumber, string fieldName, IEnumerable<ByteString> list)
         public void WriteBytesArray(int fieldNumber, string fieldName, IEnumerable<ByteString> list)
         {
         {
             foreach (var value in list)
             foreach (var value in list)
+            {
                 WriteBytes(fieldNumber, fieldName, value);
                 WriteBytes(fieldNumber, fieldName, value);
+            }
         }
         }
 
 
         public void WriteBoolArray(int fieldNumber, string fieldName, IEnumerable<bool> list)
         public void WriteBoolArray(int fieldNumber, string fieldName, IEnumerable<bool> list)
         {
         {
             foreach (var value in list)
             foreach (var value in list)
+            {
                 WriteBool(fieldNumber, fieldName, value);
                 WriteBool(fieldNumber, fieldName, value);
+            }
         }
         }
 
 
         public void WriteInt32Array(int fieldNumber, string fieldName, IEnumerable<int> list)
         public void WriteInt32Array(int fieldNumber, string fieldName, IEnumerable<int> list)
         {
         {
             foreach (var value in list)
             foreach (var value in list)
+            {
                 WriteInt32(fieldNumber, fieldName, value);
                 WriteInt32(fieldNumber, fieldName, value);
+            }
         }
         }
 
 
         public void WriteSInt32Array(int fieldNumber, string fieldName, IEnumerable<int> list)
         public void WriteSInt32Array(int fieldNumber, string fieldName, IEnumerable<int> list)
         {
         {
             foreach (var value in list)
             foreach (var value in list)
+            {
                 WriteSInt32(fieldNumber, fieldName, value);
                 WriteSInt32(fieldNumber, fieldName, value);
+            }
         }
         }
 
 
         public void WriteUInt32Array(int fieldNumber, string fieldName, IEnumerable<uint> list)
         public void WriteUInt32Array(int fieldNumber, string fieldName, IEnumerable<uint> list)
         {
         {
             foreach (var value in list)
             foreach (var value in list)
+            {
                 WriteUInt32(fieldNumber, fieldName, value);
                 WriteUInt32(fieldNumber, fieldName, value);
+            }
         }
         }
 
 
         public void WriteFixed32Array(int fieldNumber, string fieldName, IEnumerable<uint> list)
         public void WriteFixed32Array(int fieldNumber, string fieldName, IEnumerable<uint> list)
         {
         {
             foreach (var value in list)
             foreach (var value in list)
+            {
                 WriteFixed32(fieldNumber, fieldName, value);
                 WriteFixed32(fieldNumber, fieldName, value);
+            }
         }
         }
 
 
         public void WriteSFixed32Array(int fieldNumber, string fieldName, IEnumerable<int> list)
         public void WriteSFixed32Array(int fieldNumber, string fieldName, IEnumerable<int> list)
         {
         {
             foreach (var value in list)
             foreach (var value in list)
+            {
                 WriteSFixed32(fieldNumber, fieldName, value);
                 WriteSFixed32(fieldNumber, fieldName, value);
+            }
         }
         }
 
 
         public void WriteInt64Array(int fieldNumber, string fieldName, IEnumerable<long> list)
         public void WriteInt64Array(int fieldNumber, string fieldName, IEnumerable<long> list)
         {
         {
             foreach (var value in list)
             foreach (var value in list)
+            {
                 WriteInt64(fieldNumber, fieldName, value);
                 WriteInt64(fieldNumber, fieldName, value);
+            }
         }
         }
 
 
         public void WriteSInt64Array(int fieldNumber, string fieldName, IEnumerable<long> list)
         public void WriteSInt64Array(int fieldNumber, string fieldName, IEnumerable<long> list)
         {
         {
             foreach (var value in list)
             foreach (var value in list)
+            {
                 WriteSInt64(fieldNumber, fieldName, value);
                 WriteSInt64(fieldNumber, fieldName, value);
+            }
         }
         }
 
 
         public void WriteUInt64Array(int fieldNumber, string fieldName, IEnumerable<ulong> list)
         public void WriteUInt64Array(int fieldNumber, string fieldName, IEnumerable<ulong> list)
         {
         {
             foreach (var value in list)
             foreach (var value in list)
+            {
                 WriteUInt64(fieldNumber, fieldName, value);
                 WriteUInt64(fieldNumber, fieldName, value);
+            }
         }
         }
 
 
         public void WriteFixed64Array(int fieldNumber, string fieldName, IEnumerable<ulong> list)
         public void WriteFixed64Array(int fieldNumber, string fieldName, IEnumerable<ulong> list)
         {
         {
             foreach (var value in list)
             foreach (var value in list)
+            {
                 WriteFixed64(fieldNumber, fieldName, value);
                 WriteFixed64(fieldNumber, fieldName, value);
+            }
         }
         }
 
 
         public void WriteSFixed64Array(int fieldNumber, string fieldName, IEnumerable<long> list)
         public void WriteSFixed64Array(int fieldNumber, string fieldName, IEnumerable<long> list)
         {
         {
             foreach (var value in list)
             foreach (var value in list)
+            {
                 WriteSFixed64(fieldNumber, fieldName, value);
                 WriteSFixed64(fieldNumber, fieldName, value);
+            }
         }
         }
 
 
         public void WriteDoubleArray(int fieldNumber, string fieldName, IEnumerable<double> list)
         public void WriteDoubleArray(int fieldNumber, string fieldName, IEnumerable<double> list)
         {
         {
             foreach (var value in list)
             foreach (var value in list)
+            {
                 WriteDouble(fieldNumber, fieldName, value);
                 WriteDouble(fieldNumber, fieldName, value);
+            }
         }
         }
 
 
         public void WriteFloatArray(int fieldNumber, string fieldName, IEnumerable<float> list)
         public void WriteFloatArray(int fieldNumber, string fieldName, IEnumerable<float> list)
         {
         {
             foreach (var value in list)
             foreach (var value in list)
+            {
                 WriteFloat(fieldNumber, fieldName, value);
                 WriteFloat(fieldNumber, fieldName, value);
+            }
         }
         }
 
 
         [CLSCompliant(false)]
         [CLSCompliant(false)]
@@ -772,13 +827,17 @@ namespace Google.ProtocolBuffers
         {
         {
             if (list is ICastArray)
             if (list is ICastArray)
             {
             {
-                foreach (int value in ((ICastArray)list).CastArray<int>())
+                foreach (int value in ((ICastArray) list).CastArray<int>())
+                {
                     WriteEnum(fieldNumber, fieldName, value, null /*unused*/);
                     WriteEnum(fieldNumber, fieldName, value, null /*unused*/);
+                }
             }
             }
             else
             else
             {
             {
                 foreach (object value in list)
                 foreach (object value in list)
+                {
                     WriteEnum(fieldNumber, fieldName, (int) value, null /*unused*/);
                     WriteEnum(fieldNumber, fieldName, (int) value, null /*unused*/);
+                }
             }
             }
         }
         }
 
 
@@ -786,155 +845,202 @@ namespace Google.ProtocolBuffers
 
 
         #region Write packed array members
         #region Write packed array members
 
 
-        public void WritePackedArray(FieldType fieldType, int fieldNumber, string fieldName, System.Collections.IEnumerable list)
+        public void WritePackedArray(FieldType fieldType, int fieldNumber, string fieldName, IEnumerable list)
         {
         {
             int calculatedSize = 0;
             int calculatedSize = 0;
             foreach (object element in list)
             foreach (object element in list)
-                calculatedSize += CodedOutputStream.ComputeFieldSizeNoTag(fieldType, element);
+            {
+                calculatedSize += ComputeFieldSizeNoTag(fieldType, element);
+            }
 
 
             WriteTag(fieldNumber, WireFormat.WireType.LengthDelimited);
             WriteTag(fieldNumber, WireFormat.WireType.LengthDelimited);
-            WriteRawVarint32((uint)calculatedSize);
+            WriteRawVarint32((uint) calculatedSize);
 
 
             foreach (object element in list)
             foreach (object element in list)
+            {
                 WriteFieldNoTag(fieldType, element);
                 WriteFieldNoTag(fieldType, element);
+            }
         }
         }
 
 
         public void WritePackedGroupArray<T>(int fieldNumber, string fieldName, int calculatedSize, IEnumerable<T> list)
         public void WritePackedGroupArray<T>(int fieldNumber, string fieldName, int calculatedSize, IEnumerable<T> list)
             where T : IMessageLite
             where T : IMessageLite
         {
         {
             WriteTag(fieldNumber, WireFormat.WireType.LengthDelimited);
             WriteTag(fieldNumber, WireFormat.WireType.LengthDelimited);
-            WriteRawVarint32((uint)calculatedSize);
+            WriteRawVarint32((uint) calculatedSize);
             foreach (IMessageLite value in list)
             foreach (IMessageLite value in list)
+            {
                 WriteGroupNoTag(value);
                 WriteGroupNoTag(value);
+            }
         }
         }
 
 
-        public void WritePackedMessageArray<T>(int fieldNumber, string fieldName, int calculatedSize, IEnumerable<T> list)
+        public void WritePackedMessageArray<T>(int fieldNumber, string fieldName, int calculatedSize,
+                                               IEnumerable<T> list)
             where T : IMessageLite
             where T : IMessageLite
         {
         {
             WriteTag(fieldNumber, WireFormat.WireType.LengthDelimited);
             WriteTag(fieldNumber, WireFormat.WireType.LengthDelimited);
-            WriteRawVarint32((uint)calculatedSize);
+            WriteRawVarint32((uint) calculatedSize);
             foreach (IMessageLite value in list)
             foreach (IMessageLite value in list)
+            {
                 WriteMessageNoTag(value);
                 WriteMessageNoTag(value);
+            }
         }
         }
 
 
-        public void WritePackedStringArray(int fieldNumber, string fieldName, int calculatedSize, IEnumerable<string> list)
+        public void WritePackedStringArray(int fieldNumber, string fieldName, int calculatedSize,
+                                           IEnumerable<string> list)
         {
         {
             WriteTag(fieldNumber, WireFormat.WireType.LengthDelimited);
             WriteTag(fieldNumber, WireFormat.WireType.LengthDelimited);
-            WriteRawVarint32((uint)calculatedSize);
+            WriteRawVarint32((uint) calculatedSize);
             foreach (var value in list)
             foreach (var value in list)
+            {
                 WriteStringNoTag(value);
                 WriteStringNoTag(value);
+            }
         }
         }
 
 
-        public void WritePackedBytesArray(int fieldNumber, string fieldName, int calculatedSize, IEnumerable<ByteString> list)
+        public void WritePackedBytesArray(int fieldNumber, string fieldName, int calculatedSize,
+                                          IEnumerable<ByteString> list)
         {
         {
             WriteTag(fieldNumber, WireFormat.WireType.LengthDelimited);
             WriteTag(fieldNumber, WireFormat.WireType.LengthDelimited);
-            WriteRawVarint32((uint)calculatedSize);
+            WriteRawVarint32((uint) calculatedSize);
             foreach (var value in list)
             foreach (var value in list)
+            {
                 WriteBytesNoTag(value);
                 WriteBytesNoTag(value);
+            }
         }
         }
 
 
         public void WritePackedBoolArray(int fieldNumber, string fieldName, int calculatedSize, IEnumerable<bool> list)
         public void WritePackedBoolArray(int fieldNumber, string fieldName, int calculatedSize, IEnumerable<bool> list)
         {
         {
             WriteTag(fieldNumber, WireFormat.WireType.LengthDelimited);
             WriteTag(fieldNumber, WireFormat.WireType.LengthDelimited);
-            WriteRawVarint32((uint)calculatedSize);
+            WriteRawVarint32((uint) calculatedSize);
             foreach (var value in list)
             foreach (var value in list)
+            {
                 WriteBoolNoTag(value);
                 WriteBoolNoTag(value);
+            }
         }
         }
 
 
         public void WritePackedInt32Array(int fieldNumber, string fieldName, int calculatedSize, IEnumerable<int> list)
         public void WritePackedInt32Array(int fieldNumber, string fieldName, int calculatedSize, IEnumerable<int> list)
         {
         {
             WriteTag(fieldNumber, WireFormat.WireType.LengthDelimited);
             WriteTag(fieldNumber, WireFormat.WireType.LengthDelimited);
-            WriteRawVarint32((uint)calculatedSize);
+            WriteRawVarint32((uint) calculatedSize);
             foreach (var value in list)
             foreach (var value in list)
+            {
                 WriteInt32NoTag(value);
                 WriteInt32NoTag(value);
+            }
         }
         }
 
 
         public void WritePackedSInt32Array(int fieldNumber, string fieldName, int calculatedSize, IEnumerable<int> list)
         public void WritePackedSInt32Array(int fieldNumber, string fieldName, int calculatedSize, IEnumerable<int> list)
         {
         {
             WriteTag(fieldNumber, WireFormat.WireType.LengthDelimited);
             WriteTag(fieldNumber, WireFormat.WireType.LengthDelimited);
-            WriteRawVarint32((uint)calculatedSize);
+            WriteRawVarint32((uint) calculatedSize);
             foreach (var value in list)
             foreach (var value in list)
+            {
                 WriteSInt32NoTag(value);
                 WriteSInt32NoTag(value);
+            }
         }
         }
 
 
         public void WritePackedUInt32Array(int fieldNumber, string fieldName, int calculatedSize, IEnumerable<uint> list)
         public void WritePackedUInt32Array(int fieldNumber, string fieldName, int calculatedSize, IEnumerable<uint> list)
         {
         {
             WriteTag(fieldNumber, WireFormat.WireType.LengthDelimited);
             WriteTag(fieldNumber, WireFormat.WireType.LengthDelimited);
-            WriteRawVarint32((uint)calculatedSize);
+            WriteRawVarint32((uint) calculatedSize);
             foreach (var value in list)
             foreach (var value in list)
+            {
                 WriteUInt32NoTag(value);
                 WriteUInt32NoTag(value);
+            }
         }
         }
 
 
-        public void WritePackedFixed32Array(int fieldNumber, string fieldName, int calculatedSize, IEnumerable<uint> list)
+        public void WritePackedFixed32Array(int fieldNumber, string fieldName, int calculatedSize,
+                                            IEnumerable<uint> list)
         {
         {
             WriteTag(fieldNumber, WireFormat.WireType.LengthDelimited);
             WriteTag(fieldNumber, WireFormat.WireType.LengthDelimited);
-            WriteRawVarint32((uint)calculatedSize);
+            WriteRawVarint32((uint) calculatedSize);
             foreach (var value in list)
             foreach (var value in list)
+            {
                 WriteFixed32NoTag(value);
                 WriteFixed32NoTag(value);
+            }
         }
         }
 
 
-        public void WritePackedSFixed32Array(int fieldNumber, string fieldName, int calculatedSize, IEnumerable<int> list)
+        public void WritePackedSFixed32Array(int fieldNumber, string fieldName, int calculatedSize,
+                                             IEnumerable<int> list)
         {
         {
             WriteTag(fieldNumber, WireFormat.WireType.LengthDelimited);
             WriteTag(fieldNumber, WireFormat.WireType.LengthDelimited);
-            WriteRawVarint32((uint)calculatedSize);
+            WriteRawVarint32((uint) calculatedSize);
             foreach (var value in list)
             foreach (var value in list)
+            {
                 WriteSFixed32NoTag(value);
                 WriteSFixed32NoTag(value);
+            }
         }
         }
 
 
         public void WritePackedInt64Array(int fieldNumber, string fieldName, int calculatedSize, IEnumerable<long> list)
         public void WritePackedInt64Array(int fieldNumber, string fieldName, int calculatedSize, IEnumerable<long> list)
         {
         {
             WriteTag(fieldNumber, WireFormat.WireType.LengthDelimited);
             WriteTag(fieldNumber, WireFormat.WireType.LengthDelimited);
-            WriteRawVarint32((uint)calculatedSize);
+            WriteRawVarint32((uint) calculatedSize);
             foreach (var value in list)
             foreach (var value in list)
+            {
                 WriteInt64NoTag(value);
                 WriteInt64NoTag(value);
+            }
         }
         }
 
 
         public void WritePackedSInt64Array(int fieldNumber, string fieldName, int calculatedSize, IEnumerable<long> list)
         public void WritePackedSInt64Array(int fieldNumber, string fieldName, int calculatedSize, IEnumerable<long> list)
         {
         {
             WriteTag(fieldNumber, WireFormat.WireType.LengthDelimited);
             WriteTag(fieldNumber, WireFormat.WireType.LengthDelimited);
-            WriteRawVarint32((uint)calculatedSize);
+            WriteRawVarint32((uint) calculatedSize);
             foreach (var value in list)
             foreach (var value in list)
+            {
                 WriteSInt64NoTag(value);
                 WriteSInt64NoTag(value);
+            }
         }
         }
 
 
-        public void WritePackedUInt64Array(int fieldNumber, string fieldName, int calculatedSize, IEnumerable<ulong> list)
+        public void WritePackedUInt64Array(int fieldNumber, string fieldName, int calculatedSize,
+                                           IEnumerable<ulong> list)
         {
         {
             WriteTag(fieldNumber, WireFormat.WireType.LengthDelimited);
             WriteTag(fieldNumber, WireFormat.WireType.LengthDelimited);
-            WriteRawVarint32((uint)calculatedSize);
+            WriteRawVarint32((uint) calculatedSize);
             foreach (var value in list)
             foreach (var value in list)
+            {
                 WriteUInt64NoTag(value);
                 WriteUInt64NoTag(value);
+            }
         }
         }
 
 
-        public void WritePackedFixed64Array(int fieldNumber, string fieldName, int calculatedSize, IEnumerable<ulong> list)
+        public void WritePackedFixed64Array(int fieldNumber, string fieldName, int calculatedSize,
+                                            IEnumerable<ulong> list)
         {
         {
             WriteTag(fieldNumber, WireFormat.WireType.LengthDelimited);
             WriteTag(fieldNumber, WireFormat.WireType.LengthDelimited);
-            WriteRawVarint32((uint)calculatedSize);
+            WriteRawVarint32((uint) calculatedSize);
             foreach (var value in list)
             foreach (var value in list)
+            {
                 WriteFixed64NoTag(value);
                 WriteFixed64NoTag(value);
+            }
         }
         }
 
 
-        public void WritePackedSFixed64Array(int fieldNumber, string fieldName, int calculatedSize, IEnumerable<long> list)
+        public void WritePackedSFixed64Array(int fieldNumber, string fieldName, int calculatedSize,
+                                             IEnumerable<long> list)
         {
         {
             WriteTag(fieldNumber, WireFormat.WireType.LengthDelimited);
             WriteTag(fieldNumber, WireFormat.WireType.LengthDelimited);
-            WriteRawVarint32((uint)calculatedSize);
+            WriteRawVarint32((uint) calculatedSize);
             foreach (var value in list)
             foreach (var value in list)
+            {
                 WriteSFixed64NoTag(value);
                 WriteSFixed64NoTag(value);
+            }
         }
         }
 
 
-        public void WritePackedDoubleArray(int fieldNumber, string fieldName, int calculatedSize, IEnumerable<double> list)
+        public void WritePackedDoubleArray(int fieldNumber, string fieldName, int calculatedSize,
+                                           IEnumerable<double> list)
         {
         {
             WriteTag(fieldNumber, WireFormat.WireType.LengthDelimited);
             WriteTag(fieldNumber, WireFormat.WireType.LengthDelimited);
-            WriteRawVarint32((uint)calculatedSize);
+            WriteRawVarint32((uint) calculatedSize);
             foreach (var value in list)
             foreach (var value in list)
+            {
                 WriteDoubleNoTag(value);
                 WriteDoubleNoTag(value);
+            }
         }
         }
 
 
         public void WritePackedFloatArray(int fieldNumber, string fieldName, int calculatedSize, IEnumerable<float> list)
         public void WritePackedFloatArray(int fieldNumber, string fieldName, int calculatedSize, IEnumerable<float> list)
         {
         {
             WriteTag(fieldNumber, WireFormat.WireType.LengthDelimited);
             WriteTag(fieldNumber, WireFormat.WireType.LengthDelimited);
-            WriteRawVarint32((uint)calculatedSize);
+            WriteRawVarint32((uint) calculatedSize);
             foreach (var value in list)
             foreach (var value in list)
+            {
                 WriteFloatNoTag(value);
                 WriteFloatNoTag(value);
+            }
         }
         }
 
 
         [CLSCompliant(false)]
         [CLSCompliant(false)]
@@ -942,16 +1048,20 @@ namespace Google.ProtocolBuffers
             where T : struct, IComparable, IFormattable, IConvertible
             where T : struct, IComparable, IFormattable, IConvertible
         {
         {
             WriteTag(fieldNumber, WireFormat.WireType.LengthDelimited);
             WriteTag(fieldNumber, WireFormat.WireType.LengthDelimited);
-            WriteRawVarint32((uint)calculatedSize);
+            WriteRawVarint32((uint) calculatedSize);
             if (list is ICastArray)
             if (list is ICastArray)
             {
             {
-                foreach (int value in ((ICastArray)list).CastArray<int>())
+                foreach (int value in ((ICastArray) list).CastArray<int>())
+                {
                     WriteEnumNoTag(value);
                     WriteEnumNoTag(value);
+                }
             }
             }
             else
             else
             {
             {
                 foreach (object value in list)
                 foreach (object value in list)
-                    WriteEnumNoTag((int)value);
+                {
+                    WriteEnumNoTag((int) value);
+                }
             }
             }
         }
         }
 
 
@@ -986,6 +1096,7 @@ namespace Google.ProtocolBuffers
             }
             }
         }
         }
 #endif
 #endif
+
         /// <summary>
         /// <summary>
         /// Writes a 32 bit value as a varint. The fast route is taken when
         /// Writes a 32 bit value as a varint. The fast route is taken when
         /// there's enough buffer space left to whizz through without checking
         /// there's enough buffer space left to whizz through without checking
@@ -997,18 +1108,22 @@ namespace Google.ProtocolBuffers
 #if true
 #if true
             while (value > 127 && position < limit)
             while (value > 127 && position < limit)
             {
             {
-                buffer[position++] = (byte)((value & 0x7F) | 0x80);
+                buffer[position++] = (byte) ((value & 0x7F) | 0x80);
                 value >>= 7;
                 value >>= 7;
             }
             }
             while (value > 127)
             while (value > 127)
             {
             {
-                WriteRawByte((byte)((value & 0x7F) | 0x80));
+                WriteRawByte((byte) ((value & 0x7F) | 0x80));
                 value >>= 7;
                 value >>= 7;
             }
             }
-            if(position < limit)
-                buffer[position++] = (byte)value;
+            if (position < limit)
+            {
+                buffer[position++] = (byte) value;
+            }
             else
             else
-                WriteRawByte((byte)value);
+            {
+                WriteRawByte((byte) value);
+            }
 #else
 #else
             if (position + 5 > limit)
             if (position + 5 > limit)
             {
             {
@@ -1038,18 +1153,22 @@ namespace Google.ProtocolBuffers
 #if true
 #if true
             while (value > 127 && position < limit)
             while (value > 127 && position < limit)
             {
             {
-                buffer[position++] = (byte)((value & 0x7F) | 0x80);
+                buffer[position++] = (byte) ((value & 0x7F) | 0x80);
                 value >>= 7;
                 value >>= 7;
             }
             }
             while (value > 127)
             while (value > 127)
             {
             {
-                WriteRawByte((byte)((value & 0x7F) | 0x80));
+                WriteRawByte((byte) ((value & 0x7F) | 0x80));
                 value >>= 7;
                 value >>= 7;
             }
             }
-            if(position < limit)
-                buffer[position++] = (byte)value;
+            if (position < limit)
+            {
+                buffer[position++] = (byte) value;
+            }
             else
             else
-                WriteRawByte((byte)value);
+            {
+                WriteRawByte((byte) value);
+            }
 #else
 #else
             while (true)
             while (true)
             {
             {
@@ -1079,10 +1198,10 @@ namespace Google.ProtocolBuffers
             }
             }
             else
             else
             {
             {
-                buffer[position++] = ((byte)value);
-                buffer[position++] = ((byte)(value >> 8));
-                buffer[position++] = ((byte)(value >> 16));
-                buffer[position++] = ((byte)(value >> 24));
+                buffer[position++] = ((byte) value);
+                buffer[position++] = ((byte) (value >> 8));
+                buffer[position++] = ((byte) (value >> 16));
+                buffer[position++] = ((byte) (value >> 24));
             }
             }
         }
         }
 
 
@@ -1102,14 +1221,14 @@ namespace Google.ProtocolBuffers
             }
             }
             else
             else
             {
             {
-                buffer[position++] = ((byte)value);
-                buffer[position++] = ((byte)(value >> 8));
-                buffer[position++] = ((byte)(value >> 16));
-                buffer[position++] = ((byte)(value >> 24));
-                buffer[position++] = ((byte)(value >> 32));
-                buffer[position++] = ((byte)(value >> 40));
-                buffer[position++] = ((byte)(value >> 48));
-                buffer[position++] = ((byte)(value >> 56));
+                buffer[position++] = ((byte) value);
+                buffer[position++] = ((byte) (value >> 8));
+                buffer[position++] = ((byte) (value >> 16));
+                buffer[position++] = ((byte) (value >> 24));
+                buffer[position++] = ((byte) (value >> 32));
+                buffer[position++] = ((byte) (value >> 40));
+                buffer[position++] = ((byte) (value >> 48));
+                buffer[position++] = ((byte) (value >> 56));
             }
             }
         }
         }
 
 
@@ -1177,6 +1296,7 @@ namespace Google.ProtocolBuffers
         }
         }
 
 
         #endregion
         #endregion
+
         /// <summary>
         /// <summary>
         /// Encode a 32-bit value with ZigZag encoding.
         /// Encode a 32-bit value with ZigZag encoding.
         /// </summary>
         /// </summary>

+ 18 - 3
src/ProtocolBuffers/Collections/PopsicleList.cs

@@ -30,8 +30,8 @@
 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 using System;
 using System;
-using System.Collections.Generic;
 using System.Collections;
 using System.Collections;
+using System.Collections.Generic;
 
 
 namespace Google.ProtocolBuffers.Collections
 namespace Google.ProtocolBuffers.Collections
 {
 {
@@ -76,7 +76,14 @@ namespace Google.ProtocolBuffers.Collections
 
 
         public T this[int index]
         public T this[int index]
         {
         {
-            get { if (items == null) throw new ArgumentOutOfRangeException(); return items[index]; }
+            get
+            {
+                if (items == null)
+                {
+                    throw new ArgumentOutOfRangeException();
+                }
+                return items[index];
+            }
             set
             set
             {
             {
                 ValidateModification();
                 ValidateModification();
@@ -104,7 +111,9 @@ namespace Google.ProtocolBuffers.Collections
         public void CopyTo(T[] array, int arrayIndex)
         public void CopyTo(T[] array, int arrayIndex)
         {
         {
             if (items != null)
             if (items != null)
+            {
                 items.CopyTo(array, arrayIndex);
                 items.CopyTo(array, arrayIndex);
+            }
         }
         }
 
 
         public int Count
         public int Count
@@ -140,7 +149,9 @@ namespace Google.ProtocolBuffers.Collections
                 throw new NotSupportedException("List is read-only");
                 throw new NotSupportedException("List is read-only");
             }
             }
             if (items == null)
             if (items == null)
+            {
                 items = new List<T>();
                 items = new List<T>();
+            }
             items.AddRange(collection);
             items.AddRange(collection);
         }
         }
 
 
@@ -151,14 +162,18 @@ namespace Google.ProtocolBuffers.Collections
                 throw new NotSupportedException("List is read-only");
                 throw new NotSupportedException("List is read-only");
             }
             }
             if (items == null)
             if (items == null)
+            {
                 items = new List<T>();
                 items = new List<T>();
+            }
         }
         }
 
 
         IEnumerable<TItemType> ICastArray.CastArray<TItemType>()
         IEnumerable<TItemType> ICastArray.CastArray<TItemType>()
         {
         {
             if (items == null)
             if (items == null)
+            {
                 return new TItemType[0];
                 return new TItemType[0];
-            return (TItemType[])(object)items.ToArray();
+            }
+            return (TItemType[]) (object) items.ToArray();
         }
         }
     }
     }
 }
 }

+ 1 - 1
src/ProtocolBuffers/Descriptors/DescriptorPool.cs

@@ -29,8 +29,8 @@
 // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
 // THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
 // (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
-using System.Collections.Generic;
 using System;
 using System;
+using System.Collections.Generic;
 using System.Text;
 using System.Text;
 using System.Text.RegularExpressions;
 using System.Text.RegularExpressions;
 
 

+ 1 - 0
src/ProtocolBuffers/Descriptors/EnumDescriptor.cs

@@ -98,6 +98,7 @@ namespace Google.ProtocolBuffers.Descriptors
         {
         {
             return FindValueByNumber(number);
             return FindValueByNumber(number);
         }
         }
+
         IEnumLite IEnumLiteMap.FindValueByName(string name)
         IEnumLite IEnumLiteMap.FindValueByName(string name)
         {
         {
             return FindValueByName(name);
             return FindValueByName(name);

+ 2 - 4
src/ProtocolBuffers/Descriptors/FieldMappingAttribute.cs

@@ -31,6 +31,7 @@
 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 // OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 using System;
 using System;
 using System.Collections.Generic;
 using System.Collections.Generic;
+using System.Reflection;
 using Google.ProtocolBuffers.Collections;
 using Google.ProtocolBuffers.Collections;
 
 
 namespace Google.ProtocolBuffers.Descriptors
 namespace Google.ProtocolBuffers.Descriptors
@@ -62,10 +63,7 @@ namespace Google.ProtocolBuffers.Descriptors
         private static IDictionary<FieldType, FieldMappingAttribute> MapFieldTypes()
         private static IDictionary<FieldType, FieldMappingAttribute> MapFieldTypes()
         {
         {
             var map = new Dictionary<FieldType, FieldMappingAttribute>();
             var map = new Dictionary<FieldType, FieldMappingAttribute>();
-            foreach (
-                System.Reflection.FieldInfo field in
-                    typeof (FieldType).GetFields(System.Reflection.BindingFlags.Static |
-                                                 System.Reflection.BindingFlags.Public))
+            foreach (FieldInfo field in typeof (FieldType).GetFields(BindingFlags.Static | BindingFlags.Public))
             {
             {
                 FieldType fieldType = (FieldType) field.GetValue(null);
                 FieldType fieldType = (FieldType) field.GetValue(null);
                 FieldMappingAttribute mapping =
                 FieldMappingAttribute mapping =

+ 4 - 1
src/ProtocolBuffers/DynamicMessage.cs

@@ -264,7 +264,10 @@ namespace Google.ProtocolBuffers
             get
             get
             {
             {
                 int size = memoizedSize;
                 int size = memoizedSize;
-                if (size != -1) return size;
+                if (size != -1)
+                {
+                    return size;
+                }
 
 
                 size = fields.SerializedSize;
                 size = fields.SerializedSize;
                 if (type.Options.MessageSetWireFormat)
                 if (type.Options.MessageSetWireFormat)

+ 10 - 9
src/ProtocolBuffers/EnumLite.cs

@@ -36,9 +36,6 @@
 
 
 using System;
 using System;
 using System.Collections.Generic;
 using System.Collections.Generic;
-using System.Globalization;
-using System.Reflection;
-using System.Text;
 
 
 namespace Google.ProtocolBuffers
 namespace Google.ProtocolBuffers
 {
 {
@@ -102,16 +99,18 @@ namespace Google.ProtocolBuffers
         {
         {
             items = new SortedList<int, IEnumLite>();
             items = new SortedList<int, IEnumLite>();
 #if SILVERLIGHT2
 #if SILVERLIGHT2
-            // Silverlight doesn't support Enum.GetValues
-            // TODO(jonskeet): Validate that this reflection is permitted, e.g. in Windows Phone 7
+    // Silverlight doesn't support Enum.GetValues
+    // TODO(jonskeet): Validate that this reflection is permitted, e.g. in Windows Phone 7
             foreach (FieldInfo fi in typeof (TEnum).GetFields(BindingFlags.Static | BindingFlags.Public))
             foreach (FieldInfo fi in typeof (TEnum).GetFields(BindingFlags.Static | BindingFlags.Public))
             {
             {
                 TEnum evalue = (TEnum) fi.GetValue(null);
                 TEnum evalue = (TEnum) fi.GetValue(null);
                 items.Add(Convert.ToInt32(evalue), new EnumValue(evalue));
                 items.Add(Convert.ToInt32(evalue), new EnumValue(evalue));
             }
             }
 #else
 #else
-      foreach (TEnum evalue in Enum.GetValues(typeof(TEnum)))
-        items.Add(Convert.ToInt32(evalue), new EnumValue(evalue));
+            foreach (TEnum evalue in Enum.GetValues(typeof (TEnum)))
+            {
+                items.Add(Convert.ToInt32(evalue), new EnumValue(evalue));
+            }
 #endif
 #endif
         }
         }
 
 
@@ -129,8 +128,10 @@ namespace Google.ProtocolBuffers
         public IEnumLite FindValueByName(string name)
         public IEnumLite FindValueByName(string name)
         {
         {
             IEnumLite val;
             IEnumLite val;
-            if(Enum.IsDefined(typeof(TEnum), name))
-                return items.TryGetValue((int)Enum.Parse(typeof(TEnum), name, false), out val) ? val : null;
+            if (Enum.IsDefined(typeof (TEnum), name))
+            {
+                return items.TryGetValue((int) Enum.Parse(typeof (TEnum), name, false), out val) ? val : null;
+            }
             return null;
             return null;
         }
         }
 
 

+ 35 - 8
src/ProtocolBuffers/ExtendableBuilderLite.cs

@@ -142,8 +142,10 @@ namespace Google.ProtocolBuffers
             int fieldNumber = WireFormat.GetTagFieldNumber(tag);
             int fieldNumber = WireFormat.GetTagFieldNumber(tag);
             IGeneratedExtensionLite extension = extensionRegistry[DefaultInstanceForType, fieldNumber];
             IGeneratedExtensionLite extension = extensionRegistry[DefaultInstanceForType, fieldNumber];
 
 
-            if (extension == null)//unknown field
+            if (extension == null) //unknown field
+            {
                 return input.SkipField();
                 return input.SkipField();
+            }
 
 
             IFieldDescriptorLite field = extension.Descriptor;
             IFieldDescriptorLite field = extension.Descriptor;
 
 
@@ -153,9 +155,9 @@ namespace Google.ProtocolBuffers
             {
             {
                 return input.SkipField();
                 return input.SkipField();
             }
             }
-            WireFormat.WireType expectedType = field.IsPacked 
-                ? WireFormat.WireType.LengthDelimited 
-                : WireFormat.GetWireType(field.FieldType);
+            WireFormat.WireType expectedType = field.IsPacked
+                                                   ? WireFormat.WireType.LengthDelimited
+                                                   : WireFormat.GetWireType(field.FieldType);
             if (wireType != expectedType)
             if (wireType != expectedType)
             {
             {
                 expectedType = WireFormat.GetWireType(field.FieldType);
                 expectedType = WireFormat.GetWireType(field.FieldType);
@@ -164,15 +166,20 @@ namespace Google.ProtocolBuffers
                     //Allowed as of 2.3, this is unpacked data for a packed array
                     //Allowed as of 2.3, this is unpacked data for a packed array
                 }
                 }
                 else if (field.IsRepeated && wireType == WireFormat.WireType.LengthDelimited &&
                 else if (field.IsRepeated && wireType == WireFormat.WireType.LengthDelimited &&
-                    (expectedType == WireFormat.WireType.Varint || expectedType == WireFormat.WireType.Fixed32 || expectedType == WireFormat.WireType.Fixed64))
+                         (expectedType == WireFormat.WireType.Varint || expectedType == WireFormat.WireType.Fixed32 ||
+                          expectedType == WireFormat.WireType.Fixed64))
                 {
                 {
                     //Allowed as of 2.3, this is packed data for an unpacked array
                     //Allowed as of 2.3, this is packed data for an unpacked array
                 }
                 }
                 else
                 else
+                {
                     return input.SkipField();
                     return input.SkipField();
+                }
             }
             }
             if (!field.IsRepeated && wireType != WireFormat.GetWireType(field.FieldType)) //invalid wire type
             if (!field.IsRepeated && wireType != WireFormat.GetWireType(field.FieldType)) //invalid wire type
+            {
                 return input.SkipField();
                 return input.SkipField();
+            }
 
 
             switch (field.FieldType)
             switch (field.FieldType)
             {
             {
@@ -185,22 +192,34 @@ namespace Google.ProtocolBuffers
                             IBuilderLite subBuilder = (message ?? extension.MessageDefaultInstance).WeakToBuilder();
                             IBuilderLite subBuilder = (message ?? extension.MessageDefaultInstance).WeakToBuilder();
 
 
                             if (field.FieldType == FieldType.Group)
                             if (field.FieldType == FieldType.Group)
+                            {
                                 input.ReadGroup(field.FieldNumber, subBuilder, extensionRegistry);
                                 input.ReadGroup(field.FieldNumber, subBuilder, extensionRegistry);
+                            }
                             else
                             else
+                            {
                                 input.ReadMessage(subBuilder, extensionRegistry);
                                 input.ReadMessage(subBuilder, extensionRegistry);
-                            
+                            }
+
                             extensions[field] = subBuilder.WeakBuild();
                             extensions[field] = subBuilder.WeakBuild();
                         }
                         }
                         else
                         else
                         {
                         {
                             List<IMessageLite> list = new List<IMessageLite>();
                             List<IMessageLite> list = new List<IMessageLite>();
                             if (field.FieldType == FieldType.Group)
                             if (field.FieldType == FieldType.Group)
-                                input.ReadGroupArray(tag, fieldName, list, extension.MessageDefaultInstance, extensionRegistry);
+                            {
+                                input.ReadGroupArray(tag, fieldName, list, extension.MessageDefaultInstance,
+                                                     extensionRegistry);
+                            }
                             else
                             else
-                                input.ReadMessageArray(tag, fieldName, list, extension.MessageDefaultInstance, extensionRegistry);
+                            {
+                                input.ReadMessageArray(tag, fieldName, list, extension.MessageDefaultInstance,
+                                                       extensionRegistry);
+                            }
 
 
                             foreach (IMessageLite m in list)
                             foreach (IMessageLite m in list)
+                            {
                                 extensions.AddRepeatedField(field, m);
                                 extensions.AddRepeatedField(field, m);
+                            }
                             return true;
                             return true;
                         }
                         }
                         break;
                         break;
@@ -212,7 +231,9 @@ namespace Google.ProtocolBuffers
                             object unknown;
                             object unknown;
                             IEnumLite value = null;
                             IEnumLite value = null;
                             if (input.ReadEnum(ref value, out unknown, field.EnumType))
                             if (input.ReadEnum(ref value, out unknown, field.EnumType))
+                            {
                                 extensions[field] = value;
                                 extensions[field] = value;
+                            }
                         }
                         }
                         else
                         else
                         {
                         {
@@ -221,7 +242,9 @@ namespace Google.ProtocolBuffers
                             input.ReadEnumArray(tag, fieldName, list, out unknown, field.EnumType);
                             input.ReadEnumArray(tag, fieldName, list, out unknown, field.EnumType);
 
 
                             foreach (IEnumLite en in list)
                             foreach (IEnumLite en in list)
+                            {
                                 extensions.AddRepeatedField(field, en);
                                 extensions.AddRepeatedField(field, en);
+                            }
                         }
                         }
                         break;
                         break;
                     }
                     }
@@ -231,14 +254,18 @@ namespace Google.ProtocolBuffers
                         {
                         {
                             object value = null;
                             object value = null;
                             if (input.ReadPrimitiveField(field.FieldType, ref value))
                             if (input.ReadPrimitiveField(field.FieldType, ref value))
+                            {
                                 extensions[field] = value;
                                 extensions[field] = value;
+                            }
                         }
                         }
                         else
                         else
                         {
                         {
                             List<object> list = new List<object>();
                             List<object> list = new List<object>();
                             input.ReadPrimitiveArray(field.FieldType, tag, fieldName, list);
                             input.ReadPrimitiveArray(field.FieldType, tag, fieldName, list);
                             foreach (object oval in list)
                             foreach (object oval in list)
+                            {
                                 extensions.AddRepeatedField(field, oval);
                                 extensions.AddRepeatedField(field, oval);
+                            }
                         }
                         }
                         break;
                         break;
                     }
                     }

+ 4 - 1
src/ProtocolBuffers/ExtendableMessageLite.cs

@@ -37,6 +37,7 @@
 using System;
 using System;
 using System.Collections;
 using System.Collections;
 using System.Collections.Generic;
 using System.Collections.Generic;
+using System.IO;
 using Google.ProtocolBuffers.Collections;
 using Google.ProtocolBuffers.Collections;
 
 
 namespace Google.ProtocolBuffers
 namespace Google.ProtocolBuffers
@@ -74,7 +75,7 @@ namespace Google.ProtocolBuffers
         /// <summary>
         /// <summary>
         /// writes the extensions to the text stream
         /// writes the extensions to the text stream
         /// </summary>
         /// </summary>
-        public override void PrintTo(System.IO.TextWriter writer)
+        public override void PrintTo(TextWriter writer)
         {
         {
             foreach (KeyValuePair<IFieldDescriptorLite, object> entry in extensions.AllFields)
             foreach (KeyValuePair<IFieldDescriptorLite, object> entry in extensions.AllFields)
             {
             {
@@ -82,7 +83,9 @@ namespace Google.ProtocolBuffers
                 if (entry.Key.IsRepeated)
                 if (entry.Key.IsRepeated)
                 {
                 {
                     foreach (object o in ((IEnumerable) entry.Value))
                     foreach (object o in ((IEnumerable) entry.Value))
+                    {
                         PrintField(fn, true, o, writer);
                         PrintField(fn, true, o, writer);
+                    }
                 }
                 }
                 else
                 else
                 {
                 {

+ 5 - 1
src/ProtocolBuffers/ExtensionRegistry.cs

@@ -34,9 +34,9 @@
 
 
 #endregion
 #endregion
 
 
+using System;
 using System.Collections.Generic;
 using System.Collections.Generic;
 using Google.ProtocolBuffers.Descriptors;
 using Google.ProtocolBuffers.Descriptors;
-using System;
 
 
 namespace Google.ProtocolBuffers
 namespace Google.ProtocolBuffers
 {
 {
@@ -107,7 +107,9 @@ namespace Google.ProtocolBuffers
                 foreach (IGeneratedExtensionLite ext in extensionsByNumber.Values)
                 foreach (IGeneratedExtensionLite ext in extensionsByNumber.Values)
                 {
                 {
                     if (StringComparer.Ordinal.Equals(ext.Descriptor.FullName, fullName))
                     if (StringComparer.Ordinal.Equals(ext.Descriptor.FullName, fullName))
+                    {
                         return ext as ExtensionInfo;
                         return ext as ExtensionInfo;
+                    }
                 }
                 }
                 return null;
                 return null;
             }
             }
@@ -204,7 +206,9 @@ namespace Google.ProtocolBuffers
                 // up by type name.
                 // up by type name.
                 Dictionary<string, IGeneratedExtensionLite> map;
                 Dictionary<string, IGeneratedExtensionLite> map;
                 if (extensionsByName.TryGetValue(liteExtension.ContainingType, out map))
                 if (extensionsByName.TryGetValue(liteExtension.ContainingType, out map))
+                {
                     map[field.MessageType.FullName] = extension;
                     map[field.MessageType.FullName] = extension;
+                }
             }
             }
         }
         }
     }
     }

+ 18 - 8
src/ProtocolBuffers/ExtensionRegistryLite.cs

@@ -34,9 +34,8 @@
 
 
 #endregion
 #endregion
 
 
-using System.Collections.Generic;
 using System;
 using System;
-using Google.ProtocolBuffers.Descriptors;
+using System.Collections.Generic;
 
 
 namespace Google.ProtocolBuffers
 namespace Google.ProtocolBuffers
 {
 {
@@ -93,8 +92,13 @@ namespace Google.ProtocolBuffers
     /// </remarks>
     /// </remarks>
     public sealed partial class ExtensionRegistry
     public sealed partial class ExtensionRegistry
     {
     {
-        class ExtensionByNameMap : Dictionary<object, Dictionary<string, IGeneratedExtensionLite>> { }
-        class ExtensionByIdMap : Dictionary<ExtensionIntPair, IGeneratedExtensionLite> { }
+        private class ExtensionByNameMap : Dictionary<object, Dictionary<string, IGeneratedExtensionLite>>
+        {
+        }
+
+        private class ExtensionByIdMap : Dictionary<ExtensionIntPair, IGeneratedExtensionLite>
+        {
+        }
 
 
         private static readonly ExtensionRegistry empty = new ExtensionRegistry(
         private static readonly ExtensionRegistry empty = new ExtensionRegistry(
             new ExtensionByNameMap(),
             new ExtensionByNameMap(),
@@ -149,14 +153,18 @@ namespace Google.ProtocolBuffers
         }
         }
 
 
         public IGeneratedExtensionLite FindByName(IMessageLite defaultInstanceOfType, string fieldName)
         public IGeneratedExtensionLite FindByName(IMessageLite defaultInstanceOfType, string fieldName)
-        { return FindExtensionByName(defaultInstanceOfType, fieldName); }
+        {
+            return FindExtensionByName(defaultInstanceOfType, fieldName);
+        }
 
 
-        IGeneratedExtensionLite FindExtensionByName(object forwhat, string fieldName)
+        private IGeneratedExtensionLite FindExtensionByName(object forwhat, string fieldName)
         {
         {
             IGeneratedExtensionLite extension = null;
             IGeneratedExtensionLite extension = null;
             Dictionary<string, IGeneratedExtensionLite> map;
             Dictionary<string, IGeneratedExtensionLite> map;
             if (extensionsByName.TryGetValue(forwhat, out map) && map.TryGetValue(fieldName, out extension))
             if (extensionsByName.TryGetValue(forwhat, out map) && map.TryGetValue(fieldName, out extension))
+            {
                 return extension;
                 return extension;
+            }
             return null;
             return null;
         }
         }
 
 
@@ -173,7 +181,9 @@ namespace Google.ProtocolBuffers
 
 
             Dictionary<string, IGeneratedExtensionLite> map;
             Dictionary<string, IGeneratedExtensionLite> map;
             if (!extensionsByName.TryGetValue(extension.ContainingType, out map))
             if (!extensionsByName.TryGetValue(extension.ContainingType, out map))
+            {
                 extensionsByName.Add(extension.ContainingType, map = new Dictionary<string, IGeneratedExtensionLite>());
                 extensionsByName.Add(extension.ContainingType, map = new Dictionary<string, IGeneratedExtensionLite>());
+            }
             map[extension.Descriptor.Name] = extension;
             map[extension.Descriptor.Name] = extension;
             map[extension.Descriptor.FullName] = extension;
             map[extension.Descriptor.FullName] = extension;
         }
         }
@@ -195,7 +205,7 @@ namespace Google.ProtocolBuffers
 
 
             public override int GetHashCode()
             public override int GetHashCode()
             {
             {
-                return msgType.GetHashCode() * ((1 << 16) - 1) + number;
+                return msgType.GetHashCode()*((1 << 16) - 1) + number;
             }
             }
 
 
             public override bool Equals(object obj)
             public override bool Equals(object obj)
@@ -204,7 +214,7 @@ namespace Google.ProtocolBuffers
                 {
                 {
                     return false;
                     return false;
                 }
                 }
-                return Equals((ExtensionIntPair)obj);
+                return Equals((ExtensionIntPair) obj);
             }
             }
 
 
             public bool Equals(ExtensionIntPair other)
             public bool Equals(ExtensionIntPair other)

+ 4 - 1
src/ProtocolBuffers/FieldAccess/SinglePrimitiveAccessor.cs

@@ -62,7 +62,10 @@ namespace Google.ProtocolBuffers.FieldAccess
         {
         {
             PropertyInfo messageProperty = typeof (TMessage).GetProperty(name);
             PropertyInfo messageProperty = typeof (TMessage).GetProperty(name);
             PropertyInfo builderProperty = typeof (TBuilder).GetProperty(name);
             PropertyInfo builderProperty = typeof (TBuilder).GetProperty(name);
-            if (builderProperty == null) builderProperty = typeof (TBuilder).GetProperty(name);
+            if (builderProperty == null)
+            {
+                builderProperty = typeof (TBuilder).GetProperty(name);
+            }
             PropertyInfo hasProperty = typeof (TMessage).GetProperty("Has" + name);
             PropertyInfo hasProperty = typeof (TMessage).GetProperty("Has" + name);
             MethodInfo clearMethod = typeof (TBuilder).GetMethod("Clear" + name, EmptyTypes);
             MethodInfo clearMethod = typeof (TBuilder).GetMethod("Clear" + name, EmptyTypes);
             if (messageProperty == null || builderProperty == null || hasProperty == null || clearMethod == null)
             if (messageProperty == null || builderProperty == null || hasProperty == null || clearMethod == null)

+ 22 - 35
src/ProtocolBuffers/FieldSet.cs

@@ -144,17 +144,19 @@ namespace Google.ProtocolBuffers
         }
         }
 
 
 #if !LITE
 #if !LITE
-    /// <summary>
-    /// Force coercion to full descriptor dictionary.
-    /// </summary>
-        internal IDictionary<Descriptors.FieldDescriptor, object> AllFieldDescriptors
+        /// <summary>
+        /// Force coercion to full descriptor dictionary.
+        /// </summary>
+        internal IDictionary<FieldDescriptor, object> AllFieldDescriptors
         {
         {
             get
             get
             {
             {
-                SortedList<Descriptors.FieldDescriptor, object> copy =
-                    new SortedList<Google.ProtocolBuffers.Descriptors.FieldDescriptor, object>();
+                SortedList<FieldDescriptor, object> copy =
+                    new SortedList<FieldDescriptor, object>();
                 foreach (KeyValuePair<IFieldDescriptorLite, object> fd in fields)
                 foreach (KeyValuePair<IFieldDescriptorLite, object> fd in fields)
-                    copy.Add((Descriptors.FieldDescriptor) fd.Key, fd.Value);
+                {
+                    copy.Add((FieldDescriptor) fd.Key, fd.Value);
+                }
                 return Dictionaries.AsReadOnly(copy);
                 return Dictionaries.AsReadOnly(copy);
             }
             }
         }
         }
@@ -390,13 +392,15 @@ namespace Google.ProtocolBuffers
         }
         }
 
 
 #if !LITE
 #if !LITE
-    /// <summary>
-    /// See <see cref="IBuilder{TMessage, TBuilder}.MergeFrom(IMessageLite)" />
-    /// </summary>
+        /// <summary>
+        /// See <see cref="IBuilder{TMessage, TBuilder}.MergeFrom(IMessageLite)" />
+        /// </summary>
         public void MergeFrom(IMessage other)
         public void MergeFrom(IMessage other)
         {
         {
-            foreach (KeyValuePair<Descriptors.FieldDescriptor, object> fd in other.AllFields)
+            foreach (KeyValuePair<FieldDescriptor, object> fd in other.AllFields)
+            {
                 MergeField(fd.Key, fd.Value);
                 MergeField(fd.Key, fd.Value);
+            }
         }
         }
 #endif
 #endif
 
 
@@ -470,7 +474,7 @@ namespace Google.ProtocolBuffers
         {
         {
             if (field.IsExtension && field.MessageSetWireFormat)
             if (field.IsExtension && field.MessageSetWireFormat)
             {
             {
-                output.WriteMessageSetExtension(field.FieldNumber, field.Name, (IMessageLite)value);
+                output.WriteMessageSetExtension(field.FieldNumber, field.Name, (IMessageLite) value);
             }
             }
             else
             else
             {
             {
@@ -478,30 +482,13 @@ namespace Google.ProtocolBuffers
                 {
                 {
                     IEnumerable valueList = (IEnumerable) value;
                     IEnumerable valueList = (IEnumerable) value;
                     if (field.IsPacked)
                     if (field.IsPacked)
+                    {
                         output.WritePackedArray(field.FieldType, field.FieldNumber, field.Name, valueList);
                         output.WritePackedArray(field.FieldType, field.FieldNumber, field.Name, valueList);
-                    //{
-                    //    output.WriteTag(field.FieldNumber, WireFormat.WireType.LengthDelimited);
-                    //    // Compute the total data size so the length can be written.
-                    //    int dataSize = 0;
-                    //    foreach (object element in valueList)
-                    //    {
-                    //        dataSize += CodedOutputStream.ComputeFieldSizeNoTag(field.FieldType, element);
-                    //    }
-                    //    output.WriteRawVarint32((uint) dataSize);
-                    //    // Write the data itself, without any tags.
-                    //    foreach (object element in valueList)
-                    //    {
-                    //        output.WriteFieldNoTag(field.FieldType, element);
-                    //    }
-                    //}
+                    }
                     else
                     else
+                    {
                         output.WriteArray(field.FieldType, field.FieldNumber, field.Name, valueList);
                         output.WriteArray(field.FieldType, field.FieldNumber, field.Name, valueList);
-                    //{
-                    //    foreach (object element in valueList)
-                    //    {
-                    //        output.WriteField(field.FieldType, field.FieldNumber, field.Name, element);
-                    //    }
-                    //}
+                    }
                 }
                 }
                 else
                 else
                 {
                 {
@@ -629,8 +616,8 @@ namespace Google.ProtocolBuffers
                 // field name and other useful info in the exception.
                 // field name and other useful info in the exception.
                 string message = "Wrong object type used with protocol message reflection.";
                 string message = "Wrong object type used with protocol message reflection.";
 #if !LITE
 #if !LITE
-                Google.ProtocolBuffers.Descriptors.FieldDescriptor fieldinfo =
-                    field as Google.ProtocolBuffers.Descriptors.FieldDescriptor;
+                FieldDescriptor fieldinfo =
+                    field as FieldDescriptor;
                 if (fieldinfo != null)
                 if (fieldinfo != null)
                 {
                 {
                     message += "Message type \"" + fieldinfo.ContainingType.FullName;
                     message += "Message type \"" + fieldinfo.ContainingType.FullName;

+ 0 - 1
src/ProtocolBuffers/GeneratedBuilderLite.cs

@@ -35,7 +35,6 @@
 #endregion
 #endregion
 
 
 using System;
 using System;
-using System.Collections;
 using System.Collections.Generic;
 using System.Collections.Generic;
 
 
 namespace Google.ProtocolBuffers
 namespace Google.ProtocolBuffers

+ 3 - 3
src/ProtocolBuffers/GeneratedExtensionLite.cs

@@ -34,10 +34,8 @@
 
 
 #endregion
 #endregion
 
 
-using System;
 using System.Collections;
 using System.Collections;
 using System.Collections.Generic;
 using System.Collections.Generic;
-using Google.ProtocolBuffers.Collections;
 using Google.ProtocolBuffers.Descriptors;
 using Google.ProtocolBuffers.Descriptors;
 
 
 namespace Google.ProtocolBuffers
 namespace Google.ProtocolBuffers
@@ -76,12 +74,14 @@ namespace Google.ProtocolBuffers
 
 
         public string Name
         public string Name
         {
         {
-            get 
+            get
             {
             {
                 string name = fullName;
                 string name = fullName;
                 int offset = name.LastIndexOf('.');
                 int offset = name.LastIndexOf('.');
                 if (offset >= 0)
                 if (offset >= 0)
+                {
                     name = name.Substring(offset);
                     name = name.Substring(offset);
+                }
                 return name;
                 return name;
             }
             }
         }
         }

+ 23 - 13
src/ProtocolBuffers/GeneratedMessage.cs

@@ -35,11 +35,14 @@
 #endregion
 #endregion
 
 
 using System;
 using System;
+using System.Collections;
 using System.Collections.Generic;
 using System.Collections.Generic;
+using System.IO;
+using System.Xml;
 using Google.ProtocolBuffers.Collections;
 using Google.ProtocolBuffers.Collections;
 using Google.ProtocolBuffers.Descriptors;
 using Google.ProtocolBuffers.Descriptors;
 using Google.ProtocolBuffers.FieldAccess;
 using Google.ProtocolBuffers.FieldAccess;
-using System.Collections;
+using Google.ProtocolBuffers.Serialization;
 
 
 namespace Google.ProtocolBuffers
 namespace Google.ProtocolBuffers
 {
 {
@@ -178,30 +181,37 @@ namespace Google.ProtocolBuffers
 
 
         public static TMessage ParseFromJson(string jsonText)
         public static TMessage ParseFromJson(string jsonText)
         {
         {
-            return Serialization.JsonFormatReader.CreateInstance(jsonText)
+            return JsonFormatReader.CreateInstance(jsonText)
                 .Merge(new TBuilder())
                 .Merge(new TBuilder())
                 .Build();
                 .Build();
         }
         }
 
 
-        public static TMessage ParseFromJson(System.IO.TextReader reader)
-        { return ParseFromJson(reader, ExtensionRegistry.Empty); }
+        public static TMessage ParseFromJson(TextReader reader)
+        {
+            return ParseFromJson(reader, ExtensionRegistry.Empty);
+        }
 
 
-        public static TMessage ParseFromJson(System.IO.TextReader reader, ExtensionRegistry extensionRegistry)
+        public static TMessage ParseFromJson(TextReader reader, ExtensionRegistry extensionRegistry)
         {
         {
-            return Serialization.JsonFormatReader.CreateInstance(reader)
+            return JsonFormatReader.CreateInstance(reader)
                 .Merge(new TBuilder(), extensionRegistry)
                 .Merge(new TBuilder(), extensionRegistry)
                 .Build();
                 .Build();
         }
         }
 
 
-        public static TMessage ParseFromXml(System.Xml.XmlReader reader)
-        { return ParseFromXml(Serialization.XmlFormatReader.DefaultRootElementName, reader, ExtensionRegistry.Empty); }
-        
-        public static TMessage ParseFromXml(string rootElementName, System.Xml.XmlReader reader)
-        { return ParseFromXml(rootElementName, reader, ExtensionRegistry.Empty); }
+        public static TMessage ParseFromXml(XmlReader reader)
+        {
+            return ParseFromXml(XmlFormatReader.DefaultRootElementName, reader, ExtensionRegistry.Empty);
+        }
+
+        public static TMessage ParseFromXml(string rootElementName, XmlReader reader)
+        {
+            return ParseFromXml(rootElementName, reader, ExtensionRegistry.Empty);
+        }
 
 
-        public static TMessage ParseFromXml(string rootElementName, System.Xml.XmlReader reader, ExtensionRegistry extensionRegistry)
+        public static TMessage ParseFromXml(string rootElementName, XmlReader reader,
+                                            ExtensionRegistry extensionRegistry)
         {
         {
-            return Serialization.XmlFormatReader.CreateInstance(reader)
+            return XmlFormatReader.CreateInstance(reader)
                 .Merge(rootElementName, new TBuilder(), extensionRegistry)
                 .Merge(rootElementName, new TBuilder(), extensionRegistry)
                 .Build();
                 .Build();
         }
         }

+ 17 - 8
src/ProtocolBuffers/GeneratedMessageLite.cs

@@ -36,9 +36,9 @@
 
 
 using System;
 using System;
 using System.Collections.Generic;
 using System.Collections.Generic;
-using System.Collections;
 using System.Globalization;
 using System.Globalization;
-using Google.ProtocolBuffers.Descriptors;
+using System.IO;
+using System.Text;
 
 
 namespace Google.ProtocolBuffers
 namespace Google.ProtocolBuffers
 {
 {
@@ -55,7 +55,7 @@ namespace Google.ProtocolBuffers
 
 
         public override sealed string ToString()
         public override sealed string ToString()
         {
         {
-            using (System.IO.StringWriter wtr = new System.IO.StringWriter())
+            using (StringWriter wtr = new StringWriter())
             {
             {
                 PrintTo(wtr);
                 PrintTo(wtr);
                 return wtr.ToString();
                 return wtr.ToString();
@@ -65,18 +65,23 @@ namespace Google.ProtocolBuffers
         /// <summary>
         /// <summary>
         /// PrintTo() helper methods for Lite Runtime
         /// PrintTo() helper methods for Lite Runtime
         /// </summary>
         /// </summary>
-        protected static void PrintField<T>(string name, IList<T> value, System.IO.TextWriter writer)
+        protected static void PrintField<T>(string name, IList<T> value, TextWriter writer)
         {
         {
             foreach (T item in value)
             foreach (T item in value)
+            {
                 PrintField(name, true, (object) item, writer);
                 PrintField(name, true, (object) item, writer);
+            }
         }
         }
 
 
         /// <summary>
         /// <summary>
         /// PrintTo() helper methods for Lite Runtime
         /// PrintTo() helper methods for Lite Runtime
         /// </summary>
         /// </summary>
-        protected static void PrintField(string name, bool hasValue, object value, System.IO.TextWriter writer)
+        protected static void PrintField(string name, bool hasValue, object value, TextWriter writer)
         {
         {
-            if (!hasValue) return;
+            if (!hasValue)
+            {
+                return;
+            }
             if (value is IMessageLite)
             if (value is IMessageLite)
             {
             {
                 writer.WriteLine("{0} {{", name);
                 writer.WriteLine("{0} {{", name);
@@ -87,9 +92,13 @@ namespace Google.ProtocolBuffers
             {
             {
                 writer.Write("{0}: \"", name);
                 writer.Write("{0}: \"", name);
                 if (value is String)
                 if (value is String)
-                    EscapeBytes(System.Text.Encoding.UTF8.GetBytes((string) value), writer);
+                {
+                    EscapeBytes(Encoding.UTF8.GetBytes((string) value), writer);
+                }
                 else
                 else
+                {
                     EscapeBytes(((ByteString) value), writer);
                     EscapeBytes(((ByteString) value), writer);
+                }
                 writer.WriteLine("\"");
                 writer.WriteLine("\"");
             }
             }
             else if (value is bool)
             else if (value is bool)
@@ -116,7 +125,7 @@ namespace Google.ProtocolBuffers
         /// using 3-digit octal sequences.
         /// using 3-digit octal sequences.
         /// The returned value is guaranteed to be entirely ASCII.
         /// The returned value is guaranteed to be entirely ASCII.
         /// </summary>
         /// </summary>
-        private static void EscapeBytes(IEnumerable<byte> input, System.IO.TextWriter writer)
+        private static void EscapeBytes(IEnumerable<byte> input, TextWriter writer)
         {
         {
             foreach (byte b in input)
             foreach (byte b in input)
             {
             {

+ 1 - 1
src/ProtocolBuffers/GeneratedRepeatExtension.cs

@@ -35,9 +35,9 @@
 #endregion
 #endregion
 
 
 using System;
 using System;
+using System.Collections;
 using System.Collections.Generic;
 using System.Collections.Generic;
 using Google.ProtocolBuffers.Descriptors;
 using Google.ProtocolBuffers.Descriptors;
-using System.Collections;
 
 
 namespace Google.ProtocolBuffers
 namespace Google.ProtocolBuffers
 {
 {

+ 0 - 2
src/ProtocolBuffers/IBuilderLite.cs

@@ -34,8 +34,6 @@
 
 
 #endregion
 #endregion
 
 
-using System;
-using System.Collections.Generic;
 using System.IO;
 using System.IO;
 
 
 namespace Google.ProtocolBuffers
 namespace Google.ProtocolBuffers

+ 7 - 4
src/ProtocolBuffers/ICodedInputStream.cs

@@ -115,7 +115,7 @@ namespace Google.ProtocolBuffers
         /// Reads a group field value from the stream.
         /// Reads a group field value from the stream.
         /// </summary>    
         /// </summary>    
         void ReadGroup(int fieldNumber, IBuilderLite builder,
         void ReadGroup(int fieldNumber, IBuilderLite builder,
-                                       ExtensionRegistry extensionRegistry);
+                       ExtensionRegistry extensionRegistry);
 
 
         /// <summary>
         /// <summary>
         /// Reads a group field value from the stream and merges it into the given
         /// Reads a group field value from the stream and merges it into the given
@@ -187,7 +187,8 @@ namespace Google.ProtocolBuffers
         /// read a packed array.
         /// read a packed array.
         /// </summary>
         /// </summary>
         [CLSCompliant(false)]
         [CLSCompliant(false)]
-        void ReadEnumArray(uint fieldTag, string fieldName, ICollection<IEnumLite> list, out ICollection<object> unknown, IEnumLiteMap mapping);
+        void ReadEnumArray(uint fieldTag, string fieldName, ICollection<IEnumLite> list, out ICollection<object> unknown,
+                           IEnumLiteMap mapping);
 
 
         /// <summary>
         /// <summary>
         /// Reads an array of primitive values into the list, if the wire-type of fieldTag is length-prefixed, it will
         /// Reads an array of primitive values into the list, if the wire-type of fieldTag is length-prefixed, it will
@@ -202,13 +203,15 @@ namespace Google.ProtocolBuffers
         /// the most derived type, it is only the type specifier for the collection.
         /// the most derived type, it is only the type specifier for the collection.
         /// </summary>
         /// </summary>
         [CLSCompliant(false)]
         [CLSCompliant(false)]
-        void ReadMessageArray<T>(uint fieldTag, string fieldName, ICollection<T> list, T messageType, ExtensionRegistry registry) where T : IMessageLite;
+        void ReadMessageArray<T>(uint fieldTag, string fieldName, ICollection<T> list, T messageType,
+                                 ExtensionRegistry registry) where T : IMessageLite;
 
 
         /// <summary>
         /// <summary>
         /// Reads a set of messages using the <paramref name="messageType"/> as a template.
         /// Reads a set of messages using the <paramref name="messageType"/> as a template.
         /// </summary>
         /// </summary>
         [CLSCompliant(false)]
         [CLSCompliant(false)]
-        void ReadGroupArray<T>(uint fieldTag, string fieldName, ICollection<T> list, T messageType, ExtensionRegistry registry) where T : IMessageLite;
+        void ReadGroupArray<T>(uint fieldTag, string fieldName, ICollection<T> list, T messageType,
+                               ExtensionRegistry registry) where T : IMessageLite;
 
 
         /// <summary>
         /// <summary>
         /// Reads a field of any primitive type. Enums, groups and embedded
         /// Reads a field of any primitive type. Enums, groups and embedded

+ 27 - 19
src/ProtocolBuffers/ICodedOutputStream.cs

@@ -35,6 +35,7 @@
 #endregion
 #endregion
 
 
 using System;
 using System;
+using System.Collections;
 using System.Collections.Generic;
 using System.Collections.Generic;
 using Google.ProtocolBuffers.Descriptors;
 using Google.ProtocolBuffers.Descriptors;
 
 
@@ -49,7 +50,9 @@ namespace Google.ProtocolBuffers
 
 
         [Obsolete]
         [Obsolete]
         void WriteUnknownGroup(int fieldNumber, IMessageLite value);
         void WriteUnknownGroup(int fieldNumber, IMessageLite value);
+
         void WriteUnknownBytes(int fieldNumber, ByteString value);
         void WriteUnknownBytes(int fieldNumber, ByteString value);
+
         [CLSCompliant(false)]
         [CLSCompliant(false)]
         void WriteUnknownField(int fieldNumber, WireFormat.WireType wireType, ulong value);
         void WriteUnknownField(int fieldNumber, WireFormat.WireType wireType, ulong value);
 
 
@@ -115,6 +118,7 @@ namespace Google.ProtocolBuffers
         /// Writes a message field value, including tag, to the stream.
         /// Writes a message field value, including tag, to the stream.
         /// </summary>
         /// </summary>
         void WriteMessage(int fieldNumber, string fieldName, IMessageLite value);
         void WriteMessage(int fieldNumber, string fieldName, IMessageLite value);
+
         /// <summary>
         /// <summary>
         /// Writes a byte array field value, including tag, to the stream.
         /// Writes a byte array field value, including tag, to the stream.
         /// </summary>
         /// </summary>
@@ -130,67 +134,71 @@ namespace Google.ProtocolBuffers
         /// Writes an enum field value, including tag, to the stream.
         /// Writes an enum field value, including tag, to the stream.
         /// </summary>
         /// </summary>
         void WriteEnum(int fieldNumber, string fieldName, int value, object rawValue);
         void WriteEnum(int fieldNumber, string fieldName, int value, object rawValue);
+
         /// <summary>
         /// <summary>
         /// Writes a fixed 32-bit field value, including tag, to the stream.
         /// Writes a fixed 32-bit field value, including tag, to the stream.
         /// </summary>
         /// </summary>
         void WriteSFixed32(int fieldNumber, string fieldName, int value);
         void WriteSFixed32(int fieldNumber, string fieldName, int value);
+
         /// <summary>
         /// <summary>
         /// Writes a signed fixed 64-bit field value, including tag, to the stream.
         /// Writes a signed fixed 64-bit field value, including tag, to the stream.
         /// </summary>
         /// </summary>
         void WriteSFixed64(int fieldNumber, string fieldName, long value);
         void WriteSFixed64(int fieldNumber, string fieldName, long value);
+
         /// <summary>
         /// <summary>
         /// Writes a signed 32-bit field value, including tag, to the stream.
         /// Writes a signed 32-bit field value, including tag, to the stream.
         /// </summary>
         /// </summary>
         void WriteSInt32(int fieldNumber, string fieldName, int value);
         void WriteSInt32(int fieldNumber, string fieldName, int value);
+
         /// <summary>
         /// <summary>
         /// Writes a signed 64-bit field value, including tag, to the stream.
         /// Writes a signed 64-bit field value, including tag, to the stream.
         /// </summary>
         /// </summary>
         void WriteSInt64(int fieldNumber, string fieldName, long value);
         void WriteSInt64(int fieldNumber, string fieldName, long value);
 
 
-        void WriteArray(FieldType fieldType, int fieldNumber, string fieldName, System.Collections.IEnumerable list);
+        void WriteArray(FieldType fieldType, int fieldNumber, string fieldName, IEnumerable list);
 
 
         void WriteGroupArray<T>(int fieldNumber, string fieldName, IEnumerable<T> list)
         void WriteGroupArray<T>(int fieldNumber, string fieldName, IEnumerable<T> list)
             where T : IMessageLite;
             where T : IMessageLite;
-            
+
         void WriteMessageArray<T>(int fieldNumber, string fieldName, IEnumerable<T> list)
         void WriteMessageArray<T>(int fieldNumber, string fieldName, IEnumerable<T> list)
             where T : IMessageLite;
             where T : IMessageLite;
-            
+
         void WriteStringArray(int fieldNumber, string fieldName, IEnumerable<string> list);
         void WriteStringArray(int fieldNumber, string fieldName, IEnumerable<string> list);
-            
+
         void WriteBytesArray(int fieldNumber, string fieldName, IEnumerable<ByteString> list);
         void WriteBytesArray(int fieldNumber, string fieldName, IEnumerable<ByteString> list);
-                    
+
         void WriteBoolArray(int fieldNumber, string fieldName, IEnumerable<bool> list);
         void WriteBoolArray(int fieldNumber, string fieldName, IEnumerable<bool> list);
-                    
+
         void WriteInt32Array(int fieldNumber, string fieldName, IEnumerable<int> list);
         void WriteInt32Array(int fieldNumber, string fieldName, IEnumerable<int> list);
-            
+
         void WriteSInt32Array(int fieldNumber, string fieldName, IEnumerable<int> list);
         void WriteSInt32Array(int fieldNumber, string fieldName, IEnumerable<int> list);
-            
+
         void WriteUInt32Array(int fieldNumber, string fieldName, IEnumerable<uint> list);
         void WriteUInt32Array(int fieldNumber, string fieldName, IEnumerable<uint> list);
-            
+
         void WriteFixed32Array(int fieldNumber, string fieldName, IEnumerable<uint> list);
         void WriteFixed32Array(int fieldNumber, string fieldName, IEnumerable<uint> list);
-            
+
         void WriteSFixed32Array(int fieldNumber, string fieldName, IEnumerable<int> list);
         void WriteSFixed32Array(int fieldNumber, string fieldName, IEnumerable<int> list);
-                    
+
         void WriteInt64Array(int fieldNumber, string fieldName, IEnumerable<long> list);
         void WriteInt64Array(int fieldNumber, string fieldName, IEnumerable<long> list);
-            
+
         void WriteSInt64Array(int fieldNumber, string fieldName, IEnumerable<long> list);
         void WriteSInt64Array(int fieldNumber, string fieldName, IEnumerable<long> list);
-            
+
         void WriteUInt64Array(int fieldNumber, string fieldName, IEnumerable<ulong> list);
         void WriteUInt64Array(int fieldNumber, string fieldName, IEnumerable<ulong> list);
-            
+
         void WriteFixed64Array(int fieldNumber, string fieldName, IEnumerable<ulong> list);
         void WriteFixed64Array(int fieldNumber, string fieldName, IEnumerable<ulong> list);
-            
+
         void WriteSFixed64Array(int fieldNumber, string fieldName, IEnumerable<long> list);
         void WriteSFixed64Array(int fieldNumber, string fieldName, IEnumerable<long> list);
 
 
         void WriteDoubleArray(int fieldNumber, string fieldName, IEnumerable<double> list);
         void WriteDoubleArray(int fieldNumber, string fieldName, IEnumerable<double> list);
-            
+
         void WriteFloatArray(int fieldNumber, string fieldName, IEnumerable<float> list);
         void WriteFloatArray(int fieldNumber, string fieldName, IEnumerable<float> list);
 
 
         [CLSCompliant(false)]
         [CLSCompliant(false)]
-        void WriteEnumArray<T>(int fieldNumber, string fieldName, IEnumerable<T> list) 
+        void WriteEnumArray<T>(int fieldNumber, string fieldName, IEnumerable<T> list)
             where T : struct, IComparable, IFormattable, IConvertible;
             where T : struct, IComparable, IFormattable, IConvertible;
 
 
-        void WritePackedArray(FieldType fieldType, int fieldNumber, string fieldName, System.Collections.IEnumerable list);
-        
+        void WritePackedArray(FieldType fieldType, int fieldNumber, string fieldName, IEnumerable list);
+
         void WritePackedBoolArray(int fieldNumber, string fieldName, int calculatedSize, IEnumerable<bool> list);
         void WritePackedBoolArray(int fieldNumber, string fieldName, int calculatedSize, IEnumerable<bool> list);
 
 
         void WritePackedInt32Array(int fieldNumber, string fieldName, int calculatedSize, IEnumerable<int> list);
         void WritePackedInt32Array(int fieldNumber, string fieldName, int calculatedSize, IEnumerable<int> list);

+ 0 - 2
src/ProtocolBuffers/IMessageLite.cs

@@ -34,8 +34,6 @@
 
 
 #endregion
 #endregion
 
 
-using System;
-using System.Collections.Generic;
 using System.IO;
 using System.IO;
 
 
 namespace Google.ProtocolBuffers
 namespace Google.ProtocolBuffers

+ 0 - 2
src/ProtocolBuffers/IRpcDispatch.cs

@@ -34,8 +34,6 @@
 
 
 #endregion
 #endregion
 
 
-using System;
-
 namespace Google.ProtocolBuffers
 namespace Google.ProtocolBuffers
 {
 {
     /// <summary>
     /// <summary>

+ 5 - 1
src/ProtocolBuffers/MessageStreamIterator.cs

@@ -35,8 +35,8 @@
 #endregion
 #endregion
 
 
 using System;
 using System;
-using System.Collections.Generic;
 using System.Collections;
 using System.Collections;
+using System.Collections.Generic;
 using System.IO;
 using System.IO;
 using System.Reflection;
 using System.Reflection;
 
 
@@ -223,9 +223,13 @@ namespace Google.ProtocolBuffers
                 while (input.ReadTag(out tag, out name))
                 while (input.ReadTag(out tag, out name))
                 {
                 {
                     if ((tag == 0 && name == "item") || (tag == ExpectedTag))
                     if ((tag == 0 && name == "item") || (tag == ExpectedTag))
+                    {
                         yield return messageReader(input, extensionRegistry);
                         yield return messageReader(input, extensionRegistry);
+                    }
                     else
                     else
+                    {
                         throw InvalidProtocolBufferException.InvalidMessageStreamTag();
                         throw InvalidProtocolBufferException.InvalidMessageStreamTag();
+                    }
 
 
                     input.ResetSizeCounter();
                     input.ResetSizeCounter();
                 }
                 }

+ 1 - 1
src/ProtocolBuffers/NameHelpers.cs

@@ -34,8 +34,8 @@
 
 
 #endregion
 #endregion
 
 
-using System.Text;
 using System.Globalization;
 using System.Globalization;
+using System.Text;
 
 
 namespace Google.ProtocolBuffers
 namespace Google.ProtocolBuffers
 {
 {

+ 216 - 62
src/ProtocolBuffers/Serialization/AbstractReader.cs

@@ -12,19 +12,22 @@ namespace Google.ProtocolBuffers.Serialization
     /// </summary>
     /// </summary>
     public abstract class AbstractReader : ICodedInputStream
     public abstract class AbstractReader : ICodedInputStream
     {
     {
-        const int MaxDepth = CodedInputStream.DefaultRecursionLimit;
+        private const int MaxDepth = CodedInputStream.DefaultRecursionLimit;
         protected int Depth;
         protected int Depth;
 
 
         /// <summary>
         /// <summary>
         /// Merges the contents of stream into the provided message builder
         /// Merges the contents of stream into the provided message builder
         /// </summary>
         /// </summary>
         public TBuilder Merge<TBuilder>(TBuilder builder) where TBuilder : IBuilderLite
         public TBuilder Merge<TBuilder>(TBuilder builder) where TBuilder : IBuilderLite
-        { return Merge(builder, ExtensionRegistry.Empty); }
+        {
+            return Merge(builder, ExtensionRegistry.Empty);
+        }
 
 
         /// <summary>
         /// <summary>
         /// Merges the contents of stream into the provided message builder
         /// Merges the contents of stream into the provided message builder
         /// </summary>
         /// </summary>
-        public abstract TBuilder Merge<TBuilder>(TBuilder builder, ExtensionRegistry registry) where TBuilder : IBuilderLite;
+        public abstract TBuilder Merge<TBuilder>(TBuilder builder, ExtensionRegistry registry)
+            where TBuilder : IBuilderLite;
 
 
         /// <summary>
         /// <summary>
         /// Peeks at the next field in the input stream and returns what information is available.
         /// Peeks at the next field in the input stream and returns what information is available.
@@ -117,14 +120,17 @@ namespace Google.ProtocolBuffers.Serialization
                 yield return next;
                 yield return next;
 
 
                 if (!PeekNext(out next) || next != field)
                 if (!PeekNext(out next) || next != field)
+                {
                     break;
                     break;
+                }
             }
             }
         }
         }
 
 
         /// <summary>
         /// <summary>
         /// Reads an array of T messages
         /// Reads an array of T messages
         /// </summary>
         /// </summary>
-        public virtual bool ReadMessageArray<T>(string field, ICollection<T> items, IMessageLite messageType, ExtensionRegistry registry)
+        public virtual bool ReadMessageArray<T>(string field, ICollection<T> items, IMessageLite messageType,
+                                                ExtensionRegistry registry)
         {
         {
             bool success = false;
             bool success = false;
             foreach (string next in ForeachArrayItem(field))
             foreach (string next in ForeachArrayItem(field))
@@ -132,7 +138,7 @@ namespace Google.ProtocolBuffers.Serialization
                 IBuilderLite builder = messageType.WeakCreateBuilderForType();
                 IBuilderLite builder = messageType.WeakCreateBuilderForType();
                 if (ReadMessage(builder, registry))
                 if (ReadMessage(builder, registry))
                 {
                 {
-                    items.Add((T)builder.WeakBuild());
+                    items.Add((T) builder.WeakBuild());
                     success |= true;
                     success |= true;
                 }
                 }
             }
             }
@@ -142,7 +148,8 @@ namespace Google.ProtocolBuffers.Serialization
         /// <summary>
         /// <summary>
         /// Reads an array of T messages as a proto-buffer group
         /// Reads an array of T messages as a proto-buffer group
         /// </summary>
         /// </summary>
-        public virtual bool ReadGroupArray<T>(string field, ICollection<T> items, IMessageLite messageType, ExtensionRegistry registry)
+        public virtual bool ReadGroupArray<T>(string field, ICollection<T> items, IMessageLite messageType,
+                                              ExtensionRegistry registry)
         {
         {
             bool success = false;
             bool success = false;
             foreach (string next in ForeachArrayItem(field))
             foreach (string next in ForeachArrayItem(field))
@@ -150,7 +157,7 @@ namespace Google.ProtocolBuffers.Serialization
                 IBuilderLite builder = messageType.WeakCreateBuilderForType();
                 IBuilderLite builder = messageType.WeakCreateBuilderForType();
                 if (ReadGroup(builder, registry))
                 if (ReadGroup(builder, registry))
                 {
                 {
-                    items.Add((T)builder.WeakBuild());
+                    items.Add((T) builder.WeakBuild());
                     success |= true;
                     success |= true;
                 }
                 }
             }
             }
@@ -186,7 +193,7 @@ namespace Google.ProtocolBuffers.Serialization
                 object temp = null;
                 object temp = null;
                 if (ReadField(type, ref temp))
                 if (ReadField(type, ref temp))
                 {
                 {
-                    items.Add((T)temp);
+                    items.Add((T) temp);
                     success |= true;
                     success |= true;
                 }
                 }
             }
             }
@@ -204,9 +211,13 @@ namespace Google.ProtocolBuffers.Serialization
                     {
                     {
                         bool temp = false;
                         bool temp = false;
                         if (Read(ref temp))
                         if (Read(ref temp))
+                        {
                             value = temp;
                             value = temp;
+                        }
                         else
                         else
+                        {
                             return false;
                             return false;
+                        }
                         break;
                         break;
                     }
                     }
                 case FieldType.Int64:
                 case FieldType.Int64:
@@ -215,9 +226,13 @@ namespace Google.ProtocolBuffers.Serialization
                     {
                     {
                         long temp = 0;
                         long temp = 0;
                         if (Read(ref temp))
                         if (Read(ref temp))
+                        {
                             value = temp;
                             value = temp;
+                        }
                         else
                         else
+                        {
                             return false;
                             return false;
+                        }
                         break;
                         break;
                     }
                     }
                 case FieldType.UInt64:
                 case FieldType.UInt64:
@@ -225,9 +240,13 @@ namespace Google.ProtocolBuffers.Serialization
                     {
                     {
                         ulong temp = 0;
                         ulong temp = 0;
                         if (Read(ref temp))
                         if (Read(ref temp))
+                        {
                             value = temp;
                             value = temp;
+                        }
                         else
                         else
+                        {
                             return false;
                             return false;
+                        }
                         break;
                         break;
                     }
                     }
                 case FieldType.Int32:
                 case FieldType.Int32:
@@ -236,9 +255,13 @@ namespace Google.ProtocolBuffers.Serialization
                     {
                     {
                         int temp = 0;
                         int temp = 0;
                         if (Read(ref temp))
                         if (Read(ref temp))
+                        {
                             value = temp;
                             value = temp;
+                        }
                         else
                         else
+                        {
                             return false;
                             return false;
+                        }
                         break;
                         break;
                     }
                     }
                 case FieldType.UInt32:
                 case FieldType.UInt32:
@@ -246,45 +269,65 @@ namespace Google.ProtocolBuffers.Serialization
                     {
                     {
                         uint temp = 0;
                         uint temp = 0;
                         if (Read(ref temp))
                         if (Read(ref temp))
+                        {
                             value = temp;
                             value = temp;
+                        }
                         else
                         else
+                        {
                             return false;
                             return false;
+                        }
                         break;
                         break;
                     }
                     }
                 case FieldType.Float:
                 case FieldType.Float:
                     {
                     {
                         float temp = float.NaN;
                         float temp = float.NaN;
                         if (Read(ref temp))
                         if (Read(ref temp))
+                        {
                             value = temp;
                             value = temp;
+                        }
                         else
                         else
+                        {
                             return false;
                             return false;
+                        }
                         break;
                         break;
                     }
                     }
                 case FieldType.Double:
                 case FieldType.Double:
                     {
                     {
                         double temp = float.NaN;
                         double temp = float.NaN;
                         if (Read(ref temp))
                         if (Read(ref temp))
+                        {
                             value = temp;
                             value = temp;
+                        }
                         else
                         else
+                        {
                             return false;
                             return false;
+                        }
                         break;
                         break;
                     }
                     }
                 case FieldType.String:
                 case FieldType.String:
                     {
                     {
                         string temp = null;
                         string temp = null;
                         if (Read(ref temp))
                         if (Read(ref temp))
+                        {
                             value = temp;
                             value = temp;
+                        }
                         else
                         else
+                        {
                             return false;
                             return false;
+                        }
                         break;
                         break;
                     }
                     }
                 case FieldType.Bytes:
                 case FieldType.Bytes:
                     {
                     {
                         ByteString temp = null;
                         ByteString temp = null;
                         if (Read(ref temp))
                         if (Read(ref temp))
+                        {
                             value = temp;
                             value = temp;
+                        }
                         else
                         else
+                        {
                             return false;
                             return false;
+                        }
                         break;
                         break;
                     }
                     }
                 default:
                 default:
@@ -306,65 +349,99 @@ namespace Google.ProtocolBuffers.Serialization
         }
         }
 
 
         bool ICodedInputStream.ReadDouble(ref double value)
         bool ICodedInputStream.ReadDouble(ref double value)
-        { return Read(ref value); }
+        {
+            return Read(ref value);
+        }
 
 
         bool ICodedInputStream.ReadFloat(ref float value)
         bool ICodedInputStream.ReadFloat(ref float value)
-        { return Read(ref value); }
+        {
+            return Read(ref value);
+        }
 
 
         bool ICodedInputStream.ReadUInt64(ref ulong value)
         bool ICodedInputStream.ReadUInt64(ref ulong value)
-        { return Read(ref value); }
+        {
+            return Read(ref value);
+        }
 
 
         bool ICodedInputStream.ReadInt64(ref long value)
         bool ICodedInputStream.ReadInt64(ref long value)
-        { return Read(ref value); }
+        {
+            return Read(ref value);
+        }
 
 
         bool ICodedInputStream.ReadInt32(ref int value)
         bool ICodedInputStream.ReadInt32(ref int value)
-        { return Read(ref value); }
+        {
+            return Read(ref value);
+        }
 
 
         bool ICodedInputStream.ReadFixed64(ref ulong value)
         bool ICodedInputStream.ReadFixed64(ref ulong value)
-        { return Read(ref value); }
+        {
+            return Read(ref value);
+        }
 
 
         bool ICodedInputStream.ReadFixed32(ref uint value)
         bool ICodedInputStream.ReadFixed32(ref uint value)
-        { return Read(ref value); }
+        {
+            return Read(ref value);
+        }
 
 
         bool ICodedInputStream.ReadBool(ref bool value)
         bool ICodedInputStream.ReadBool(ref bool value)
-        { return Read(ref value); }
+        {
+            return Read(ref value);
+        }
 
 
         bool ICodedInputStream.ReadString(ref string value)
         bool ICodedInputStream.ReadString(ref string value)
-        { return Read(ref value); }
+        {
+            return Read(ref value);
+        }
 
 
         void ICodedInputStream.ReadGroup(int fieldNumber, IBuilderLite builder, ExtensionRegistry extensionRegistry)
         void ICodedInputStream.ReadGroup(int fieldNumber, IBuilderLite builder, ExtensionRegistry extensionRegistry)
         {
         {
             if (Depth++ > MaxDepth)
             if (Depth++ > MaxDepth)
+            {
                 throw InvalidProtocolBufferException.RecursionLimitExceeded();
                 throw InvalidProtocolBufferException.RecursionLimitExceeded();
+            }
             ReadGroup(builder, extensionRegistry);
             ReadGroup(builder, extensionRegistry);
             Depth--;
             Depth--;
         }
         }
 
 
         void ICodedInputStream.ReadUnknownGroup(int fieldNumber, IBuilderLite builder)
         void ICodedInputStream.ReadUnknownGroup(int fieldNumber, IBuilderLite builder)
-        { throw new NotSupportedException(); }
+        {
+            throw new NotSupportedException();
+        }
 
 
         void ICodedInputStream.ReadMessage(IBuilderLite builder, ExtensionRegistry extensionRegistry)
         void ICodedInputStream.ReadMessage(IBuilderLite builder, ExtensionRegistry extensionRegistry)
         {
         {
             if (Depth++ > MaxDepth)
             if (Depth++ > MaxDepth)
-                throw InvalidProtocolBufferException.RecursionLimitExceeded(); 
+            {
+                throw InvalidProtocolBufferException.RecursionLimitExceeded();
+            }
             ReadMessage(builder, extensionRegistry);
             ReadMessage(builder, extensionRegistry);
             Depth--;
             Depth--;
         }
         }
 
 
         bool ICodedInputStream.ReadBytes(ref ByteString value)
         bool ICodedInputStream.ReadBytes(ref ByteString value)
-        { return Read(ref value); }
+        {
+            return Read(ref value);
+        }
 
 
         bool ICodedInputStream.ReadUInt32(ref uint value)
         bool ICodedInputStream.ReadUInt32(ref uint value)
-        { return Read(ref value); }
+        {
+            return Read(ref value);
+        }
 
 
         bool ICodedInputStream.ReadEnum(ref IEnumLite value, out object unknown, IEnumLiteMap mapping)
         bool ICodedInputStream.ReadEnum(ref IEnumLite value, out object unknown, IEnumLiteMap mapping)
         {
         {
             value = null;
             value = null;
             unknown = null;
             unknown = null;
-            if(ReadEnum(ref unknown))
+            if (ReadEnum(ref unknown))
             {
             {
-                if (unknown is int) value = mapping.FindValueByNumber((int)unknown);
-                else if (unknown is string) value = mapping.FindValueByName((string)unknown);
+                if (unknown is int)
+                {
+                    value = mapping.FindValueByNumber((int) unknown);
+                }
+                else if (unknown is string)
+                {
+                    value = mapping.FindValueByName((string) unknown);
+                }
                 return value != null;
                 return value != null;
             }
             }
             return false;
             return false;
@@ -375,12 +452,16 @@ namespace Google.ProtocolBuffers.Serialization
             rawValue = null;
             rawValue = null;
             if (ReadEnum(ref rawValue))
             if (ReadEnum(ref rawValue))
             {
             {
-                if (Enum.IsDefined(typeof(T), rawValue))
+                if (Enum.IsDefined(typeof (T), rawValue))
                 {
                 {
                     if (rawValue is int)
                     if (rawValue is int)
-                        value = (T)rawValue;
+                    {
+                        value = (T) rawValue;
+                    }
                     else if (rawValue is string)
                     else if (rawValue is string)
-                        value = (T)Enum.Parse(typeof(T), (string)rawValue, false);
+                    {
+                        value = (T) Enum.Parse(typeof (T), (string) rawValue, false);
+                    }
                     else
                     else
                     {
                     {
                         value = default(T);
                         value = default(T);
@@ -393,21 +474,33 @@ namespace Google.ProtocolBuffers.Serialization
         }
         }
 
 
         bool ICodedInputStream.ReadSFixed32(ref int value)
         bool ICodedInputStream.ReadSFixed32(ref int value)
-        { return Read(ref value); }
+        {
+            return Read(ref value);
+        }
 
 
         bool ICodedInputStream.ReadSFixed64(ref long value)
         bool ICodedInputStream.ReadSFixed64(ref long value)
-        { return Read(ref value); }
+        {
+            return Read(ref value);
+        }
 
 
         bool ICodedInputStream.ReadSInt32(ref int value)
         bool ICodedInputStream.ReadSInt32(ref int value)
-        { return Read(ref value); }
+        {
+            return Read(ref value);
+        }
 
 
         bool ICodedInputStream.ReadSInt64(ref long value)
         bool ICodedInputStream.ReadSInt64(ref long value)
-        { return Read(ref value); }
+        {
+            return Read(ref value);
+        }
 
 
-        void ICodedInputStream.ReadPrimitiveArray(FieldType fieldType, uint fieldTag, string fieldName, ICollection<object> list)
-        { ReadArray(fieldType, fieldName, list); }
+        void ICodedInputStream.ReadPrimitiveArray(FieldType fieldType, uint fieldTag, string fieldName,
+                                                  ICollection<object> list)
+        {
+            ReadArray(fieldType, fieldName, list);
+        }
 
 
-        void ICodedInputStream.ReadEnumArray(uint fieldTag, string fieldName, ICollection<IEnumLite> list, out ICollection<object> unknown, IEnumLiteMap mapping)
+        void ICodedInputStream.ReadEnumArray(uint fieldTag, string fieldName, ICollection<IEnumLite> list,
+                                             out ICollection<object> unknown, IEnumLiteMap mapping)
         {
         {
             unknown = null;
             unknown = null;
             List<object> array = new List<object>();
             List<object> array = new List<object>();
@@ -416,21 +509,33 @@ namespace Google.ProtocolBuffers.Serialization
                 foreach (object rawValue in array)
                 foreach (object rawValue in array)
                 {
                 {
                     IEnumLite item = null;
                     IEnumLite item = null;
-                    if (rawValue is int) item = mapping.FindValueByNumber((int)rawValue);
-                    else if (rawValue is string) item = mapping.FindValueByName((string)rawValue);
+                    if (rawValue is int)
+                    {
+                        item = mapping.FindValueByNumber((int) rawValue);
+                    }
+                    else if (rawValue is string)
+                    {
+                        item = mapping.FindValueByName((string) rawValue);
+                    }
 
 
                     if (item != null)
                     if (item != null)
+                    {
                         list.Add(item);
                         list.Add(item);
+                    }
                     else
                     else
                     {
                     {
-                        if (unknown == null) unknown = new List<object>();
+                        if (unknown == null)
+                        {
+                            unknown = new List<object>();
+                        }
                         unknown.Add(rawValue);
                         unknown.Add(rawValue);
                     }
                     }
                 }
                 }
             }
             }
         }
         }
 
 
-        void ICodedInputStream.ReadEnumArray<T>(uint fieldTag, string fieldName, ICollection<T> list, out ICollection<object> unknown)
+        void ICodedInputStream.ReadEnumArray<T>(uint fieldTag, string fieldName, ICollection<T> list,
+                                                out ICollection<object> unknown)
         {
         {
             unknown = null;
             unknown = null;
             List<object> array = new List<object>();
             List<object> array = new List<object>();
@@ -439,40 +544,59 @@ namespace Google.ProtocolBuffers.Serialization
                 foreach (object rawValue in array)
                 foreach (object rawValue in array)
                 {
                 {
                     if (rawValue is int)
                     if (rawValue is int)
-                        list.Add((T)rawValue);
+                    {
+                        list.Add((T) rawValue);
+                    }
                     else if (rawValue is string)
                     else if (rawValue is string)
-                        list.Add((T)Enum.Parse(typeof(T), (string)rawValue, false));
+                    {
+                        list.Add((T) Enum.Parse(typeof (T), (string) rawValue, false));
+                    }
                     else
                     else
                     {
                     {
-                        if (unknown == null) unknown = new List<object>();
+                        if (unknown == null)
+                        {
+                            unknown = new List<object>();
+                        }
                         unknown.Add(rawValue);
                         unknown.Add(rawValue);
                     }
                     }
                 }
                 }
             }
             }
         }
         }
 
 
-        void ICodedInputStream.ReadMessageArray<T>(uint fieldTag, string fieldName, ICollection<T> list, T messageType, ExtensionRegistry registry)
+        void ICodedInputStream.ReadMessageArray<T>(uint fieldTag, string fieldName, ICollection<T> list, T messageType,
+                                                   ExtensionRegistry registry)
         {
         {
             if (Depth++ > MaxDepth)
             if (Depth++ > MaxDepth)
-                throw InvalidProtocolBufferException.RecursionLimitExceeded(); 
+            {
+                throw InvalidProtocolBufferException.RecursionLimitExceeded();
+            }
             ReadMessageArray(fieldName, list, messageType, registry);
             ReadMessageArray(fieldName, list, messageType, registry);
             Depth--;
             Depth--;
         }
         }
 
 
-        void ICodedInputStream.ReadGroupArray<T>(uint fieldTag, string fieldName, ICollection<T> list, T messageType, ExtensionRegistry registry)
+        void ICodedInputStream.ReadGroupArray<T>(uint fieldTag, string fieldName, ICollection<T> list, T messageType,
+                                                 ExtensionRegistry registry)
         {
         {
             if (Depth++ > MaxDepth)
             if (Depth++ > MaxDepth)
+            {
                 throw InvalidProtocolBufferException.RecursionLimitExceeded();
                 throw InvalidProtocolBufferException.RecursionLimitExceeded();
+            }
             ReadGroupArray(fieldName, list, messageType, registry);
             ReadGroupArray(fieldName, list, messageType, registry);
             Depth--;
             Depth--;
         }
         }
 
 
         bool ICodedInputStream.ReadPrimitiveField(FieldType fieldType, ref object value)
         bool ICodedInputStream.ReadPrimitiveField(FieldType fieldType, ref object value)
-        { return ReadField(fieldType, ref value); }
+        {
+            return ReadField(fieldType, ref value);
+        }
 
 
         bool ICodedInputStream.IsAtEnd
         bool ICodedInputStream.IsAtEnd
         {
         {
-            get { string next; return PeekNext(out next) == false; }
+            get
+            {
+                string next;
+                return PeekNext(out next) == false;
+            }
         }
         }
 
 
         bool ICodedInputStream.SkipField()
         bool ICodedInputStream.SkipField()
@@ -482,50 +606,80 @@ namespace Google.ProtocolBuffers.Serialization
         }
         }
 
 
         void ICodedInputStream.ReadStringArray(uint fieldTag, string fieldName, ICollection<string> list)
         void ICodedInputStream.ReadStringArray(uint fieldTag, string fieldName, ICollection<string> list)
-        { ReadArray(FieldType.String, fieldName, list); }
+        {
+            ReadArray(FieldType.String, fieldName, list);
+        }
 
 
         void ICodedInputStream.ReadBytesArray(uint fieldTag, string fieldName, ICollection<ByteString> list)
         void ICodedInputStream.ReadBytesArray(uint fieldTag, string fieldName, ICollection<ByteString> list)
-        { ReadArray(FieldType.Bytes, fieldName, list); }
+        {
+            ReadArray(FieldType.Bytes, fieldName, list);
+        }
 
 
         void ICodedInputStream.ReadBoolArray(uint fieldTag, string fieldName, ICollection<bool> list)
         void ICodedInputStream.ReadBoolArray(uint fieldTag, string fieldName, ICollection<bool> list)
-        { ReadArray(FieldType.Bool, fieldName, list); }
+        {
+            ReadArray(FieldType.Bool, fieldName, list);
+        }
 
 
         void ICodedInputStream.ReadInt32Array(uint fieldTag, string fieldName, ICollection<int> list)
         void ICodedInputStream.ReadInt32Array(uint fieldTag, string fieldName, ICollection<int> list)
-        { ReadArray(FieldType.Int32, fieldName, list); }
+        {
+            ReadArray(FieldType.Int32, fieldName, list);
+        }
 
 
         void ICodedInputStream.ReadSInt32Array(uint fieldTag, string fieldName, ICollection<int> list)
         void ICodedInputStream.ReadSInt32Array(uint fieldTag, string fieldName, ICollection<int> list)
-        { ReadArray(FieldType.SInt32, fieldName, list); }
+        {
+            ReadArray(FieldType.SInt32, fieldName, list);
+        }
 
 
         void ICodedInputStream.ReadUInt32Array(uint fieldTag, string fieldName, ICollection<uint> list)
         void ICodedInputStream.ReadUInt32Array(uint fieldTag, string fieldName, ICollection<uint> list)
-        { ReadArray(FieldType.UInt32, fieldName, list); }
+        {
+            ReadArray(FieldType.UInt32, fieldName, list);
+        }
 
 
         void ICodedInputStream.ReadFixed32Array(uint fieldTag, string fieldName, ICollection<uint> list)
         void ICodedInputStream.ReadFixed32Array(uint fieldTag, string fieldName, ICollection<uint> list)
-        { ReadArray(FieldType.Fixed32, fieldName, list); }
+        {
+            ReadArray(FieldType.Fixed32, fieldName, list);
+        }
 
 
         void ICodedInputStream.ReadSFixed32Array(uint fieldTag, string fieldName, ICollection<int> list)
         void ICodedInputStream.ReadSFixed32Array(uint fieldTag, string fieldName, ICollection<int> list)
-        { ReadArray(FieldType.SFixed32, fieldName, list); }
+        {
+            ReadArray(FieldType.SFixed32, fieldName, list);
+        }
 
 
         void ICodedInputStream.ReadInt64Array(uint fieldTag, string fieldName, ICollection<long> list)
         void ICodedInputStream.ReadInt64Array(uint fieldTag, string fieldName, ICollection<long> list)
-        { ReadArray(FieldType.Int64, fieldName, list); }
+        {
+            ReadArray(FieldType.Int64, fieldName, list);
+        }
 
 
         void ICodedInputStream.ReadSInt64Array(uint fieldTag, string fieldName, ICollection<long> list)
         void ICodedInputStream.ReadSInt64Array(uint fieldTag, string fieldName, ICollection<long> list)
-        { ReadArray(FieldType.SInt64, fieldName, list); }
+        {
+            ReadArray(FieldType.SInt64, fieldName, list);
+        }
 
 
         void ICodedInputStream.ReadUInt64Array(uint fieldTag, string fieldName, ICollection<ulong> list)
         void ICodedInputStream.ReadUInt64Array(uint fieldTag, string fieldName, ICollection<ulong> list)
-        { ReadArray(FieldType.UInt64, fieldName, list); }
+        {
+            ReadArray(FieldType.UInt64, fieldName, list);
+        }
 
 
         void ICodedInputStream.ReadFixed64Array(uint fieldTag, string fieldName, ICollection<ulong> list)
         void ICodedInputStream.ReadFixed64Array(uint fieldTag, string fieldName, ICollection<ulong> list)
-        { ReadArray(FieldType.Fixed64, fieldName, list); }
+        {
+            ReadArray(FieldType.Fixed64, fieldName, list);
+        }
 
 
         void ICodedInputStream.ReadSFixed64Array(uint fieldTag, string fieldName, ICollection<long> list)
         void ICodedInputStream.ReadSFixed64Array(uint fieldTag, string fieldName, ICollection<long> list)
-        { ReadArray(FieldType.SFixed64, fieldName, list); }
+        {
+            ReadArray(FieldType.SFixed64, fieldName, list);
+        }
 
 
         void ICodedInputStream.ReadDoubleArray(uint fieldTag, string fieldName, ICollection<double> list)
         void ICodedInputStream.ReadDoubleArray(uint fieldTag, string fieldName, ICollection<double> list)
-        { ReadArray(FieldType.Double, fieldName, list); }
+        {
+            ReadArray(FieldType.Double, fieldName, list);
+        }
 
 
         void ICodedInputStream.ReadFloatArray(uint fieldTag, string fieldName, ICollection<float> list)
         void ICodedInputStream.ReadFloatArray(uint fieldTag, string fieldName, ICollection<float> list)
-        { ReadArray(FieldType.Float, fieldName, list); }
+        {
+            ReadArray(FieldType.Float, fieldName, list);
+        }
 
 
         #endregion
         #endregion
     }
     }
-}
+}

+ 14 - 11
src/ProtocolBuffers/Serialization/AbstractTextReader.cs

@@ -20,7 +20,7 @@ namespace Google.ProtocolBuffers.Serialization
         protected override bool Read(ref string value)
         protected override bool Read(ref string value)
         {
         {
             string text = null;
             string text = null;
-            if (ReadAsText(ref text, typeof(string)))
+            if (ReadAsText(ref text, typeof (string)))
             {
             {
                 value = text;
                 value = text;
                 return true;
                 return true;
@@ -34,7 +34,7 @@ namespace Google.ProtocolBuffers.Serialization
         protected override bool Read(ref bool value)
         protected override bool Read(ref bool value)
         {
         {
             string text = null;
             string text = null;
-            if (ReadAsText(ref text, typeof(bool)))
+            if (ReadAsText(ref text, typeof (bool)))
             {
             {
                 value = XmlConvert.ToBoolean(text);
                 value = XmlConvert.ToBoolean(text);
                 return true;
                 return true;
@@ -48,7 +48,7 @@ namespace Google.ProtocolBuffers.Serialization
         protected override bool Read(ref int value)
         protected override bool Read(ref int value)
         {
         {
             string text = null;
             string text = null;
-            if (ReadAsText(ref text, typeof(int)))
+            if (ReadAsText(ref text, typeof (int)))
             {
             {
                 value = XmlConvert.ToInt32(text);
                 value = XmlConvert.ToInt32(text);
                 return true;
                 return true;
@@ -63,7 +63,7 @@ namespace Google.ProtocolBuffers.Serialization
         protected override bool Read(ref uint value)
         protected override bool Read(ref uint value)
         {
         {
             string text = null;
             string text = null;
-            if (ReadAsText(ref text, typeof(uint)))
+            if (ReadAsText(ref text, typeof (uint)))
             {
             {
                 value = XmlConvert.ToUInt32(text);
                 value = XmlConvert.ToUInt32(text);
                 return true;
                 return true;
@@ -77,7 +77,7 @@ namespace Google.ProtocolBuffers.Serialization
         protected override bool Read(ref long value)
         protected override bool Read(ref long value)
         {
         {
             string text = null;
             string text = null;
-            if (ReadAsText(ref text, typeof(long)))
+            if (ReadAsText(ref text, typeof (long)))
             {
             {
                 value = XmlConvert.ToInt64(text);
                 value = XmlConvert.ToInt64(text);
                 return true;
                 return true;
@@ -92,7 +92,7 @@ namespace Google.ProtocolBuffers.Serialization
         protected override bool Read(ref ulong value)
         protected override bool Read(ref ulong value)
         {
         {
             string text = null;
             string text = null;
-            if (ReadAsText(ref text, typeof(ulong)))
+            if (ReadAsText(ref text, typeof (ulong)))
             {
             {
                 value = XmlConvert.ToUInt64(text);
                 value = XmlConvert.ToUInt64(text);
                 return true;
                 return true;
@@ -106,7 +106,7 @@ namespace Google.ProtocolBuffers.Serialization
         protected override bool Read(ref float value)
         protected override bool Read(ref float value)
         {
         {
             string text = null;
             string text = null;
-            if (ReadAsText(ref text, typeof(float)))
+            if (ReadAsText(ref text, typeof (float)))
             {
             {
                 value = XmlConvert.ToSingle(text);
                 value = XmlConvert.ToSingle(text);
                 return true;
                 return true;
@@ -120,7 +120,7 @@ namespace Google.ProtocolBuffers.Serialization
         protected override bool Read(ref double value)
         protected override bool Read(ref double value)
         {
         {
             string text = null;
             string text = null;
-            if (ReadAsText(ref text, typeof(double)))
+            if (ReadAsText(ref text, typeof (double)))
             {
             {
                 value = XmlConvert.ToDouble(text);
                 value = XmlConvert.ToDouble(text);
                 return true;
                 return true;
@@ -131,7 +131,10 @@ namespace Google.ProtocolBuffers.Serialization
         /// <summary>
         /// <summary>
         /// Provides decoding of bytes read from the input stream
         /// Provides decoding of bytes read from the input stream
         /// </summary>
         /// </summary>
-        protected virtual ByteString DecodeBytes(string bytes) { return ByteString.FromBase64(bytes); }
+        protected virtual ByteString DecodeBytes(string bytes)
+        {
+            return ByteString.FromBase64(bytes);
+        }
 
 
         /// <summary>
         /// <summary>
         /// Returns true if it was able to read a ByteString from the input
         /// Returns true if it was able to read a ByteString from the input
@@ -139,7 +142,7 @@ namespace Google.ProtocolBuffers.Serialization
         protected override bool Read(ref ByteString value)
         protected override bool Read(ref ByteString value)
         {
         {
             string text = null;
             string text = null;
-            if (ReadAsText(ref text, typeof(ByteString)))
+            if (ReadAsText(ref text, typeof (ByteString)))
             {
             {
                 value = DecodeBytes(text);
                 value = DecodeBytes(text);
                 return true;
                 return true;
@@ -154,7 +157,7 @@ namespace Google.ProtocolBuffers.Serialization
         protected override bool ReadEnum(ref object value)
         protected override bool ReadEnum(ref object value)
         {
         {
             string text = null;
             string text = null;
-            if (ReadAsText(ref text, typeof(Enum)))
+            if (ReadAsText(ref text, typeof (Enum)))
             {
             {
                 int number;
                 int number;
                 if (int.TryParse(text, NumberStyles.Integer, CultureInfo.InvariantCulture, out number))
                 if (int.TryParse(text, NumberStyles.Integer, CultureInfo.InvariantCulture, out number))

+ 44 - 11
src/ProtocolBuffers/Serialization/AbstractTextWriter.cs

@@ -11,7 +11,10 @@ namespace Google.ProtocolBuffers.Serialization
         /// <summary>
         /// <summary>
         /// Encodes raw bytes to be written to the stream
         /// Encodes raw bytes to be written to the stream
         /// </summary>
         /// </summary>
-        protected virtual string EncodeBytes(ByteString bytes) { return bytes.ToBase64(); }
+        protected virtual string EncodeBytes(ByteString bytes)
+        {
+            return bytes.ToBase64();
+        }
 
 
         /// <summary>
         /// <summary>
         /// Writes a typed field as a text value
         /// Writes a typed field as a text value
@@ -21,53 +24,83 @@ namespace Google.ProtocolBuffers.Serialization
         /// <summary>
         /// <summary>
         /// Writes a String value
         /// Writes a String value
         /// </summary>
         /// </summary>
-        protected override void Write(string field, string value) { WriteAsText(field, value, value); }
+        protected override void Write(string field, string value)
+        {
+            WriteAsText(field, value, value);
+        }
 
 
         /// <summary>
         /// <summary>
         /// Writes a Boolean value
         /// Writes a Boolean value
         /// </summary>
         /// </summary>
-        protected override void Write(string field, bool value) { WriteAsText(field, XmlConvert.ToString(value), value); }
+        protected override void Write(string field, bool value)
+        {
+            WriteAsText(field, XmlConvert.ToString(value), value);
+        }
 
 
         /// <summary>
         /// <summary>
         /// Writes a Int32 value
         /// Writes a Int32 value
         /// </summary>
         /// </summary>
-        protected override void Write(string field, int value) { WriteAsText(field, XmlConvert.ToString(value), value); }
+        protected override void Write(string field, int value)
+        {
+            WriteAsText(field, XmlConvert.ToString(value), value);
+        }
 
 
         /// <summary>
         /// <summary>
         /// Writes a UInt32 value
         /// Writes a UInt32 value
         /// </summary>
         /// </summary>
         [CLSCompliant(false)]
         [CLSCompliant(false)]
-        protected override void Write(string field, uint value) { WriteAsText(field, XmlConvert.ToString(value), value); }
+        protected override void Write(string field, uint value)
+        {
+            WriteAsText(field, XmlConvert.ToString(value), value);
+        }
 
 
         /// <summary>
         /// <summary>
         /// Writes a Int64 value
         /// Writes a Int64 value
         /// </summary>
         /// </summary>
-        protected override void Write(string field, long value) { WriteAsText(field, XmlConvert.ToString(value), value); }
+        protected override void Write(string field, long value)
+        {
+            WriteAsText(field, XmlConvert.ToString(value), value);
+        }
 
 
         /// <summary>
         /// <summary>
         /// Writes a UInt64 value
         /// Writes a UInt64 value
         /// </summary>
         /// </summary>
         [CLSCompliant(false)]
         [CLSCompliant(false)]
-        protected override void Write(string field, ulong value) { WriteAsText(field, XmlConvert.ToString(value), value); }
+        protected override void Write(string field, ulong value)
+        {
+            WriteAsText(field, XmlConvert.ToString(value), value);
+        }
 
 
         /// <summary>
         /// <summary>
         /// Writes a Single value
         /// Writes a Single value
         /// </summary>
         /// </summary>
-        protected override void Write(string field, float value) { WriteAsText(field, XmlConvert.ToString(value), value); }
+        protected override void Write(string field, float value)
+        {
+            WriteAsText(field, XmlConvert.ToString(value), value);
+        }
 
 
         /// <summary>
         /// <summary>
         /// Writes a Double value
         /// Writes a Double value
         /// </summary>
         /// </summary>
-        protected override void Write(string field, double value) { WriteAsText(field, XmlConvert.ToString(value), value); }
+        protected override void Write(string field, double value)
+        {
+            WriteAsText(field, XmlConvert.ToString(value), value);
+        }
 
 
         /// <summary>
         /// <summary>
         /// Writes a set of bytes
         /// Writes a set of bytes
         /// </summary>
         /// </summary>
-        protected override void Write(string field, ByteString value) { WriteAsText(field, EncodeBytes(value), value); }
+        protected override void Write(string field, ByteString value)
+        {
+            WriteAsText(field, EncodeBytes(value), value);
+        }
 
 
         /// <summary>
         /// <summary>
         /// Writes a System.Enum by the numeric and textual value
         /// Writes a System.Enum by the numeric and textual value
         /// </summary>
         /// </summary>
-        protected override void WriteEnum(string field, int number, string name) { WriteAsText(field, name, number); }
+        protected override void WriteEnum(string field, int number, string name)
+        {
+            WriteAsText(field, name, number);
+        }
     }
     }
 }
 }

+ 275 - 109
src/ProtocolBuffers/Serialization/AbstractWriter.cs

@@ -1,5 +1,6 @@
 using System;
 using System;
 using System.Collections;
 using System.Collections;
+using System.Collections.Generic;
 using System.Globalization;
 using System.Globalization;
 using Google.ProtocolBuffers.Descriptors;
 using Google.ProtocolBuffers.Descriptors;
 
 
@@ -27,7 +28,8 @@ namespace Google.ProtocolBuffers.Serialization
         /// Completes any pending write operations
         /// Completes any pending write operations
         /// </summary>
         /// </summary>
         public virtual void Flush()
         public virtual void Flush()
-        { }
+        {
+        }
 
 
         /// <summary>
         /// <summary>
         /// Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources.
         /// Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources.
@@ -105,28 +107,60 @@ namespace Google.ProtocolBuffers.Serialization
         {
         {
             switch (fieldType)
             switch (fieldType)
             {
             {
-                case FieldType.Bool: Write(field, (bool)value); break;
+                case FieldType.Bool:
+                    Write(field, (bool) value);
+                    break;
                 case FieldType.Int64:
                 case FieldType.Int64:
                 case FieldType.SInt64:
                 case FieldType.SInt64:
-                case FieldType.SFixed64: Write(field, (long)value); break;
+                case FieldType.SFixed64:
+                    Write(field, (long) value);
+                    break;
                 case FieldType.UInt64:
                 case FieldType.UInt64:
-                case FieldType.Fixed64: Write(field, (ulong)value); break;
+                case FieldType.Fixed64:
+                    Write(field, (ulong) value);
+                    break;
                 case FieldType.Int32:
                 case FieldType.Int32:
                 case FieldType.SInt32:
                 case FieldType.SInt32:
-                case FieldType.SFixed32: Write(field, (int)value); break;
+                case FieldType.SFixed32:
+                    Write(field, (int) value);
+                    break;
                 case FieldType.UInt32:
                 case FieldType.UInt32:
-                case FieldType.Fixed32: Write(field, (uint)value); break;
-                case FieldType.Float: Write(field, (float)value); break;
-                case FieldType.Double: Write(field, (double)value); break;
-                case FieldType.String: Write(field, (string)value); break;
-                case FieldType.Bytes: Write(field, (ByteString)value); break;
-                case FieldType.Group: WriteMessageOrGroup(field, (IMessageLite)value); break;
-                case FieldType.Message: WriteMessageOrGroup(field, (IMessageLite)value); break;
+                case FieldType.Fixed32:
+                    Write(field, (uint) value);
+                    break;
+                case FieldType.Float:
+                    Write(field, (float) value);
+                    break;
+                case FieldType.Double:
+                    Write(field, (double) value);
+                    break;
+                case FieldType.String:
+                    Write(field, (string) value);
+                    break;
+                case FieldType.Bytes:
+                    Write(field, (ByteString) value);
+                    break;
+                case FieldType.Group:
+                    WriteMessageOrGroup(field, (IMessageLite) value);
+                    break;
+                case FieldType.Message:
+                    WriteMessageOrGroup(field, (IMessageLite) value);
+                    break;
                 case FieldType.Enum:
                 case FieldType.Enum:
                     {
                     {
-                        if (value is IEnumLite) WriteEnum(field, ((IEnumLite)value).Number, ((IEnumLite)value).Name);
-                        else if (value is IConvertible) WriteEnum(field, ((IConvertible)value).ToInt32(CultureInfo.InvariantCulture), ((IConvertible)value).ToString(CultureInfo.InvariantCulture));
-                        else throw new ArgumentException("Expected an Enum type for field " + field);
+                        if (value is IEnumLite)
+                        {
+                            WriteEnum(field, ((IEnumLite) value).Number, ((IEnumLite) value).Name);
+                        }
+                        else if (value is IConvertible)
+                        {
+                            WriteEnum(field, ((IConvertible) value).ToInt32(CultureInfo.InvariantCulture),
+                                      ((IConvertible) value).ToString(CultureInfo.InvariantCulture));
+                        }
+                        else
+                        {
+                            throw new ArgumentException("Expected an Enum type for field " + field);
+                        }
                         break;
                         break;
                     }
                     }
                 default:
                 default:
@@ -140,7 +174,9 @@ namespace Google.ProtocolBuffers.Serialization
         protected virtual void WriteArray(FieldType fieldType, string field, IEnumerable items)
         protected virtual void WriteArray(FieldType fieldType, string field, IEnumerable items)
         {
         {
             foreach (object obj in items)
             foreach (object obj in items)
+            {
                 WriteField(fieldType, field, obj);
                 WriteField(fieldType, field, obj);
+            }
         }
         }
 
 
         /// <summary>
         /// <summary>
@@ -148,191 +184,321 @@ namespace Google.ProtocolBuffers.Serialization
         /// </summary>
         /// </summary>
         [CLSCompliant(false)]
         [CLSCompliant(false)]
         protected virtual void WriteUnknown(WireFormat.WireType wireType, int fieldNumber, ulong value)
         protected virtual void WriteUnknown(WireFormat.WireType wireType, int fieldNumber, ulong value)
-        { }
+        {
+        }
 
 
         /// <summary>
         /// <summary>
         /// Writes an unknown field, Expect WireType of GroupStart or LengthPrefix
         /// Writes an unknown field, Expect WireType of GroupStart or LengthPrefix
         /// </summary>
         /// </summary>
         [CLSCompliant(false)]
         [CLSCompliant(false)]
         protected virtual void WriteUnknown(WireFormat.WireType wireType, int fieldNumber, ByteString value)
         protected virtual void WriteUnknown(WireFormat.WireType wireType, int fieldNumber, ByteString value)
-        { }
+        {
+        }
 
 
         #region ICodedOutputStream Members
         #region ICodedOutputStream Members
 
 
         void ICodedOutputStream.WriteUnknownGroup(int fieldNumber, IMessageLite value)
         void ICodedOutputStream.WriteUnknownGroup(int fieldNumber, IMessageLite value)
-        { }
+        {
+        }
+
         void ICodedOutputStream.WriteUnknownBytes(int fieldNumber, ByteString value)
         void ICodedOutputStream.WriteUnknownBytes(int fieldNumber, ByteString value)
-        { }
+        {
+        }
+
         void ICodedOutputStream.WriteUnknownField(int fieldNumber, WireFormat.WireType type, ulong value)
         void ICodedOutputStream.WriteUnknownField(int fieldNumber, WireFormat.WireType type, ulong value)
-        { }
+        {
+        }
 
 
         void ICodedOutputStream.WriteMessageSetExtension(int fieldNumber, string fieldName, IMessageLite value)
         void ICodedOutputStream.WriteMessageSetExtension(int fieldNumber, string fieldName, IMessageLite value)
-        { }
+        {
+        }
 
 
         void ICodedOutputStream.WriteMessageSetExtension(int fieldNumber, string fieldName, ByteString value)
         void ICodedOutputStream.WriteMessageSetExtension(int fieldNumber, string fieldName, ByteString value)
-        { }
+        {
+        }
 
 
         void ICodedOutputStream.WriteField(FieldType fieldType, int fieldNumber, string fieldName, object value)
         void ICodedOutputStream.WriteField(FieldType fieldType, int fieldNumber, string fieldName, object value)
-        { WriteField(fieldType, fieldName, value); }
+        {
+            WriteField(fieldType, fieldName, value);
+        }
 
 
         void ICodedOutputStream.WriteDouble(int fieldNumber, string fieldName, double value)
         void ICodedOutputStream.WriteDouble(int fieldNumber, string fieldName, double value)
-        { Write(fieldName, value); }
+        {
+            Write(fieldName, value);
+        }
 
 
         void ICodedOutputStream.WriteFloat(int fieldNumber, string fieldName, float value)
         void ICodedOutputStream.WriteFloat(int fieldNumber, string fieldName, float value)
-        { Write(fieldName, value); }
+        {
+            Write(fieldName, value);
+        }
 
 
         void ICodedOutputStream.WriteUInt64(int fieldNumber, string fieldName, ulong value)
         void ICodedOutputStream.WriteUInt64(int fieldNumber, string fieldName, ulong value)
-        { Write(fieldName, value); }
+        {
+            Write(fieldName, value);
+        }
 
 
         void ICodedOutputStream.WriteInt64(int fieldNumber, string fieldName, long value)
         void ICodedOutputStream.WriteInt64(int fieldNumber, string fieldName, long value)
-        { Write(fieldName, value); }
+        {
+            Write(fieldName, value);
+        }
 
 
         void ICodedOutputStream.WriteInt32(int fieldNumber, string fieldName, int value)
         void ICodedOutputStream.WriteInt32(int fieldNumber, string fieldName, int value)
-        { Write(fieldName, value); }
+        {
+            Write(fieldName, value);
+        }
 
 
         void ICodedOutputStream.WriteFixed64(int fieldNumber, string fieldName, ulong value)
         void ICodedOutputStream.WriteFixed64(int fieldNumber, string fieldName, ulong value)
-        { Write(fieldName, value); }
+        {
+            Write(fieldName, value);
+        }
 
 
         void ICodedOutputStream.WriteFixed32(int fieldNumber, string fieldName, uint value)
         void ICodedOutputStream.WriteFixed32(int fieldNumber, string fieldName, uint value)
-        { Write(fieldName, value); }
+        {
+            Write(fieldName, value);
+        }
 
 
         void ICodedOutputStream.WriteBool(int fieldNumber, string fieldName, bool value)
         void ICodedOutputStream.WriteBool(int fieldNumber, string fieldName, bool value)
-        { Write(fieldName, value); }
+        {
+            Write(fieldName, value);
+        }
 
 
         void ICodedOutputStream.WriteString(int fieldNumber, string fieldName, string value)
         void ICodedOutputStream.WriteString(int fieldNumber, string fieldName, string value)
-        { Write(fieldName, value); }
+        {
+            Write(fieldName, value);
+        }
 
 
         void ICodedOutputStream.WriteGroup(int fieldNumber, string fieldName, IMessageLite value)
         void ICodedOutputStream.WriteGroup(int fieldNumber, string fieldName, IMessageLite value)
-        { WriteMessageOrGroup(fieldName, value); }
+        {
+            WriteMessageOrGroup(fieldName, value);
+        }
 
 
         void ICodedOutputStream.WriteMessage(int fieldNumber, string fieldName, IMessageLite value)
         void ICodedOutputStream.WriteMessage(int fieldNumber, string fieldName, IMessageLite value)
-        { WriteMessageOrGroup(fieldName, value); }
+        {
+            WriteMessageOrGroup(fieldName, value);
+        }
 
 
         void ICodedOutputStream.WriteBytes(int fieldNumber, string fieldName, ByteString value)
         void ICodedOutputStream.WriteBytes(int fieldNumber, string fieldName, ByteString value)
-        { Write(fieldName, value); }
+        {
+            Write(fieldName, value);
+        }
 
 
         void ICodedOutputStream.WriteUInt32(int fieldNumber, string fieldName, uint value)
         void ICodedOutputStream.WriteUInt32(int fieldNumber, string fieldName, uint value)
-        { Write(fieldName, value); }
+        {
+            Write(fieldName, value);
+        }
 
 
         void ICodedOutputStream.WriteEnum(int fieldNumber, string fieldName, int value, object rawValue)
         void ICodedOutputStream.WriteEnum(int fieldNumber, string fieldName, int value, object rawValue)
-        { WriteEnum(fieldName, value, rawValue.ToString()); }
+        {
+            WriteEnum(fieldName, value, rawValue.ToString());
+        }
 
 
         void ICodedOutputStream.WriteSFixed32(int fieldNumber, string fieldName, int value)
         void ICodedOutputStream.WriteSFixed32(int fieldNumber, string fieldName, int value)
-        { Write(fieldName, value); }
+        {
+            Write(fieldName, value);
+        }
 
 
         void ICodedOutputStream.WriteSFixed64(int fieldNumber, string fieldName, long value)
         void ICodedOutputStream.WriteSFixed64(int fieldNumber, string fieldName, long value)
-        { Write(fieldName, value); }
+        {
+            Write(fieldName, value);
+        }
 
 
         void ICodedOutputStream.WriteSInt32(int fieldNumber, string fieldName, int value)
         void ICodedOutputStream.WriteSInt32(int fieldNumber, string fieldName, int value)
-        { Write(fieldName, value); }
+        {
+            Write(fieldName, value);
+        }
 
 
         void ICodedOutputStream.WriteSInt64(int fieldNumber, string fieldName, long value)
         void ICodedOutputStream.WriteSInt64(int fieldNumber, string fieldName, long value)
-        { Write(fieldName, value); }
+        {
+            Write(fieldName, value);
+        }
 
 
 
 
         void ICodedOutputStream.WriteArray(FieldType fieldType, int fieldNumber, string fieldName, IEnumerable list)
         void ICodedOutputStream.WriteArray(FieldType fieldType, int fieldNumber, string fieldName, IEnumerable list)
-        { WriteArray(fieldType, fieldName, list); }
+        {
+            WriteArray(fieldType, fieldName, list);
+        }
 
 
-        void ICodedOutputStream.WriteGroupArray<T>(int fieldNumber, string fieldName, System.Collections.Generic.IEnumerable<T> list)
-        { WriteArray(FieldType.Group, fieldName, list); }
+        void ICodedOutputStream.WriteGroupArray<T>(int fieldNumber, string fieldName, IEnumerable<T> list)
+        {
+            WriteArray(FieldType.Group, fieldName, list);
+        }
 
 
-        void ICodedOutputStream.WriteMessageArray<T>(int fieldNumber, string fieldName, System.Collections.Generic.IEnumerable<T> list)
-        { WriteArray(FieldType.Message, fieldName, list); }
+        void ICodedOutputStream.WriteMessageArray<T>(int fieldNumber, string fieldName, IEnumerable<T> list)
+        {
+            WriteArray(FieldType.Message, fieldName, list);
+        }
 
 
-        void ICodedOutputStream.WriteStringArray(int fieldNumber, string fieldName, System.Collections.Generic.IEnumerable<string> list)
-        { WriteArray(FieldType.String, fieldName, list); }
+        void ICodedOutputStream.WriteStringArray(int fieldNumber, string fieldName, IEnumerable<string> list)
+        {
+            WriteArray(FieldType.String, fieldName, list);
+        }
 
 
-        void ICodedOutputStream.WriteBytesArray(int fieldNumber, string fieldName, System.Collections.Generic.IEnumerable<ByteString> list)
-        { WriteArray(FieldType.Bytes, fieldName, list); }
+        void ICodedOutputStream.WriteBytesArray(int fieldNumber, string fieldName, IEnumerable<ByteString> list)
+        {
+            WriteArray(FieldType.Bytes, fieldName, list);
+        }
 
 
-        void ICodedOutputStream.WriteBoolArray(int fieldNumber, string fieldName, System.Collections.Generic.IEnumerable<bool> list)
-        { WriteArray(FieldType.Bool, fieldName, list); }
+        void ICodedOutputStream.WriteBoolArray(int fieldNumber, string fieldName, IEnumerable<bool> list)
+        {
+            WriteArray(FieldType.Bool, fieldName, list);
+        }
 
 
-        void ICodedOutputStream.WriteInt32Array(int fieldNumber, string fieldName, System.Collections.Generic.IEnumerable<int> list)
-        { WriteArray(FieldType.Int32, fieldName, list); }
+        void ICodedOutputStream.WriteInt32Array(int fieldNumber, string fieldName, IEnumerable<int> list)
+        {
+            WriteArray(FieldType.Int32, fieldName, list);
+        }
 
 
-        void ICodedOutputStream.WriteSInt32Array(int fieldNumber, string fieldName, System.Collections.Generic.IEnumerable<int> list)
-        { WriteArray(FieldType.SInt32, fieldName, list); }
+        void ICodedOutputStream.WriteSInt32Array(int fieldNumber, string fieldName, IEnumerable<int> list)
+        {
+            WriteArray(FieldType.SInt32, fieldName, list);
+        }
 
 
-        void ICodedOutputStream.WriteUInt32Array(int fieldNumber, string fieldName, System.Collections.Generic.IEnumerable<uint> list)
-        { WriteArray(FieldType.UInt32, fieldName, list); }
+        void ICodedOutputStream.WriteUInt32Array(int fieldNumber, string fieldName, IEnumerable<uint> list)
+        {
+            WriteArray(FieldType.UInt32, fieldName, list);
+        }
 
 
-        void ICodedOutputStream.WriteFixed32Array(int fieldNumber, string fieldName, System.Collections.Generic.IEnumerable<uint> list)
-        { WriteArray(FieldType.Fixed32, fieldName, list); }
+        void ICodedOutputStream.WriteFixed32Array(int fieldNumber, string fieldName, IEnumerable<uint> list)
+        {
+            WriteArray(FieldType.Fixed32, fieldName, list);
+        }
 
 
-        void ICodedOutputStream.WriteSFixed32Array(int fieldNumber, string fieldName, System.Collections.Generic.IEnumerable<int> list)
-        { WriteArray(FieldType.SFixed32, fieldName, list); }
+        void ICodedOutputStream.WriteSFixed32Array(int fieldNumber, string fieldName, IEnumerable<int> list)
+        {
+            WriteArray(FieldType.SFixed32, fieldName, list);
+        }
 
 
-        void ICodedOutputStream.WriteInt64Array(int fieldNumber, string fieldName, System.Collections.Generic.IEnumerable<long> list)
-        { WriteArray(FieldType.Int64, fieldName, list); }
+        void ICodedOutputStream.WriteInt64Array(int fieldNumber, string fieldName, IEnumerable<long> list)
+        {
+            WriteArray(FieldType.Int64, fieldName, list);
+        }
 
 
-        void ICodedOutputStream.WriteSInt64Array(int fieldNumber, string fieldName, System.Collections.Generic.IEnumerable<long> list)
-        { WriteArray(FieldType.SInt64, fieldName, list); }
+        void ICodedOutputStream.WriteSInt64Array(int fieldNumber, string fieldName, IEnumerable<long> list)
+        {
+            WriteArray(FieldType.SInt64, fieldName, list);
+        }
 
 
-        void ICodedOutputStream.WriteUInt64Array(int fieldNumber, string fieldName, System.Collections.Generic.IEnumerable<ulong> list)
-        { WriteArray(FieldType.UInt64, fieldName, list); }
+        void ICodedOutputStream.WriteUInt64Array(int fieldNumber, string fieldName, IEnumerable<ulong> list)
+        {
+            WriteArray(FieldType.UInt64, fieldName, list);
+        }
 
 
-        void ICodedOutputStream.WriteFixed64Array(int fieldNumber, string fieldName, System.Collections.Generic.IEnumerable<ulong> list)
-        { WriteArray(FieldType.Fixed64, fieldName, list); }
+        void ICodedOutputStream.WriteFixed64Array(int fieldNumber, string fieldName, IEnumerable<ulong> list)
+        {
+            WriteArray(FieldType.Fixed64, fieldName, list);
+        }
 
 
-        void ICodedOutputStream.WriteSFixed64Array(int fieldNumber, string fieldName, System.Collections.Generic.IEnumerable<long> list)
-        { WriteArray(FieldType.SFixed64, fieldName, list); }
+        void ICodedOutputStream.WriteSFixed64Array(int fieldNumber, string fieldName, IEnumerable<long> list)
+        {
+            WriteArray(FieldType.SFixed64, fieldName, list);
+        }
 
 
-        void ICodedOutputStream.WriteDoubleArray(int fieldNumber, string fieldName, System.Collections.Generic.IEnumerable<double> list)
-        { WriteArray(FieldType.Double, fieldName, list); }
+        void ICodedOutputStream.WriteDoubleArray(int fieldNumber, string fieldName, IEnumerable<double> list)
+        {
+            WriteArray(FieldType.Double, fieldName, list);
+        }
 
 
-        void ICodedOutputStream.WriteFloatArray(int fieldNumber, string fieldName, System.Collections.Generic.IEnumerable<float> list)
-        { WriteArray(FieldType.Float, fieldName, list); }
+        void ICodedOutputStream.WriteFloatArray(int fieldNumber, string fieldName, IEnumerable<float> list)
+        {
+            WriteArray(FieldType.Float, fieldName, list);
+        }
 
 
-        void ICodedOutputStream.WriteEnumArray<T>(int fieldNumber, string fieldName, System.Collections.Generic.IEnumerable<T> list)
-        { WriteArray(FieldType.Enum, fieldName, list); }
+        void ICodedOutputStream.WriteEnumArray<T>(int fieldNumber, string fieldName, IEnumerable<T> list)
+        {
+            WriteArray(FieldType.Enum, fieldName, list);
+        }
 
 
-        void ICodedOutputStream.WritePackedArray(FieldType fieldType, int fieldNumber, string fieldName, IEnumerable list)
-        { WriteArray(fieldType, fieldName, list); }
+        void ICodedOutputStream.WritePackedArray(FieldType fieldType, int fieldNumber, string fieldName,
+                                                 IEnumerable list)
+        {
+            WriteArray(fieldType, fieldName, list);
+        }
 
 
 
 
-        void ICodedOutputStream.WritePackedBoolArray(int fieldNumber, string fieldName, int computedSize, System.Collections.Generic.IEnumerable<bool> list)
-        { WriteArray(FieldType.Bool, fieldName, list); }
+        void ICodedOutputStream.WritePackedBoolArray(int fieldNumber, string fieldName, int computedSize,
+                                                     IEnumerable<bool> list)
+        {
+            WriteArray(FieldType.Bool, fieldName, list);
+        }
 
 
-        void ICodedOutputStream.WritePackedInt32Array(int fieldNumber, string fieldName, int computedSize, System.Collections.Generic.IEnumerable<int> list)
-        { WriteArray(FieldType.Int32, fieldName, list); }
+        void ICodedOutputStream.WritePackedInt32Array(int fieldNumber, string fieldName, int computedSize,
+                                                      IEnumerable<int> list)
+        {
+            WriteArray(FieldType.Int32, fieldName, list);
+        }
 
 
-        void ICodedOutputStream.WritePackedSInt32Array(int fieldNumber, string fieldName, int computedSize, System.Collections.Generic.IEnumerable<int> list)
-        { WriteArray(FieldType.SInt32, fieldName, list); }
+        void ICodedOutputStream.WritePackedSInt32Array(int fieldNumber, string fieldName, int computedSize,
+                                                       IEnumerable<int> list)
+        {
+            WriteArray(FieldType.SInt32, fieldName, list);
+        }
 
 
-        void ICodedOutputStream.WritePackedUInt32Array(int fieldNumber, string fieldName, int computedSize, System.Collections.Generic.IEnumerable<uint> list)
-        { WriteArray(FieldType.UInt32, fieldName, list); }
+        void ICodedOutputStream.WritePackedUInt32Array(int fieldNumber, string fieldName, int computedSize,
+                                                       IEnumerable<uint> list)
+        {
+            WriteArray(FieldType.UInt32, fieldName, list);
+        }
 
 
-        void ICodedOutputStream.WritePackedFixed32Array(int fieldNumber, string fieldName, int computedSize, System.Collections.Generic.IEnumerable<uint> list)
-        { WriteArray(FieldType.Fixed32, fieldName, list); }
+        void ICodedOutputStream.WritePackedFixed32Array(int fieldNumber, string fieldName, int computedSize,
+                                                        IEnumerable<uint> list)
+        {
+            WriteArray(FieldType.Fixed32, fieldName, list);
+        }
 
 
-        void ICodedOutputStream.WritePackedSFixed32Array(int fieldNumber, string fieldName, int computedSize, System.Collections.Generic.IEnumerable<int> list)
-        { WriteArray(FieldType.SFixed32, fieldName, list); }
+        void ICodedOutputStream.WritePackedSFixed32Array(int fieldNumber, string fieldName, int computedSize,
+                                                         IEnumerable<int> list)
+        {
+            WriteArray(FieldType.SFixed32, fieldName, list);
+        }
 
 
-        void ICodedOutputStream.WritePackedInt64Array(int fieldNumber, string fieldName, int computedSize, System.Collections.Generic.IEnumerable<long> list)
-        { WriteArray(FieldType.Int64, fieldName, list); }
+        void ICodedOutputStream.WritePackedInt64Array(int fieldNumber, string fieldName, int computedSize,
+                                                      IEnumerable<long> list)
+        {
+            WriteArray(FieldType.Int64, fieldName, list);
+        }
 
 
-        void ICodedOutputStream.WritePackedSInt64Array(int fieldNumber, string fieldName, int computedSize, System.Collections.Generic.IEnumerable<long> list)
-        { WriteArray(FieldType.SInt64, fieldName, list); }
+        void ICodedOutputStream.WritePackedSInt64Array(int fieldNumber, string fieldName, int computedSize,
+                                                       IEnumerable<long> list)
+        {
+            WriteArray(FieldType.SInt64, fieldName, list);
+        }
 
 
-        void ICodedOutputStream.WritePackedUInt64Array(int fieldNumber, string fieldName, int computedSize, System.Collections.Generic.IEnumerable<ulong> list)
-        { WriteArray(FieldType.UInt64, fieldName, list); }
+        void ICodedOutputStream.WritePackedUInt64Array(int fieldNumber, string fieldName, int computedSize,
+                                                       IEnumerable<ulong> list)
+        {
+            WriteArray(FieldType.UInt64, fieldName, list);
+        }
 
 
-        void ICodedOutputStream.WritePackedFixed64Array(int fieldNumber, string fieldName, int computedSize, System.Collections.Generic.IEnumerable<ulong> list)
-        { WriteArray(FieldType.Fixed64, fieldName, list); }
+        void ICodedOutputStream.WritePackedFixed64Array(int fieldNumber, string fieldName, int computedSize,
+                                                        IEnumerable<ulong> list)
+        {
+            WriteArray(FieldType.Fixed64, fieldName, list);
+        }
 
 
-        void ICodedOutputStream.WritePackedSFixed64Array(int fieldNumber, string fieldName, int computedSize, System.Collections.Generic.IEnumerable<long> list)
-        { WriteArray(FieldType.SFixed64, fieldName, list); }
+        void ICodedOutputStream.WritePackedSFixed64Array(int fieldNumber, string fieldName, int computedSize,
+                                                         IEnumerable<long> list)
+        {
+            WriteArray(FieldType.SFixed64, fieldName, list);
+        }
 
 
-        void ICodedOutputStream.WritePackedDoubleArray(int fieldNumber, string fieldName, int computedSize, System.Collections.Generic.IEnumerable<double> list)
-        { WriteArray(FieldType.Double, fieldName, list); }
+        void ICodedOutputStream.WritePackedDoubleArray(int fieldNumber, string fieldName, int computedSize,
+                                                       IEnumerable<double> list)
+        {
+            WriteArray(FieldType.Double, fieldName, list);
+        }
 
 
-        void ICodedOutputStream.WritePackedFloatArray(int fieldNumber, string fieldName, int computedSize, System.Collections.Generic.IEnumerable<float> list)
-        { WriteArray(FieldType.Float, fieldName, list); }
+        void ICodedOutputStream.WritePackedFloatArray(int fieldNumber, string fieldName, int computedSize,
+                                                      IEnumerable<float> list)
+        {
+            WriteArray(FieldType.Float, fieldName, list);
+        }
 
 
-        void ICodedOutputStream.WritePackedEnumArray<T>(int fieldNumber, string fieldName, int computedSize, System.Collections.Generic.IEnumerable<T> list)
-        { WriteArray(FieldType.Enum, fieldName, list); }
+        void ICodedOutputStream.WritePackedEnumArray<T>(int fieldNumber, string fieldName, int computedSize,
+                                                        IEnumerable<T> list)
+        {
+            WriteArray(FieldType.Enum, fieldName, list);
+        }
 
 
         #endregion
         #endregion
     }
     }
-}
+}

+ 35 - 16
src/ProtocolBuffers/Serialization/DictionaryReader.cs

@@ -1,6 +1,6 @@
 using System;
 using System;
 using System.Collections.Generic;
 using System.Collections.Generic;
-using System.Text;
+using System.Globalization;
 using Google.ProtocolBuffers.Descriptors;
 using Google.ProtocolBuffers.Descriptors;
 
 
 namespace Google.ProtocolBuffers.Serialization
 namespace Google.ProtocolBuffers.Serialization
@@ -54,23 +54,32 @@ namespace Google.ProtocolBuffers.Serialization
 
 
         private bool GetValue<T>(ref T value)
         private bool GetValue<T>(ref T value)
         {
         {
-            if (!_ready) return false;
+            if (!_ready)
+            {
+                return false;
+            }
 
 
             object obj = _input.Current.Value;
             object obj = _input.Current.Value;
             if (obj is T)
             if (obj is T)
-                value = (T)obj;
+            {
+                value = (T) obj;
+            }
             else
             else
             {
             {
-                try 
+                try
                 {
                 {
                     if (obj is IConvertible)
                     if (obj is IConvertible)
-                        value = (T)Convert.ChangeType(obj, typeof(T), System.Globalization.CultureInfo.InvariantCulture);
+                    {
+                        value = (T) Convert.ChangeType(obj, typeof (T), CultureInfo.InvariantCulture);
+                    }
                     else
                     else
-                        value = (T)obj;
+                    {
+                        value = (T) obj;
+                    }
                 }
                 }
                 catch
                 catch
                 {
                 {
-                    _ready = _input.MoveNext(); 
+                    _ready = _input.MoveNext();
                     return false;
                     return false;
                 }
                 }
             }
             }
@@ -83,7 +92,7 @@ namespace Google.ProtocolBuffers.Serialization
         /// </summary>
         /// </summary>
         protected override bool Read(ref bool value)
         protected override bool Read(ref bool value)
         {
         {
-            return GetValue(ref value); 
+            return GetValue(ref value);
         }
         }
 
 
         /// <summary>
         /// <summary>
@@ -186,35 +195,42 @@ namespace Google.ProtocolBuffers.Serialization
             object[] array = null;
             object[] array = null;
             if (GetValue(ref array))
             if (GetValue(ref array))
             {
             {
-                if (typeof(T) == typeof(ByteString))
+                if (typeof (T) == typeof (ByteString))
                 {
                 {
-                    ICollection<ByteString> output = (ICollection<ByteString>)items;
+                    ICollection<ByteString> output = (ICollection<ByteString>) items;
                     foreach (byte[] item in array)
                     foreach (byte[] item in array)
+                    {
                         output.Add(ByteString.CopyFrom(item));
                         output.Add(ByteString.CopyFrom(item));
+                    }
                 }
                 }
                 else
                 else
                 {
                 {
                     foreach (T item in array)
                     foreach (T item in array)
+                    {
                         items.Add(item);
                         items.Add(item);
+                    }
                 }
                 }
                 return true;
                 return true;
             }
             }
             return false;
             return false;
         }
         }
-        
+
         public override bool ReadEnumArray(string field, ICollection<object> items)
         public override bool ReadEnumArray(string field, ICollection<object> items)
         {
         {
             object[] array = null;
             object[] array = null;
             if (GetValue(ref array))
             if (GetValue(ref array))
             {
             {
                 foreach (object item in array)
                 foreach (object item in array)
+                {
                     items.Add(item);
                     items.Add(item);
+                }
                 return true;
                 return true;
             }
             }
             return false;
             return false;
         }
         }
 
 
-        public override bool ReadMessageArray<T>(string field, ICollection<T> items, IMessageLite messageType, ExtensionRegistry registry)
+        public override bool ReadMessageArray<T>(string field, ICollection<T> items, IMessageLite messageType,
+                                                 ExtensionRegistry registry)
         {
         {
             object[] array = null;
             object[] array = null;
             if (GetValue(ref array))
             if (GetValue(ref array))
@@ -223,14 +239,17 @@ namespace Google.ProtocolBuffers.Serialization
                 {
                 {
                     IBuilderLite builder = messageType.WeakCreateBuilderForType();
                     IBuilderLite builder = messageType.WeakCreateBuilderForType();
                     new DictionaryReader(item).Merge(builder);
                     new DictionaryReader(item).Merge(builder);
-                    items.Add((T)builder.WeakBuild());
+                    items.Add((T) builder.WeakBuild());
                 }
                 }
                 return true;
                 return true;
             }
             }
             return false;
             return false;
         }
         }
 
 
-        public override bool ReadGroupArray<T>(string field, ICollection<T> items, IMessageLite messageType, ExtensionRegistry registry)
-        { return ReadMessageArray(field, items, messageType, registry); }
+        public override bool ReadGroupArray<T>(string field, ICollection<T> items, IMessageLite messageType,
+                                               ExtensionRegistry registry)
+        {
+            return ReadMessageArray(field, items, messageType, registry);
+        }
     }
     }
-}
+}

+ 19 - 10
src/ProtocolBuffers/Serialization/DictionaryWriter.cs

@@ -1,4 +1,5 @@
 using System;
 using System;
+using System.Collections;
 using System.Collections.Generic;
 using System.Collections.Generic;
 using Google.ProtocolBuffers.Descriptors;
 using Google.ProtocolBuffers.Descriptors;
 
 
@@ -15,8 +16,9 @@ namespace Google.ProtocolBuffers.Serialization
         /// Constructs a writer using a new dictionary
         /// Constructs a writer using a new dictionary
         /// </summary>
         /// </summary>
         public DictionaryWriter()
         public DictionaryWriter()
-            : this(new Dictionary<string,object>(StringComparer.Ordinal))
-        { }
+            : this(new Dictionary<string, object>(StringComparer.Ordinal))
+        {
+        }
 
 
         /// <summary>
         /// <summary>
         /// Constructs a writer using an existing dictionary
         /// Constructs a writer using an existing dictionary
@@ -38,9 +40,12 @@ namespace Google.ProtocolBuffers.Serialization
         /// <summary>
         /// <summary>
         /// Accesses the dictionary that is backing this writer
         /// Accesses the dictionary that is backing this writer
         /// </summary>
         /// </summary>
-        public IDictionary<string, object> ToDictionary() { return _output; }
+        public IDictionary<string, object> ToDictionary()
+        {
+            return _output;
+        }
 
 
-            /// <summary>
+        /// <summary>
         /// Writes the message to the the formatted stream.
         /// Writes the message to the the formatted stream.
         /// </summary>
         /// </summary>
         public override void WriteMessage(IMessageLite message)
         public override void WriteMessage(IMessageLite message)
@@ -144,7 +149,7 @@ namespace Google.ProtocolBuffers.Serialization
         /// <summary>
         /// <summary>
         /// Writes an array of field values
         /// Writes an array of field values
         /// </summary>
         /// </summary>
-        protected override void WriteArray(FieldType fieldType, string field, System.Collections.IEnumerable items)
+        protected override void WriteArray(FieldType fieldType, string field, IEnumerable items)
         {
         {
             List<object> objects = new List<object>();
             List<object> objects = new List<object>();
             foreach (object o in items)
             foreach (object o in items)
@@ -155,18 +160,22 @@ namespace Google.ProtocolBuffers.Serialization
                     case FieldType.Message:
                     case FieldType.Message:
                         {
                         {
                             DictionaryWriter writer = Create();
                             DictionaryWriter writer = Create();
-                            writer.WriteMessage((IMessageLite)o);
+                            writer.WriteMessage((IMessageLite) o);
                             objects.Add(writer.ToDictionary());
                             objects.Add(writer.ToDictionary());
                         }
                         }
                         break;
                         break;
                     case FieldType.Bytes:
                     case FieldType.Bytes:
-                        objects.Add(((ByteString)o).ToByteArray());
+                        objects.Add(((ByteString) o).ToByteArray());
                         break;
                         break;
                     case FieldType.Enum:
                     case FieldType.Enum:
                         if (o is IEnumLite)
                         if (o is IEnumLite)
-                            objects.Add(((IEnumLite)o).Number);
+                        {
+                            objects.Add(((IEnumLite) o).Number);
+                        }
                         else
                         else
-                            objects.Add((int)o);
+                        {
+                            objects.Add((int) o);
+                        }
                         break;
                         break;
                     default:
                     default:
                         objects.Add(o);
                         objects.Add(o);
@@ -177,4 +186,4 @@ namespace Google.ProtocolBuffers.Serialization
             _output[field] = objects.ToArray();
             _output[field] = objects.ToArray();
         }
         }
     }
     }
-}
+}

+ 69 - 21
src/ProtocolBuffers/Serialization/JsonFormatReader.cs

@@ -13,28 +13,51 @@ namespace Google.ProtocolBuffers.Serialization
         private readonly JsonCursor _input;
         private readonly JsonCursor _input;
         private readonly Stack<int> _stopChar;
         private readonly Stack<int> _stopChar;
 
 
-        enum ReaderState { Start, BeginValue, EndValue, BeginObject, BeginArray }
-        string _current;
-        ReaderState _state;
+        private enum ReaderState
+        {
+            Start,
+            BeginValue,
+            EndValue,
+            BeginObject,
+            BeginArray
+        }
+
+        private string _current;
+        private ReaderState _state;
 
 
         /// <summary>
         /// <summary>
         /// Constructs a JsonFormatReader to parse Json into a message, this method does not use text encoding, all bytes MUST
         /// Constructs a JsonFormatReader to parse Json into a message, this method does not use text encoding, all bytes MUST
         /// represent ASCII character values.
         /// represent ASCII character values.
         /// </summary>
         /// </summary>
-        public static JsonFormatReader CreateInstance(Stream stream) { return new JsonFormatReader(JsonCursor.CreateInstance(stream)); }
+        public static JsonFormatReader CreateInstance(Stream stream)
+        {
+            return new JsonFormatReader(JsonCursor.CreateInstance(stream));
+        }
+
         /// <summary>
         /// <summary>
         /// Constructs a JsonFormatReader to parse Json into a message, this method does not use text encoding, all bytes MUST
         /// Constructs a JsonFormatReader to parse Json into a message, this method does not use text encoding, all bytes MUST
         /// represent ASCII character values.
         /// represent ASCII character values.
         /// </summary>
         /// </summary>
-        public static JsonFormatReader CreateInstance(byte[] bytes) { return new JsonFormatReader(JsonCursor.CreateInstance(bytes)); }
+        public static JsonFormatReader CreateInstance(byte[] bytes)
+        {
+            return new JsonFormatReader(JsonCursor.CreateInstance(bytes));
+        }
+
         /// <summary>
         /// <summary>
         /// Constructs a JsonFormatReader to parse Json into a message
         /// Constructs a JsonFormatReader to parse Json into a message
         /// </summary>
         /// </summary>
-        public static JsonFormatReader CreateInstance(string jsonText) { return new JsonFormatReader(JsonCursor.CreateInstance(jsonText)); }
+        public static JsonFormatReader CreateInstance(string jsonText)
+        {
+            return new JsonFormatReader(JsonCursor.CreateInstance(jsonText));
+        }
+
         /// <summary>
         /// <summary>
         /// Constructs a JsonFormatReader to parse Json into a message
         /// Constructs a JsonFormatReader to parse Json into a message
         /// </summary>
         /// </summary>
-        public static JsonFormatReader CreateInstance(TextReader input) { return new JsonFormatReader(JsonCursor.CreateInstance(input)); }
+        public static JsonFormatReader CreateInstance(TextReader input)
+        {
+            return new JsonFormatReader(JsonCursor.CreateInstance(input));
+        }
 
 
         /// <summary>
         /// <summary>
         /// Constructs a JsonFormatReader to parse Json into a message
         /// Constructs a JsonFormatReader to parse Json into a message
@@ -52,12 +75,16 @@ namespace Google.ProtocolBuffers.Serialization
         /// </summary>
         /// </summary>
         protected JsonFormatReader(TextReader input)
         protected JsonFormatReader(TextReader input)
             : this(JsonCursor.CreateInstance(input))
             : this(JsonCursor.CreateInstance(input))
-        { }
+        {
+        }
 
 
         /// <summary>
         /// <summary>
         /// Returns true if the reader is currently on an array element
         /// Returns true if the reader is currently on an array element
         /// </summary>
         /// </summary>
-        public bool IsArrayMessage { get { return _input.NextChar == '['; } }
+        public bool IsArrayMessage
+        {
+            get { return _input.NextChar == '['; }
+        }
 
 
         /// <summary>
         /// <summary>
         /// Returns an enumerator that is used to cursor over an array of messages
         /// Returns an enumerator that is used to cursor over an array of messages
@@ -68,7 +95,9 @@ namespace Google.ProtocolBuffers.Serialization
         public IEnumerable<JsonFormatReader> EnumerateArray()
         public IEnumerable<JsonFormatReader> EnumerateArray()
         {
         {
             foreach (string ignored in ForeachArrayItem(_current))
             foreach (string ignored in ForeachArrayItem(_current))
+            {
                 yield return this;
                 yield return this;
+            }
         }
         }
 
 
         /// <summary>
         /// <summary>
@@ -81,7 +110,7 @@ namespace Google.ProtocolBuffers.Serialization
 
 
             _state = ReaderState.BeginObject;
             _state = ReaderState.BeginObject;
             builder.WeakMergeFrom(this, registry);
             builder.WeakMergeFrom(this, registry);
-            _input.Consume((char)_stopChar.Pop());
+            _input.Consume((char) _stopChar.Pop());
             _state = ReaderState.EndValue;
             _state = ReaderState.EndValue;
             return builder;
             return builder;
         }
         }
@@ -106,18 +135,24 @@ namespace Google.ProtocolBuffers.Serialization
         protected override bool PeekNext(out string field)
         protected override bool PeekNext(out string field)
         {
         {
             field = _current;
             field = _current;
-            if(_state == ReaderState.BeginValue)
+            if (_state == ReaderState.BeginValue)
+            {
                 return true;
                 return true;
+            }
 
 
             int next = _input.NextChar;
             int next = _input.NextChar;
             if (next == _stopChar.Peek())
             if (next == _stopChar.Peek())
+            {
                 return false;
                 return false;
+            }
 
 
             _input.Assert(next != -1, "Unexpected end of file.");
             _input.Assert(next != -1, "Unexpected end of file.");
 
 
             //not sure about this yet, it will allow {, "a":true }
             //not sure about this yet, it will allow {, "a":true }
             if (_state == ReaderState.EndValue && !_input.TryConsume(','))
             if (_state == ReaderState.EndValue && !_input.TryConsume(','))
+            {
                 return false;
                 return false;
+            }
 
 
             field = _current = _input.ReadString();
             field = _current = _input.ReadString();
             _input.Consume(':');
             _input.Consume(':');
@@ -134,19 +169,31 @@ namespace Google.ProtocolBuffers.Serialization
             JsonCursor.JsType type = _input.ReadVariant(out temp);
             JsonCursor.JsType type = _input.ReadVariant(out temp);
             _state = ReaderState.EndValue;
             _state = ReaderState.EndValue;
 
 
-            _input.Assert(type != JsonCursor.JsType.Array && type != JsonCursor.JsType.Object, "Encountered {0} while expecting {1}", type, typeInfo);
+            _input.Assert(type != JsonCursor.JsType.Array && type != JsonCursor.JsType.Object,
+                          "Encountered {0} while expecting {1}", type, typeInfo);
             if (type == JsonCursor.JsType.Null)
             if (type == JsonCursor.JsType.Null)
+            {
                 return false;
                 return false;
-            if (type == JsonCursor.JsType.True) value = "1";
-            else if (type == JsonCursor.JsType.False) value = "0";
-            else value = temp as string;
+            }
+            if (type == JsonCursor.JsType.True)
+            {
+                value = "1";
+            }
+            else if (type == JsonCursor.JsType.False)
+            {
+                value = "0";
+            }
+            else
+            {
+                value = temp as string;
+            }
 
 
             //exponent representation of integer number:
             //exponent representation of integer number:
             if (value != null && type == JsonCursor.JsType.Number &&
             if (value != null && type == JsonCursor.JsType.Number &&
-                (typeInfo != typeof(double) && typeInfo != typeof(float)) &&
+                (typeInfo != typeof (double) && typeInfo != typeof (float)) &&
                 value.IndexOf("e", StringComparison.OrdinalIgnoreCase) > 0)
                 value.IndexOf("e", StringComparison.OrdinalIgnoreCase) > 0)
             {
             {
-                value = XmlConvert.ToString((long)Math.Round(XmlConvert.ToDouble(value), 0));
+                value = XmlConvert.ToString((long) Math.Round(XmlConvert.ToDouble(value), 0));
             }
             }
             return value != null;
             return value != null;
         }
         }
@@ -177,10 +224,12 @@ namespace Google.ProtocolBuffers.Serialization
             {
             {
                 _current = field;
                 _current = field;
                 yield return field;
                 yield return field;
-                if(!_input.TryConsume(','))
+                if (!_input.TryConsume(','))
+                {
                     break;
                     break;
+                }
             }
             }
-            _input.Consume((char)_stopChar.Pop());
+            _input.Consume((char) _stopChar.Pop());
             _state = ReaderState.EndValue;
             _state = ReaderState.EndValue;
         }
         }
 
 
@@ -192,6 +241,5 @@ namespace Google.ProtocolBuffers.Serialization
             Merge(builder, registry);
             Merge(builder, registry);
             return true;
             return true;
         }
         }
-
     }
     }
-}
+}

+ 140 - 36
src/ProtocolBuffers/Serialization/JsonFormatWriter.cs

@@ -1,4 +1,5 @@
 using System;
 using System;
+using System.Collections;
 using System.Collections.Generic;
 using System.Collections.Generic;
 using System.IO;
 using System.IO;
 using System.Text;
 using System.Text;
@@ -14,11 +15,12 @@ namespace Google.ProtocolBuffers.Serialization
     public abstract class JsonFormatWriter : AbstractTextWriter
     public abstract class JsonFormatWriter : AbstractTextWriter
     {
     {
         #region buffering implementations
         #region buffering implementations
+
         private class JsonTextWriter : JsonFormatWriter
         private class JsonTextWriter : JsonFormatWriter
         {
         {
             private readonly char[] _buffer;
             private readonly char[] _buffer;
             private TextWriter _output;
             private TextWriter _output;
-            int _bufferPos;
+            private int _bufferPos;
 
 
             public JsonTextWriter(TextWriter output)
             public JsonTextWriter(TextWriter output)
             {
             {
@@ -36,7 +38,9 @@ namespace Google.ProtocolBuffers.Serialization
                 Flush();
                 Flush();
 
 
                 if (_output != null)
                 if (_output != null)
+                {
                     return _output.ToString();
                     return _output.ToString();
+                }
 
 
                 return new String(_buffer, 0, _bufferPos);
                 return new String(_buffer, 0, _bufferPos);
             }
             }
@@ -46,7 +50,9 @@ namespace Google.ProtocolBuffers.Serialization
                 if (_bufferPos + len >= _buffer.Length)
                 if (_bufferPos + len >= _buffer.Length)
                 {
                 {
                     if (_output == null)
                     if (_output == null)
-                        _output = new StringWriter(new System.Text.StringBuilder(_buffer.Length * 2 + len));
+                    {
+                        _output = new StringWriter(new StringBuilder(_buffer.Length*2 + len));
+                    }
                     Flush();
                     Flush();
                 }
                 }
 
 
@@ -56,7 +62,9 @@ namespace Google.ProtocolBuffers.Serialization
                     {
                     {
                         int stop = offset + len;
                         int stop = offset + len;
                         for (int i = offset; i < stop; i++)
                         for (int i = offset; i < stop; i++)
+                        {
                             _buffer[_bufferPos++] = chars[i];
                             _buffer[_bufferPos++] = chars[i];
+                        }
                     }
                     }
                     else
                     else
                     {
                     {
@@ -65,13 +73,17 @@ namespace Google.ProtocolBuffers.Serialization
                     }
                     }
                 }
                 }
                 else
                 else
+                {
                     _output.Write(chars, offset, len);
                     _output.Write(chars, offset, len);
+                }
             }
             }
 
 
             protected override void WriteToOutput(char ch)
             protected override void WriteToOutput(char ch)
             {
             {
                 if (_bufferPos >= _buffer.Length)
                 if (_bufferPos >= _buffer.Length)
+                {
                     Flush();
                     Flush();
+                }
                 _buffer[_bufferPos++] = ch;
                 _buffer[_bufferPos++] = ch;
             }
             }
 
 
@@ -85,16 +97,17 @@ namespace Google.ProtocolBuffers.Serialization
                 base.Flush();
                 base.Flush();
             }
             }
         }
         }
+
         private class JsonStreamWriter : JsonFormatWriter
         private class JsonStreamWriter : JsonFormatWriter
         {
         {
 #if SILVERLIGHT2 || COMPACT_FRAMEWORK_35
 #if SILVERLIGHT2 || COMPACT_FRAMEWORK_35
             static readonly Encoding Encoding = Encoding.UTF8;
             static readonly Encoding Encoding = Encoding.UTF8;
 #else
 #else
-            static readonly Encoding Encoding = Encoding.ASCII;
+            private static readonly Encoding Encoding = Encoding.ASCII;
 #endif
 #endif
             private readonly byte[] _buffer;
             private readonly byte[] _buffer;
             private Stream _output;
             private Stream _output;
-            int _bufferPos;
+            private int _bufferPos;
 
 
             public JsonStreamWriter(Stream output)
             public JsonStreamWriter(Stream output)
             {
             {
@@ -107,7 +120,9 @@ namespace Google.ProtocolBuffers.Serialization
             protected override void WriteToOutput(char[] chars, int offset, int len)
             protected override void WriteToOutput(char[] chars, int offset, int len)
             {
             {
                 if (_bufferPos + len >= _buffer.Length)
                 if (_bufferPos + len >= _buffer.Length)
+                {
                     Flush();
                     Flush();
+                }
 
 
                 if (len < _buffer.Length)
                 if (len < _buffer.Length)
                 {
                 {
@@ -115,7 +130,9 @@ namespace Google.ProtocolBuffers.Serialization
                     {
                     {
                         int stop = offset + len;
                         int stop = offset + len;
                         for (int i = offset; i < stop; i++)
                         for (int i = offset; i < stop; i++)
-                            _buffer[_bufferPos++] = (byte)chars[i];
+                        {
+                            _buffer[_bufferPos++] = (byte) chars[i];
+                        }
                     }
                     }
                     else
                     else
                     {
                     {
@@ -132,8 +149,10 @@ namespace Google.ProtocolBuffers.Serialization
             protected override void WriteToOutput(char ch)
             protected override void WriteToOutput(char ch)
             {
             {
                 if (_bufferPos >= _buffer.Length)
                 if (_bufferPos >= _buffer.Length)
+                {
                     Flush();
                     Flush();
-                _buffer[_bufferPos++] = (byte)ch;
+                }
+                _buffer[_bufferPos++] = (byte) ch;
             }
             }
 
 
             public override void Flush()
             public override void Flush()
@@ -146,10 +165,12 @@ namespace Google.ProtocolBuffers.Serialization
                 base.Flush();
                 base.Flush();
             }
             }
         }
         }
+
         #endregion
         #endregion
 
 
         private readonly List<int> _counter;
         private readonly List<int> _counter;
         private bool _isArray;
         private bool _isArray;
+
         /// <summary>
         /// <summary>
         /// Constructs a JsonFormatWriter, use the ToString() member to extract the final Json on completion.
         /// Constructs a JsonFormatWriter, use the ToString() member to extract the final Json on completion.
         /// </summary>
         /// </summary>
@@ -161,26 +182,42 @@ namespace Google.ProtocolBuffers.Serialization
         /// <summary>
         /// <summary>
         /// Constructs a JsonFormatWriter, use ToString() to extract the final output
         /// Constructs a JsonFormatWriter, use ToString() to extract the final output
         /// </summary>
         /// </summary>
-        public static JsonFormatWriter CreateInstance() { return new JsonTextWriter(null); }
-            
+        public static JsonFormatWriter CreateInstance()
+        {
+            return new JsonTextWriter(null);
+        }
+
         /// <summary>
         /// <summary>
         /// Constructs a JsonFormatWriter to output to the given text writer
         /// Constructs a JsonFormatWriter to output to the given text writer
         /// </summary>
         /// </summary>
-        public static JsonFormatWriter CreateInstance(TextWriter output) { return new JsonTextWriter(output); }
+        public static JsonFormatWriter CreateInstance(TextWriter output)
+        {
+            return new JsonTextWriter(output);
+        }
 
 
         /// <summary>
         /// <summary>
         /// Constructs a JsonFormatWriter to output to the given stream
         /// Constructs a JsonFormatWriter to output to the given stream
         /// </summary>
         /// </summary>
-        public static JsonFormatWriter CreateInstance(Stream output) { return new JsonStreamWriter(output); }
+        public static JsonFormatWriter CreateInstance(Stream output)
+        {
+            return new JsonStreamWriter(output);
+        }
 
 
         /// <summary> Write to the output stream </summary>
         /// <summary> Write to the output stream </summary>
         protected void WriteToOutput(string format, params object[] args)
         protected void WriteToOutput(string format, params object[] args)
-        { WriteToOutput(String.Format(format, args)); }
+        {
+            WriteToOutput(String.Format(format, args));
+        }
+
         /// <summary> Write to the output stream </summary>
         /// <summary> Write to the output stream </summary>
         protected void WriteToOutput(string text)
         protected void WriteToOutput(string text)
-        { WriteToOutput(text.ToCharArray(), 0, text.Length); }
+        {
+            WriteToOutput(text.ToCharArray(), 0, text.Length);
+        }
+
         /// <summary> Write to the output stream </summary>
         /// <summary> Write to the output stream </summary>
         protected abstract void WriteToOutput(char ch);
         protected abstract void WriteToOutput(char ch);
+
         /// <summary> Write to the output stream </summary>
         /// <summary> Write to the output stream </summary>
         protected abstract void WriteToOutput(char[] chars, int offset, int len);
         protected abstract void WriteToOutput(char[] chars, int offset, int len);
 
 
@@ -195,19 +232,25 @@ namespace Google.ProtocolBuffers.Serialization
 
 
         /// <summary> Gets or sets the characters to use for the new-line, default = empty </summary>
         /// <summary> Gets or sets the characters to use for the new-line, default = empty </summary>
         public string NewLine { get; set; }
         public string NewLine { get; set; }
+
         /// <summary> Gets or sets the text to use for indenting, default = empty </summary>
         /// <summary> Gets or sets the text to use for indenting, default = empty </summary>
         public string Indent { get; set; }
         public string Indent { get; set; }
+
         /// <summary> Gets or sets the whitespace to use to separate the text, default = empty </summary>
         /// <summary> Gets or sets the whitespace to use to separate the text, default = empty </summary>
         public string Whitespace { get; set; }
         public string Whitespace { get; set; }
 
 
         private void Seperator()
         private void Seperator()
         {
         {
             if (_counter.Count == 0)
             if (_counter.Count == 0)
+            {
                 throw new InvalidOperationException("Missmatched open/close in Json writer.");
                 throw new InvalidOperationException("Missmatched open/close in Json writer.");
+            }
 
 
             int index = _counter.Count - 1;
             int index = _counter.Count - 1;
             if (_counter[index] > 0)
             if (_counter[index] > 0)
+            {
                 WriteToOutput(',');
                 WriteToOutput(',');
+            }
 
 
             WriteLine(String.Empty);
             WriteLine(String.Empty);
             _counter[index] = _counter[index] + 1;
             _counter[index] = _counter[index] + 1;
@@ -219,10 +262,14 @@ namespace Google.ProtocolBuffers.Serialization
             {
             {
                 WriteToOutput(NewLine);
                 WriteToOutput(NewLine);
                 for (int i = 1; i < _counter.Count; i++)
                 for (int i = 1; i < _counter.Count; i++)
+                {
                     WriteToOutput(Indent);
                     WriteToOutput(Indent);
+                }
             }
             }
-            else if(!String.IsNullOrEmpty(Whitespace))
+            else if (!String.IsNullOrEmpty(Whitespace))
+            {
                 WriteToOutput(Whitespace);
                 WriteToOutput(Whitespace);
+            }
 
 
             WriteToOutput(content);
             WriteToOutput(content);
         }
         }
@@ -237,7 +284,9 @@ namespace Google.ProtocolBuffers.Serialization
                 WriteToOutput('"');
                 WriteToOutput('"');
                 WriteToOutput(':');
                 WriteToOutput(':');
                 if (!String.IsNullOrEmpty(Whitespace))
                 if (!String.IsNullOrEmpty(Whitespace))
+                {
                     WriteToOutput(Whitespace);
                     WriteToOutput(Whitespace);
+                }
             }
             }
         }
         }
 
 
@@ -250,23 +299,44 @@ namespace Google.ProtocolBuffers.Serialization
             while (pos < len)
             while (pos < len)
             {
             {
                 int next = pos;
                 int next = pos;
-                while (next < len && text[next] >= 32 && text[next] < 127 && text[next] != '\\' && text[next] != '/' && text[next] != '"')
+                while (next < len && text[next] >= 32 && text[next] < 127 && text[next] != '\\' && text[next] != '/' &&
+                       text[next] != '"')
+                {
                     next++;
                     next++;
+                }
                 WriteToOutput(text, pos, next - pos);
                 WriteToOutput(text, pos, next - pos);
                 if (next < len)
                 if (next < len)
                 {
                 {
                     switch (text[next])
                     switch (text[next])
                     {
                     {
-                        case '"': WriteToOutput(@"\"""); break;
-                        case '\\': WriteToOutput(@"\\"); break;
-                        //odd at best to escape '/', most Json implementations don't, but it is defined in the rfc-4627
-                        case '/': WriteToOutput(@"\/"); break; 
-                        case '\b': WriteToOutput(@"\b"); break;
-                        case '\f': WriteToOutput(@"\f"); break;
-                        case '\n': WriteToOutput(@"\n"); break;
-                        case '\r': WriteToOutput(@"\r"); break;
-                        case '\t': WriteToOutput(@"\t"); break;
-                        default: WriteToOutput(@"\u{0:x4}", (int)text[next]); break;
+                        case '"':
+                            WriteToOutput(@"\""");
+                            break;
+                        case '\\':
+                            WriteToOutput(@"\\");
+                            break;
+                            //odd at best to escape '/', most Json implementations don't, but it is defined in the rfc-4627
+                        case '/':
+                            WriteToOutput(@"\/");
+                            break;
+                        case '\b':
+                            WriteToOutput(@"\b");
+                            break;
+                        case '\f':
+                            WriteToOutput(@"\f");
+                            break;
+                        case '\n':
+                            WriteToOutput(@"\n");
+                            break;
+                        case '\r':
+                            WriteToOutput(@"\r");
+                            break;
+                        case '\t':
+                            WriteToOutput(@"\t");
+                            break;
+                        default:
+                            WriteToOutput(@"\u{0:x4}", (int) text[next]);
+                            break;
                     }
                     }
                     next++;
                     next++;
                 }
                 }
@@ -280,15 +350,22 @@ namespace Google.ProtocolBuffers.Serialization
         protected override void WriteAsText(string field, string textValue, object typedValue)
         protected override void WriteAsText(string field, string textValue, object typedValue)
         {
         {
             WriteName(field);
             WriteName(field);
-            if(typedValue is bool || typedValue is int || typedValue is uint || typedValue is long || typedValue is ulong || typedValue is double || typedValue is float)
+            if (typedValue is bool || typedValue is int || typedValue is uint || typedValue is long ||
+                typedValue is ulong || typedValue is double || typedValue is float)
+            {
                 WriteToOutput(textValue);
                 WriteToOutput(textValue);
+            }
             else
             else
             {
             {
                 WriteToOutput('"');
                 WriteToOutput('"');
                 if (typedValue is string)
                 if (typedValue is string)
+                {
                     EncodeText(textValue);
                     EncodeText(textValue);
+                }
                 else
                 else
+                {
                     WriteToOutput(textValue);
                     WriteToOutput(textValue);
+                }
                 WriteToOutput('"');
                 WriteToOutput('"');
             }
             }
         }
         }
@@ -299,7 +376,9 @@ namespace Google.ProtocolBuffers.Serialization
         protected override void Write(string field, double value)
         protected override void Write(string field, double value)
         {
         {
             if (double.IsNaN(value) || double.IsNegativeInfinity(value) || double.IsPositiveInfinity(value))
             if (double.IsNaN(value) || double.IsNegativeInfinity(value) || double.IsPositiveInfinity(value))
+            {
                 throw new InvalidOperationException("This format does not support NaN, Infinity, or -Infinity");
                 throw new InvalidOperationException("This format does not support NaN, Infinity, or -Infinity");
+            }
             base.Write(field, value);
             base.Write(field, value);
         }
         }
 
 
@@ -309,7 +388,9 @@ namespace Google.ProtocolBuffers.Serialization
         protected override void Write(string field, float value)
         protected override void Write(string field, float value)
         {
         {
             if (float.IsNaN(value) || float.IsNegativeInfinity(value) || float.IsPositiveInfinity(value))
             if (float.IsNaN(value) || float.IsNegativeInfinity(value) || float.IsPositiveInfinity(value))
+            {
                 throw new InvalidOperationException("This format does not support NaN, Infinity, or -Infinity");
                 throw new InvalidOperationException("This format does not support NaN, Infinity, or -Infinity");
+            }
             base.Write(field, value);
             base.Write(field, value);
         }
         }
 
 
@@ -322,11 +403,23 @@ namespace Google.ProtocolBuffers.Serialization
         /// <summary>
         /// <summary>
         /// Writes an array of field values
         /// Writes an array of field values
         /// </summary>
         /// </summary>
-        protected override void WriteArray(FieldType type, string field, System.Collections.IEnumerable items)
+        protected override void WriteArray(FieldType type, string field, IEnumerable items)
         {
         {
-            System.Collections.IEnumerator enumerator = items.GetEnumerator();
-            try { if (!enumerator.MoveNext()) return; }
-            finally { if (enumerator is IDisposable) ((IDisposable)enumerator).Dispose(); }
+            IEnumerator enumerator = items.GetEnumerator();
+            try
+            {
+                if (!enumerator.MoveNext())
+                {
+                    return;
+                }
+            }
+            finally
+            {
+                if (enumerator is IDisposable)
+                {
+                    ((IDisposable) enumerator).Dispose();
+                }
+            }
 
 
             WriteName(field);
             WriteName(field);
             WriteToOutput("[");
             WriteToOutput("[");
@@ -352,7 +445,10 @@ namespace Google.ProtocolBuffers.Serialization
         /// </summary>
         /// </summary>
         public override void WriteMessage(IMessageLite message)
         public override void WriteMessage(IMessageLite message)
         {
         {
-            if (_isArray) Seperator();
+            if (_isArray)
+            {
+                Seperator();
+            }
             WriteToOutput("{");
             WriteToOutput("{");
             _counter.Add(0);
             _counter.Add(0);
             message.WriteTo(this);
             message.WriteTo(this);
@@ -371,9 +467,10 @@ namespace Google.ProtocolBuffers.Serialization
         ///         writer.WriteMessage(m);
         ///         writer.WriteMessage(m);
         /// </code>
         /// </code>
         /// </example>
         /// </example>
-        public sealed class JsonArray : IDisposable 
+        public sealed class JsonArray : IDisposable
         {
         {
-            JsonFormatWriter _writer;
+            private JsonFormatWriter _writer;
+
             internal JsonArray(JsonFormatWriter writer)
             internal JsonArray(JsonFormatWriter writer)
             {
             {
                 _writer = writer;
                 _writer = writer;
@@ -384,7 +481,7 @@ namespace Google.ProtocolBuffers.Serialization
             /// <summary>
             /// <summary>
             /// Causes the end of the array character to be written.
             /// Causes the end of the array character to be written.
             /// </summary>
             /// </summary>
-            void EndArray() 
+            private void EndArray()
             {
             {
                 if (_writer != null)
                 if (_writer != null)
                 {
                 {
@@ -392,9 +489,13 @@ namespace Google.ProtocolBuffers.Serialization
                     _writer.WriteLine("]");
                     _writer.WriteLine("]");
                     _writer.Flush();
                     _writer.Flush();
                 }
                 }
-                _writer = null; 
+                _writer = null;
+            }
+
+            void IDisposable.Dispose()
+            {
+                EndArray();
             }
             }
-            void IDisposable.Dispose() { EndArray(); }
         }
         }
 
 
         /// <summary>
         /// <summary>
@@ -409,7 +510,10 @@ namespace Google.ProtocolBuffers.Serialization
         /// </example>
         /// </example>
         public JsonArray StartArray()
         public JsonArray StartArray()
         {
         {
-            if (_isArray) Seperator();
+            if (_isArray)
+            {
+                Seperator();
+            }
             _isArray = true;
             _isArray = true;
             return new JsonArray(this);
             return new JsonArray(this);
         }
         }

+ 147 - 37
src/ProtocolBuffers/Serialization/JsonTextCursor.cs

@@ -1,20 +1,30 @@
 using System;
 using System;
 using System.Collections.Generic;
 using System.Collections.Generic;
+using System.Diagnostics;
 using System.Globalization;
 using System.Globalization;
 using System.IO;
 using System.IO;
-using System.Text;
 
 
 namespace Google.ProtocolBuffers.Serialization
 namespace Google.ProtocolBuffers.Serialization
 {
 {
     /// <summary>
     /// <summary>
     /// JSon Tokenizer used by JsonFormatReader
     /// JSon Tokenizer used by JsonFormatReader
     /// </summary>
     /// </summary>
-    abstract class JsonCursor
+    internal abstract class JsonCursor
     {
     {
-        public enum JsType { String, Number, Object, Array, True, False, Null }
+        public enum JsType
+        {
+            String,
+            Number,
+            Object,
+            Array,
+            True,
+            False,
+            Null
+        }
 
 
         #region Buffering implementations
         #region Buffering implementations
-        class JsonStreamCursor : JsonCursor
+
+        private class JsonStreamCursor : JsonCursor
         {
         {
             private readonly byte[] _buffer;
             private readonly byte[] _buffer;
             private int _bufferPos;
             private int _bufferPos;
@@ -25,6 +35,7 @@ namespace Google.ProtocolBuffers.Serialization
                 _input = input;
                 _input = input;
                 _next = _input.ReadByte();
                 _next = _input.ReadByte();
             }
             }
+
             public JsonStreamCursor(byte[] input)
             public JsonStreamCursor(byte[] input)
             {
             {
                 _input = null;
                 _input = null;
@@ -35,11 +46,17 @@ namespace Google.ProtocolBuffers.Serialization
             protected override int Peek()
             protected override int Peek()
             {
             {
                 if (_input != null)
                 if (_input != null)
+                {
                     return _next;
                     return _next;
+                }
                 else if (_bufferPos < _buffer.Length)
                 else if (_bufferPos < _buffer.Length)
+                {
                     return _buffer[_bufferPos];
                     return _buffer[_bufferPos];
+                }
                 else
                 else
+                {
                     return -1;
                     return -1;
+                }
             }
             }
 
 
             protected override int Read()
             protected override int Read()
@@ -51,13 +68,17 @@ namespace Google.ProtocolBuffers.Serialization
                     return result;
                     return result;
                 }
                 }
                 else if (_bufferPos < _buffer.Length)
                 else if (_bufferPos < _buffer.Length)
+                {
                     return _buffer[_bufferPos++];
                     return _buffer[_bufferPos++];
+                }
                 else
                 else
+                {
                     return -1;
                     return -1;
+                }
             }
             }
         }
         }
 
 
-        class JsonTextCursor : JsonCursor
+        private class JsonTextCursor : JsonCursor
         {
         {
             private readonly char[] _buffer;
             private readonly char[] _buffer;
             private int _bufferPos;
             private int _bufferPos;
@@ -80,55 +101,95 @@ namespace Google.ProtocolBuffers.Serialization
             protected override int Peek()
             protected override int Peek()
             {
             {
                 if (_input != null)
                 if (_input != null)
+                {
                     return _input.Peek();
                     return _input.Peek();
+                }
                 else if (_bufferPos < _buffer.Length)
                 else if (_bufferPos < _buffer.Length)
+                {
                     return _buffer[_bufferPos];
                     return _buffer[_bufferPos];
+                }
                 else
                 else
+                {
                     return -1;
                     return -1;
+                }
             }
             }
 
 
             protected override int Read()
             protected override int Read()
             {
             {
                 if (_input != null)
                 if (_input != null)
+                {
                     return _input.Read();
                     return _input.Read();
+                }
                 else if (_bufferPos < _buffer.Length)
                 else if (_bufferPos < _buffer.Length)
+                {
                     return _buffer[_bufferPos++];
                     return _buffer[_bufferPos++];
+                }
                 else
                 else
+                {
                     return -1;
                     return -1;
+                }
             }
             }
         }
         }
+
         #endregion
         #endregion
 
 
         protected int _next;
         protected int _next;
         private int _lineNo, _linePos;
         private int _lineNo, _linePos;
 
 
-        public static JsonCursor CreateInstance(byte[] input) { return new JsonStreamCursor(input); }
-        public static JsonCursor CreateInstance(Stream input) { return new JsonStreamCursor(input); }
-        public static JsonCursor CreateInstance(string input) { return new JsonTextCursor(input.ToCharArray()); }
-        public static JsonCursor CreateInstance(TextReader input) { return new JsonTextCursor(input); }
+        public static JsonCursor CreateInstance(byte[] input)
+        {
+            return new JsonStreamCursor(input);
+        }
+
+        public static JsonCursor CreateInstance(Stream input)
+        {
+            return new JsonStreamCursor(input);
+        }
+
+        public static JsonCursor CreateInstance(string input)
+        {
+            return new JsonTextCursor(input.ToCharArray());
+        }
+
+        public static JsonCursor CreateInstance(TextReader input)
+        {
+            return new JsonTextCursor(input);
+        }
 
 
         protected JsonCursor()
         protected JsonCursor()
         {
         {
             _lineNo = 1;
             _lineNo = 1;
             _linePos = 0;
             _linePos = 0;
         }
         }
-        
+
         /// <summary>Returns the next character without actually 'reading' it</summary>
         /// <summary>Returns the next character without actually 'reading' it</summary>
         protected abstract int Peek();
         protected abstract int Peek();
+
         /// <summary>Reads the next character in the input</summary>
         /// <summary>Reads the next character in the input</summary>
         protected abstract int Read();
         protected abstract int Read();
 
 
-        public Char NextChar { get { SkipWhitespace(); return (char)_next; } }
+        public Char NextChar
+        {
+            get
+            {
+                SkipWhitespace();
+                return (char) _next;
+            }
+        }
 
 
         #region Assert(...)
         #region Assert(...)
-        [System.Diagnostics.DebuggerNonUserCode]
+
+        [DebuggerNonUserCode]
         private string CharDisplay(int ch)
         private string CharDisplay(int ch)
         {
         {
-            return ch == -1 ? "EOF" :
-                (ch > 32 && ch < 127) ? String.Format("'{0}'", (char)ch) :
-                String.Format("'\\u{0:x4}'", ch);
+            return ch == -1
+                       ? "EOF"
+                       : (ch > 32 && ch < 127)
+                             ? String.Format("'{0}'", (char) ch)
+                             : String.Format("'\\u{0:x4}'", ch);
         }
         }
-        [System.Diagnostics.DebuggerNonUserCode]
+
+        [DebuggerNonUserCode]
         private void Assert(bool cond, char expected)
         private void Assert(bool cond, char expected)
         {
         {
             if (!cond)
             if (!cond)
@@ -136,13 +197,14 @@ namespace Google.ProtocolBuffers.Serialization
                 throw new FormatException(
                 throw new FormatException(
                     String.Format(CultureInfo.InvariantCulture,
                     String.Format(CultureInfo.InvariantCulture,
                                   "({0}:{1}) error: Unexpected token {2}, expected: {3}.",
                                   "({0}:{1}) error: Unexpected token {2}, expected: {3}.",
-                                  _lineNo, _linePos, 
+                                  _lineNo, _linePos,
                                   CharDisplay(_next),
                                   CharDisplay(_next),
                                   CharDisplay(expected)
                                   CharDisplay(expected)
                         ));
                         ));
             }
             }
         }
         }
-        [System.Diagnostics.DebuggerNonUserCode]
+
+        [DebuggerNonUserCode]
         public void Assert(bool cond, string message)
         public void Assert(bool cond, string message)
         {
         {
             if (!cond)
             if (!cond)
@@ -152,18 +214,22 @@ namespace Google.ProtocolBuffers.Serialization
                                   "({0},{1}) error: {2}", _lineNo, _linePos, message));
                                   "({0},{1}) error: {2}", _lineNo, _linePos, message));
             }
             }
         }
         }
-        [System.Diagnostics.DebuggerNonUserCode]
+
+        [DebuggerNonUserCode]
         public void Assert(bool cond, string format, params object[] args)
         public void Assert(bool cond, string format, params object[] args)
         {
         {
             if (!cond)
             if (!cond)
             {
             {
                 if (args != null && args.Length > 0)
                 if (args != null && args.Length > 0)
+                {
                     format = String.Format(format, args);
                     format = String.Format(format, args);
+                }
                 throw new FormatException(
                 throw new FormatException(
                     String.Format(CultureInfo.InvariantCulture,
                     String.Format(CultureInfo.InvariantCulture,
                                   "({0},{1}) error: {2}", _lineNo, _linePos, format));
                                   "({0},{1}) error: {2}", _lineNo, _linePos, format));
             }
             }
         }
         }
+
         #endregion
         #endregion
 
 
         private char ReadChar()
         private char ReadChar()
@@ -180,10 +246,14 @@ namespace Google.ProtocolBuffers.Serialization
                 _linePos++;
                 _linePos++;
             }
             }
             _next = Peek();
             _next = Peek();
-            return (char)ch;
+            return (char) ch;
+        }
+
+        public void Consume(char ch)
+        {
+            Assert(TryConsume(ch), ch);
         }
         }
 
 
-        public void Consume(char ch) { Assert(TryConsume(ch), ch); }
         public bool TryConsume(char ch)
         public bool TryConsume(char ch)
         {
         {
             SkipWhitespace();
             SkipWhitespace();
@@ -200,7 +270,9 @@ namespace Google.ProtocolBuffers.Serialization
             SkipWhitespace();
             SkipWhitespace();
 
 
             foreach (char ch in sequence)
             foreach (char ch in sequence)
+            {
                 Assert(ch == ReadChar(), "Expected token '{0}'.", sequence);
                 Assert(ch == ReadChar(), "Expected token '{0}'.", sequence);
+            }
         }
         }
 
 
         public void SkipWhitespace()
         public void SkipWhitespace()
@@ -208,8 +280,10 @@ namespace Google.ProtocolBuffers.Serialization
             int chnext = _next;
             int chnext = _next;
             while (chnext != -1)
             while (chnext != -1)
             {
             {
-                if (!Char.IsWhiteSpace((char)chnext))
+                if (!Char.IsWhiteSpace((char) chnext))
+                {
                     break;
                     break;
+                }
                 ReadChar();
                 ReadChar();
                 chnext = _next;
                 chnext = _next;
             }
             }
@@ -224,26 +298,39 @@ namespace Google.ProtocolBuffers.Serialization
             {
             {
                 if (_next == '\\')
                 if (_next == '\\')
                 {
                 {
-                    Consume('\\');//skip the escape
+                    Consume('\\'); //skip the escape
                     char ch = ReadChar();
                     char ch = ReadChar();
                     switch (ch)
                     switch (ch)
                     {
                     {
-                        case 'b': sb.Add('\b'); break;
-                        case 'f': sb.Add('\f'); break;
-                        case 'n': sb.Add('\n'); break;
-                        case 'r': sb.Add('\r'); break;
-                        case 't': sb.Add('\t'); break;
+                        case 'b':
+                            sb.Add('\b');
+                            break;
+                        case 'f':
+                            sb.Add('\f');
+                            break;
+                        case 'n':
+                            sb.Add('\n');
+                            break;
+                        case 'r':
+                            sb.Add('\r');
+                            break;
+                        case 't':
+                            sb.Add('\t');
+                            break;
                         case 'u':
                         case 'u':
                             {
                             {
-                                string hex = new string(new char[] { ReadChar(), ReadChar(), ReadChar(), ReadChar() });
+                                string hex = new string(new char[] {ReadChar(), ReadChar(), ReadChar(), ReadChar()});
                                 int result;
                                 int result;
-                                Assert(int.TryParse(hex, NumberStyles.AllowHexSpecifier, CultureInfo.InvariantCulture, out result),
-                                       "Expected a 4-character hex specifier.");
-                                sb.Add((char)result);
+                                Assert(
+                                    int.TryParse(hex, NumberStyles.AllowHexSpecifier, CultureInfo.InvariantCulture,
+                                                 out result),
+                                    "Expected a 4-character hex specifier.");
+                                sb.Add((char) result);
                                 break;
                                 break;
                             }
                             }
                         default:
                         default:
-                            sb.Add(ch); break;
+                            sb.Add(ch);
+                            break;
                     }
                     }
                 }
                 }
                 else
                 else
@@ -261,18 +348,26 @@ namespace Google.ProtocolBuffers.Serialization
             SkipWhitespace();
             SkipWhitespace();
             List<Char> sb = new List<char>(24);
             List<Char> sb = new List<char>(24);
             if (_next == '-')
             if (_next == '-')
+            {
                 sb.Add(ReadChar());
                 sb.Add(ReadChar());
+            }
             Assert(_next >= '0' && _next <= '9', "Expected a numeric type.");
             Assert(_next >= '0' && _next <= '9', "Expected a numeric type.");
             while ((_next >= '0' && _next <= '9') || _next == '.')
             while ((_next >= '0' && _next <= '9') || _next == '.')
+            {
                 sb.Add(ReadChar());
                 sb.Add(ReadChar());
+            }
             if (_next == 'e' || _next == 'E')
             if (_next == 'e' || _next == 'E')
             {
             {
                 sb.Add(ReadChar());
                 sb.Add(ReadChar());
                 if (_next == '-' || _next == '+')
                 if (_next == '-' || _next == '+')
+                {
                     sb.Add(ReadChar());
                     sb.Add(ReadChar());
+                }
                 Assert(_next >= '0' && _next <= '9', "Expected a numeric type.");
                 Assert(_next >= '0' && _next <= '9', "Expected a numeric type.");
                 while (_next >= '0' && _next <= '9')
                 while (_next >= '0' && _next <= '9')
+                {
                     sb.Add(ReadChar());
                     sb.Add(ReadChar());
+                }
             }
             }
             return new String(sb.ToArray());
             return new String(sb.ToArray());
         }
         }
@@ -282,10 +377,21 @@ namespace Google.ProtocolBuffers.Serialization
             SkipWhitespace();
             SkipWhitespace();
             switch (_next)
             switch (_next)
             {
             {
-                case 'n': Consume("null"); value = null; return JsType.Null;
-                case 't': Consume("true"); value = true; return JsType.True;
-                case 'f': Consume("false"); value = false; return JsType.False;
-                case '"': value = ReadString(); return JsType.String;
+                case 'n':
+                    Consume("null");
+                    value = null;
+                    return JsType.Null;
+                case 't':
+                    Consume("true");
+                    value = true;
+                    return JsType.True;
+                case 'f':
+                    Consume("false");
+                    value = false;
+                    return JsType.False;
+                case '"':
+                    value = ReadString();
+                    return JsType.String;
                 case '{':
                 case '{':
                     {
                     {
                         Consume('{');
                         Consume('{');
@@ -296,7 +402,9 @@ namespace Google.ProtocolBuffers.Serialization
                             object tmp;
                             object tmp;
                             ReadVariant(out tmp);
                             ReadVariant(out tmp);
                             if (!TryConsume(','))
                             if (!TryConsume(','))
+                            {
                                 break;
                                 break;
+                            }
                         }
                         }
                         Consume('}');
                         Consume('}');
                         value = null;
                         value = null;
@@ -312,7 +420,9 @@ namespace Google.ProtocolBuffers.Serialization
                             ReadVariant(out tmp);
                             ReadVariant(out tmp);
                             values.Add(tmp);
                             values.Add(tmp);
                             if (!TryConsume(','))
                             if (!TryConsume(','))
+                            {
                                 break;
                                 break;
+                            }
                         }
                         }
                         Consume(']');
                         Consume(']');
                         value = values.ToArray();
                         value = values.ToArray();

+ 74 - 21
src/ProtocolBuffers/Serialization/XmlFormatReader.cs

@@ -2,7 +2,6 @@
 using System.Collections.Generic;
 using System.Collections.Generic;
 using System.IO;
 using System.IO;
 using System.Xml;
 using System.Xml;
-using Google.ProtocolBuffers.Descriptors;
 
 
 namespace Google.ProtocolBuffers.Serialization
 namespace Google.ProtocolBuffers.Serialization
 {
 {
@@ -17,31 +16,55 @@ namespace Google.ProtocolBuffers.Serialization
         private readonly XmlReader _input;
         private readonly XmlReader _input;
         private string _rootElementName;
         private string _rootElementName;
 
 
-        static XmlReaderSettings DefaultSettings
+        private static XmlReaderSettings DefaultSettings
         {
         {
-            get { return new XmlReaderSettings() { CheckCharacters=false, IgnoreComments=true, IgnoreProcessingInstructions = true }; }
+            get
+            {
+                return new XmlReaderSettings()
+                           {CheckCharacters = false, IgnoreComments = true, IgnoreProcessingInstructions = true};
+            }
         }
         }
 
 
         /// <summary>
         /// <summary>
         /// Constructs the XmlFormatReader using the stream provided as the xml
         /// Constructs the XmlFormatReader using the stream provided as the xml
         /// </summary>
         /// </summary>
-        public static XmlFormatReader CreateInstance(byte[] input) { return new XmlFormatReader(XmlReader.Create(new MemoryStream(input, false), DefaultSettings)); }
+        public static XmlFormatReader CreateInstance(byte[] input)
+        {
+            return new XmlFormatReader(XmlReader.Create(new MemoryStream(input, false), DefaultSettings));
+        }
+
         /// <summary>
         /// <summary>
         /// Constructs the XmlFormatReader using the stream provided as the xml
         /// Constructs the XmlFormatReader using the stream provided as the xml
         /// </summary>
         /// </summary>
-        public static XmlFormatReader CreateInstance(Stream input) { return new XmlFormatReader(XmlReader.Create(input, DefaultSettings)); }
+        public static XmlFormatReader CreateInstance(Stream input)
+        {
+            return new XmlFormatReader(XmlReader.Create(input, DefaultSettings));
+        }
+
         /// <summary>
         /// <summary>
         /// Constructs the XmlFormatReader using the string provided as the xml to be read
         /// Constructs the XmlFormatReader using the string provided as the xml to be read
         /// </summary>
         /// </summary>
-        public static XmlFormatReader CreateInstance(String input) { return new XmlFormatReader(XmlReader.Create(new StringReader(input), DefaultSettings)); }
+        public static XmlFormatReader CreateInstance(String input)
+        {
+            return new XmlFormatReader(XmlReader.Create(new StringReader(input), DefaultSettings));
+        }
+
         /// <summary>
         /// <summary>
         /// Constructs the XmlFormatReader using the xml in the TextReader
         /// Constructs the XmlFormatReader using the xml in the TextReader
         /// </summary>
         /// </summary>
-        public static XmlFormatReader CreateInstance(TextReader input) { return new XmlFormatReader(XmlReader.Create(input, DefaultSettings)); }
+        public static XmlFormatReader CreateInstance(TextReader input)
+        {
+            return new XmlFormatReader(XmlReader.Create(input, DefaultSettings));
+        }
+
         /// <summary>
         /// <summary>
         /// Constructs the XmlFormatReader with the XmlReader
         /// Constructs the XmlFormatReader with the XmlReader
         /// </summary>
         /// </summary>
-        public static XmlFormatReader CreateInstance(XmlReader input) { return new XmlFormatReader(input); }
+        public static XmlFormatReader CreateInstance(XmlReader input)
+        {
+            return new XmlFormatReader(input);
+        }
+
         /// <summary>
         /// <summary>
         /// Constructs the XmlFormatReader with the XmlReader and options
         /// Constructs the XmlFormatReader with the XmlReader and options
         /// </summary>
         /// </summary>
@@ -51,23 +74,32 @@ namespace Google.ProtocolBuffers.Serialization
             _rootElementName = DefaultRootElementName;
             _rootElementName = DefaultRootElementName;
             Options = XmlReaderOptions.None;
             Options = XmlReaderOptions.None;
         }
         }
-        
+
         /// <summary>
         /// <summary>
         /// Gets or sets the options to use when reading the xml
         /// Gets or sets the options to use when reading the xml
         /// </summary>
         /// </summary>
         public XmlReaderOptions Options { get; set; }
         public XmlReaderOptions Options { get; set; }
+
         /// <summary>
         /// <summary>
         /// Sets the options to use while generating the XML
         /// Sets the options to use while generating the XML
         /// </summary>
         /// </summary>
-        public XmlFormatReader SetOptions(XmlReaderOptions options) { Options = options; return this; }
+        public XmlFormatReader SetOptions(XmlReaderOptions options)
+        {
+            Options = options;
+            return this;
+        }
 
 
         /// <summary>
         /// <summary>
         /// Gets or sets the default element name to use when using the Merge&lt;TBuilder>()
         /// Gets or sets the default element name to use when using the Merge&lt;TBuilder>()
         /// </summary>
         /// </summary>
-        public string RootElementName 
+        public string RootElementName
         {
         {
-            get { return _rootElementName; } 
-            set { ThrowHelper.ThrowIfNull(value, "RootElementName"); _rootElementName = value; } 
+            get { return _rootElementName; }
+            set
+            {
+                ThrowHelper.ThrowIfNull(value, "RootElementName");
+                _rootElementName = value;
+            }
         }
         }
 
 
         private XmlFormatReader CloneWith(XmlReader rdr)
         private XmlFormatReader CloneWith(XmlReader rdr)
@@ -76,34 +108,45 @@ namespace Google.ProtocolBuffers.Serialization
             copy._rootElementName = _rootElementName;
             copy._rootElementName = _rootElementName;
             copy.Depth = Depth;
             copy.Depth = Depth;
             return copy;
             return copy;
-
         }
         }
+
         private void NextElement()
         private void NextElement()
         {
         {
             while (!_input.IsStartElement() && _input.Read())
             while (!_input.IsStartElement() && _input.Read())
+            {
                 continue;
                 continue;
+            }
         }
         }
+
         private static void Assert(bool cond)
         private static void Assert(bool cond)
         {
         {
-            if (!cond) throw new FormatException();
+            if (!cond)
+            {
+                throw new FormatException();
+            }
         }
         }
 
 
         /// <summary>
         /// <summary>
         /// Merge the provided builder as an element named <see cref="RootElementName"/> in the current context
         /// Merge the provided builder as an element named <see cref="RootElementName"/> in the current context
         /// </summary>
         /// </summary>
         public override TBuilder Merge<TBuilder>(TBuilder builder, ExtensionRegistry registry)
         public override TBuilder Merge<TBuilder>(TBuilder builder, ExtensionRegistry registry)
-        { return Merge(_rootElementName, builder, registry); }
+        {
+            return Merge(_rootElementName, builder, registry);
+        }
 
 
         /// <summary>
         /// <summary>
         /// Merge the provided builder as an element of the current context
         /// Merge the provided builder as an element of the current context
         /// </summary>
         /// </summary>
         public TBuilder Merge<TBuilder>(string element, TBuilder builder) where TBuilder : IBuilderLite
         public TBuilder Merge<TBuilder>(string element, TBuilder builder) where TBuilder : IBuilderLite
-        { return Merge(element, builder, ExtensionRegistry.Empty); }
+        {
+            return Merge(element, builder, ExtensionRegistry.Empty);
+        }
 
 
         /// <summary>
         /// <summary>
         /// Merge the provided builder as an element of the current context
         /// Merge the provided builder as an element of the current context
         /// </summary>
         /// </summary>
-        public TBuilder Merge<TBuilder>(string element, TBuilder builder, ExtensionRegistry registry) where TBuilder : IBuilderLite
+        public TBuilder Merge<TBuilder>(string element, TBuilder builder, ExtensionRegistry registry)
+            where TBuilder : IBuilderLite
         {
         {
             string field;
             string field;
             Assert(PeekNext(out field) && field == element);
             Assert(PeekNext(out field) && field == element);
@@ -121,7 +164,7 @@ namespace Google.ProtocolBuffers.Serialization
         protected override bool PeekNext(out string field)
         protected override bool PeekNext(out string field)
         {
         {
             NextElement();
             NextElement();
-            if(_input.IsStartElement())
+            if (_input.IsStartElement())
             {
             {
                 field = _input.LocalName;
                 field = _input.LocalName;
                 return true;
                 return true;
@@ -141,7 +184,9 @@ namespace Google.ProtocolBuffers.Serialization
                 {
                 {
                     int depth = _input.Depth;
                     int depth = _input.Depth;
                     while (_input.Depth >= depth && _input.NodeType != XmlNodeType.EndElement)
                     while (_input.Depth >= depth && _input.NodeType != XmlNodeType.EndElement)
+                    {
                         Assert(_input.Read());
                         Assert(_input.Read());
+                    }
                 }
                 }
                 _input.Read();
                 _input.Read();
             }
             }
@@ -171,7 +216,7 @@ namespace Google.ProtocolBuffers.Serialization
         {
         {
             Assert(_input.NodeType == XmlNodeType.Element);
             Assert(_input.NodeType == XmlNodeType.Element);
             value = _input.ReadElementContentAsString();
             value = _input.ReadElementContentAsString();
-            
+
             return true;
             return true;
         }
         }
 
 
@@ -187,7 +232,9 @@ namespace Google.ProtocolBuffers.Serialization
                 int depth = _input.Depth;
                 int depth = _input.Depth;
                 XmlReader child = _input.ReadSubtree();
                 XmlReader child = _input.ReadSubtree();
                 while (!child.IsStartElement() && child.Read())
                 while (!child.IsStartElement() && child.Read())
+                {
                     continue;
                     continue;
+                }
                 child.Read();
                 child.Read();
                 builder.WeakMergeFrom(CloneWith(child), registry);
                 builder.WeakMergeFrom(CloneWith(child), registry);
                 Assert(depth == _input.Depth && _input.NodeType == XmlNodeType.EndElement);
                 Assert(depth == _input.Depth && _input.NodeType == XmlNodeType.EndElement);
@@ -211,7 +258,9 @@ namespace Google.ProtocolBuffers.Serialization
             if (!isNested)
             if (!isNested)
             {
             {
                 foreach (string item in NonNestedArrayItems(field))
                 foreach (string item in NonNestedArrayItems(field))
+                {
                     yield return item;
                     yield return item;
+                }
                 yield break;
                 yield break;
             }
             }
             if (!_input.IsEmptyElement)
             if (!_input.IsEmptyElement)
@@ -220,15 +269,19 @@ namespace Google.ProtocolBuffers.Serialization
                 XmlReader child = _input.ReadSubtree();
                 XmlReader child = _input.ReadSubtree();
 
 
                 while (!child.IsStartElement() && child.Read())
                 while (!child.IsStartElement() && child.Read())
+                {
                     continue;
                     continue;
+                }
                 child.Read();
                 child.Read();
 
 
                 foreach (string item in CloneWith(child).NonNestedArrayItems("item"))
                 foreach (string item in CloneWith(child).NonNestedArrayItems("item"))
+                {
                     yield return item;
                     yield return item;
+                }
                 Assert(depth == _input.Depth && _input.NodeType == XmlNodeType.EndElement);
                 Assert(depth == _input.Depth && _input.NodeType == XmlNodeType.EndElement);
             }
             }
             _input.Read();
             _input.Read();
             yield break;
             yield break;
         }
         }
     }
     }
-}
+}

+ 83 - 23
src/ProtocolBuffers/Serialization/XmlFormatWriter.cs

@@ -1,4 +1,5 @@
 using System;
 using System;
+using System.Collections;
 using System.IO;
 using System.IO;
 using System.Text;
 using System.Text;
 using System.Xml;
 using System.Xml;
@@ -18,33 +19,48 @@ namespace Google.ProtocolBuffers.Serialization
         private readonly XmlWriter _output;
         private readonly XmlWriter _output;
         private string _rootElementName;
         private string _rootElementName;
 
 
-        static XmlWriterSettings DefaultSettings(Encoding encoding)
+        private static XmlWriterSettings DefaultSettings(Encoding encoding)
         {
         {
-            return new XmlWriterSettings() 
-            { 
-                CheckCharacters = false, 
-                NewLineHandling = NewLineHandling.Entitize, 
-                OmitXmlDeclaration = true,
-                Encoding = encoding, 
-            };
+            return new XmlWriterSettings()
+                       {
+                           CheckCharacters = false,
+                           NewLineHandling = NewLineHandling.Entitize,
+                           OmitXmlDeclaration = true,
+                           Encoding = encoding,
+                       };
         }
         }
 
 
         /// <summary>
         /// <summary>
         /// Constructs the XmlFormatWriter to write to the given TextWriter
         /// Constructs the XmlFormatWriter to write to the given TextWriter
         /// </summary>
         /// </summary>
-        public static XmlFormatWriter CreateInstance(TextWriter output) { return new XmlFormatWriter(XmlWriter.Create(output, DefaultSettings(output.Encoding))); }
+        public static XmlFormatWriter CreateInstance(TextWriter output)
+        {
+            return new XmlFormatWriter(XmlWriter.Create(output, DefaultSettings(output.Encoding)));
+        }
+
         /// <summary>
         /// <summary>
         /// Constructs the XmlFormatWriter to write to the given stream
         /// Constructs the XmlFormatWriter to write to the given stream
         /// </summary>
         /// </summary>
-        public static XmlFormatWriter CreateInstance(Stream output) { return new XmlFormatWriter(XmlWriter.Create(output, DefaultSettings(Encoding.UTF8))); }
+        public static XmlFormatWriter CreateInstance(Stream output)
+        {
+            return new XmlFormatWriter(XmlWriter.Create(output, DefaultSettings(Encoding.UTF8)));
+        }
+
         /// <summary>
         /// <summary>
         /// Constructs the XmlFormatWriter to write to the given stream
         /// Constructs the XmlFormatWriter to write to the given stream
         /// </summary>
         /// </summary>
-        public static XmlFormatWriter CreateInstance(Stream output, Encoding encoding) { return new XmlFormatWriter(XmlWriter.Create(output, DefaultSettings(encoding))); }
+        public static XmlFormatWriter CreateInstance(Stream output, Encoding encoding)
+        {
+            return new XmlFormatWriter(XmlWriter.Create(output, DefaultSettings(encoding)));
+        }
+
         /// <summary>
         /// <summary>
         /// Constructs the XmlFormatWriter to write to the given XmlWriter
         /// Constructs the XmlFormatWriter to write to the given XmlWriter
         /// </summary>
         /// </summary>
-        public static XmlFormatWriter CreateInstance(XmlWriter output) { return new XmlFormatWriter(output); }
+        public static XmlFormatWriter CreateInstance(XmlWriter output)
+        {
+            return new XmlFormatWriter(output);
+        }
 
 
         protected XmlFormatWriter(XmlWriter output)
         protected XmlFormatWriter(XmlWriter output)
         {
         {
@@ -57,8 +73,10 @@ namespace Google.ProtocolBuffers.Serialization
         /// </summary>
         /// </summary>
         protected override void Dispose(bool disposing)
         protected override void Dispose(bool disposing)
         {
         {
-            if(disposing)
+            if (disposing)
+            {
                 _output.Close();
                 _output.Close();
+            }
         }
         }
 
 
         /// <summary>
         /// <summary>
@@ -67,25 +85,39 @@ namespace Google.ProtocolBuffers.Serialization
         public string RootElementName
         public string RootElementName
         {
         {
             get { return _rootElementName; }
             get { return _rootElementName; }
-            set { ThrowHelper.ThrowIfNull(value, "RootElementName"); _rootElementName = value; }
+            set
+            {
+                ThrowHelper.ThrowIfNull(value, "RootElementName");
+                _rootElementName = value;
+            }
         }
         }
 
 
         /// <summary>
         /// <summary>
         /// Gets or sets the options to use while generating the XML
         /// Gets or sets the options to use while generating the XML
         /// </summary>
         /// </summary>
         public XmlWriterOptions Options { get; set; }
         public XmlWriterOptions Options { get; set; }
+
         /// <summary>
         /// <summary>
         /// Sets the options to use while generating the XML
         /// Sets the options to use while generating the XML
         /// </summary>
         /// </summary>
-        public XmlFormatWriter SetOptions(XmlWriterOptions options) { Options = options; return this; }
+        public XmlFormatWriter SetOptions(XmlWriterOptions options)
+        {
+            Options = options;
+            return this;
+        }
 
 
-        private bool TestOption(XmlWriterOptions option) { return (Options & option) != 0; }
+        private bool TestOption(XmlWriterOptions option)
+        {
+            return (Options & option) != 0;
+        }
 
 
         /// <summary>
         /// <summary>
         /// Writes a message as an element using the name defined in <see cref="RootElementName"/>
         /// Writes a message as an element using the name defined in <see cref="RootElementName"/>
         /// </summary>
         /// </summary>
         public override void WriteMessage(IMessageLite message)
         public override void WriteMessage(IMessageLite message)
-        { WriteMessage(_rootElementName, message); }
+        {
+            WriteMessage(_rootElementName, message);
+        }
 
 
         /// <summary>
         /// <summary>
         /// Writes a message as an element with the given name
         /// Writes a message as an element with the given name
@@ -98,7 +130,9 @@ namespace Google.ProtocolBuffers.Serialization
                 _output.WriteAttributeString("type", "object");
                 _output.WriteAttributeString("type", "object");
             }
             }
             else
             else
+            {
                 _output.WriteStartElement(elementName);
                 _output.WriteStartElement(elementName);
+            }
 
 
             message.WriteTo(this);
             message.WriteTo(this);
             _output.WriteEndElement();
             _output.WriteEndElement();
@@ -113,7 +147,9 @@ namespace Google.ProtocolBuffers.Serialization
             _output.WriteStartElement(field);
             _output.WriteStartElement(field);
 
 
             if (TestOption(XmlWriterOptions.OutputJsonTypes))
             if (TestOption(XmlWriterOptions.OutputJsonTypes))
+            {
                 _output.WriteAttributeString("type", "object");
                 _output.WriteAttributeString("type", "object");
+            }
 
 
             message.WriteTo(this);
             message.WriteTo(this);
             _output.WriteEndElement();
             _output.WriteEndElement();
@@ -128,16 +164,23 @@ namespace Google.ProtocolBuffers.Serialization
 
 
             if (TestOption(XmlWriterOptions.OutputJsonTypes))
             if (TestOption(XmlWriterOptions.OutputJsonTypes))
             {
             {
-                if (typedValue is int || typedValue is uint || typedValue is long || typedValue is ulong || typedValue is double || typedValue is float)
+                if (typedValue is int || typedValue is uint || typedValue is long || typedValue is ulong ||
+                    typedValue is double || typedValue is float)
+                {
                     _output.WriteAttributeString("type", "number");
                     _output.WriteAttributeString("type", "number");
+                }
                 else if (typedValue is bool)
                 else if (typedValue is bool)
+                {
                     _output.WriteAttributeString("type", "boolean");
                     _output.WriteAttributeString("type", "boolean");
+                }
             }
             }
             _output.WriteString(textValue);
             _output.WriteString(textValue);
 
 
             //Empty strings should not be written as empty elements '<item/>', rather as '<item></item>'
             //Empty strings should not be written as empty elements '<item/>', rather as '<item></item>'
             if (_output.WriteState == WriteState.Element)
             if (_output.WriteState == WriteState.Element)
+            {
                 _output.WriteRaw("");
                 _output.WriteRaw("");
+            }
 
 
             _output.WriteEndElement();
             _output.WriteEndElement();
         }
         }
@@ -145,25 +188,40 @@ namespace Google.ProtocolBuffers.Serialization
         /// <summary>
         /// <summary>
         /// Writes an array of field values
         /// Writes an array of field values
         /// </summary>
         /// </summary>
-        protected override void WriteArray(FieldType fieldType, string field, System.Collections.IEnumerable items)
+        protected override void WriteArray(FieldType fieldType, string field, IEnumerable items)
         {
         {
             //see if it's empty
             //see if it's empty
-            System.Collections.IEnumerator eitems = items.GetEnumerator();
-            try { if (!eitems.MoveNext()) return; }
+            IEnumerator eitems = items.GetEnumerator();
+            try
+            {
+                if (!eitems.MoveNext())
+                {
+                    return;
+                }
+            }
             finally
             finally
-            { if (eitems is IDisposable) ((IDisposable) eitems).Dispose(); }
+            {
+                if (eitems is IDisposable)
+                {
+                    ((IDisposable) eitems).Dispose();
+                }
+            }
 
 
             if (TestOption(XmlWriterOptions.OutputNestedArrays | XmlWriterOptions.OutputJsonTypes))
             if (TestOption(XmlWriterOptions.OutputNestedArrays | XmlWriterOptions.OutputJsonTypes))
             {
             {
                 _output.WriteStartElement(field);
                 _output.WriteStartElement(field);
                 if (TestOption(XmlWriterOptions.OutputJsonTypes))
                 if (TestOption(XmlWriterOptions.OutputJsonTypes))
+                {
                     _output.WriteAttributeString("type", "array");
                     _output.WriteAttributeString("type", "array");
+                }
 
 
                 base.WriteArray(fieldType, "item", items);
                 base.WriteArray(fieldType, "item", items);
                 _output.WriteEndElement();
                 _output.WriteEndElement();
             }
             }
             else
             else
+            {
                 base.WriteArray(fieldType, field, items);
                 base.WriteArray(fieldType, field, items);
+            }
         }
         }
 
 
         /// <summary>
         /// <summary>
@@ -174,10 +232,12 @@ namespace Google.ProtocolBuffers.Serialization
             _output.WriteStartElement(field);
             _output.WriteStartElement(field);
 
 
             if (!TestOption(XmlWriterOptions.OutputJsonTypes) && TestOption(XmlWriterOptions.OutputEnumValues))
             if (!TestOption(XmlWriterOptions.OutputJsonTypes) && TestOption(XmlWriterOptions.OutputEnumValues))
+            {
                 _output.WriteAttributeString("value", XmlConvert.ToString(number));
                 _output.WriteAttributeString("value", XmlConvert.ToString(number));
+            }
 
 
             _output.WriteString(name);
             _output.WriteString(name);
             _output.WriteEndElement();
             _output.WriteEndElement();
         }
         }
     }
     }
-}
+}

+ 1 - 0
src/ProtocolBuffers/Serialization/XmlReaderOptions.cs

@@ -10,6 +10,7 @@ namespace Google.ProtocolBuffers.Serialization
     {
     {
         /// <summary> Simple xml formatting with no attributes </summary>
         /// <summary> Simple xml formatting with no attributes </summary>
         None,
         None,
+
         /// <summary> Requires that arrays items are nested in an &lt;item> element </summary>
         /// <summary> Requires that arrays items are nested in an &lt;item> element </summary>
         ReadNestedArrays = 1,
         ReadNestedArrays = 1,
     }
     }

+ 3 - 0
src/ProtocolBuffers/Serialization/XmlWriterOptions.cs

@@ -10,10 +10,13 @@ namespace Google.ProtocolBuffers.Serialization
     {
     {
         /// <summary> Simple xml formatting with no attributes </summary>
         /// <summary> Simple xml formatting with no attributes </summary>
         None,
         None,
+
         /// <summary> Writes the 'value' attribute on all enumerations with the numeric identifier </summary>
         /// <summary> Writes the 'value' attribute on all enumerations with the numeric identifier </summary>
         OutputEnumValues = 0x1,
         OutputEnumValues = 0x1,
+
         /// <summary> Embeds array items into child &lt;item> elements </summary>
         /// <summary> Embeds array items into child &lt;item> elements </summary>
         OutputNestedArrays = 0x4,
         OutputNestedArrays = 0x4,
+
         /// <summary> Outputs the 'type' attribute for compatibility with the <see cref="System.Runtime.Serialization.Json.JsonReaderWriterFactory">JsonReaderWriterFactory</see> </summary>
         /// <summary> Outputs the 'type' attribute for compatibility with the <see cref="System.Runtime.Serialization.Json.JsonReaderWriterFactory">JsonReaderWriterFactory</see> </summary>
         /// <remarks> This option must, by nessessity, also enable NestedArrayItems </remarks>
         /// <remarks> This option must, by nessessity, also enable NestedArrayItems </remarks>
         OutputJsonTypes = 0x8,
         OutputJsonTypes = 0x8,

+ 8 - 6
src/ProtocolBuffers/TextFormat.cs

@@ -35,12 +35,12 @@
 #endregion
 #endregion
 
 
 using System;
 using System;
+using System.Collections;
 using System.Collections.Generic;
 using System.Collections.Generic;
 using System.Globalization;
 using System.Globalization;
 using System.IO;
 using System.IO;
 using System.Text;
 using System.Text;
 using Google.ProtocolBuffers.Descriptors;
 using Google.ProtocolBuffers.Descriptors;
-using System.Collections;
 
 
 namespace Google.ProtocolBuffers
 namespace Google.ProtocolBuffers
 {
 {
@@ -166,14 +166,14 @@ namespace Google.ProtocolBuffers
         {
         {
             switch (field.FieldType)
             switch (field.FieldType)
             {
             {
-                // The Float and Double types must specify the "r" format to preserve their precision, otherwise,
-                // the double to/from string will trim the precision to 6 places.  As with other numeric formats
-                // below, always use the invariant culture so it's predictable.
+                    // The Float and Double types must specify the "r" format to preserve their precision, otherwise,
+                    // the double to/from string will trim the precision to 6 places.  As with other numeric formats
+                    // below, always use the invariant culture so it's predictable.
                 case FieldType.Float:
                 case FieldType.Float:
-                    generator.Print(((float)value).ToString("r", CultureInfo.InvariantCulture));
+                    generator.Print(((float) value).ToString("r", CultureInfo.InvariantCulture));
                     break;
                     break;
                 case FieldType.Double:
                 case FieldType.Double:
-                    generator.Print(((double)value).ToString("r", CultureInfo.InvariantCulture));
+                    generator.Print(((double) value).ToString("r", CultureInfo.InvariantCulture));
                     break;
                     break;
 
 
                 case FieldType.Int32:
                 case FieldType.Int32:
@@ -756,7 +756,9 @@ namespace Google.ProtocolBuffers
                 {
                 {
                     subBuilder = extension.DefaultInstance.WeakCreateBuilderForType() as IBuilder;
                     subBuilder = extension.DefaultInstance.WeakCreateBuilderForType() as IBuilder;
                     if (subBuilder == null)
                     if (subBuilder == null)
+                    {
                         throw new NotSupportedException("Lite messages are not supported.");
                         throw new NotSupportedException("Lite messages are not supported.");
+                    }
                 }
                 }
 
 
                 while (!tokenizer.TryConsume(endToken))
                 while (!tokenizer.TryConsume(endToken))

+ 79 - 16
src/ProtocolBuffers/UnknownFieldSet.cs

@@ -39,7 +39,6 @@ using System.Collections.Generic;
 using System.IO;
 using System.IO;
 using Google.ProtocolBuffers.Collections;
 using Google.ProtocolBuffers.Collections;
 using Google.ProtocolBuffers.Descriptors;
 using Google.ProtocolBuffers.Descriptors;
-using Google.ProtocolBuffers.DescriptorProtos;
 
 
 namespace Google.ProtocolBuffers
 namespace Google.ProtocolBuffers
 {
 {
@@ -426,12 +425,16 @@ namespace Google.ProtocolBuffers
                     if (tag == 0)
                     if (tag == 0)
                     {
                     {
                         if (input.SkipField())
                         if (input.SkipField())
+                        {
                             continue; //can't merge unknown without field tag
                             continue; //can't merge unknown without field tag
+                        }
                         break;
                         break;
                     }
                     }
 
 
-                    if(!MergeFieldFrom(tag, input))
+                    if (!MergeFieldFrom(tag, input))
+                    {
                         break;
                         break;
+                    }
                 }
                 }
                 return this;
                 return this;
             }
             }
@@ -458,29 +461,37 @@ namespace Google.ProtocolBuffers
                     case WireFormat.WireType.Varint:
                     case WireFormat.WireType.Varint:
                         {
                         {
                             ulong uint64 = 0;
                             ulong uint64 = 0;
-                            if(input.ReadUInt64(ref uint64))
+                            if (input.ReadUInt64(ref uint64))
+                            {
                                 GetFieldBuilder(number).AddVarint(uint64);
                                 GetFieldBuilder(number).AddVarint(uint64);
+                            }
                             return true;
                             return true;
                         }
                         }
                     case WireFormat.WireType.Fixed32:
                     case WireFormat.WireType.Fixed32:
                         {
                         {
                             uint uint32 = 0;
                             uint uint32 = 0;
                             if (input.ReadFixed32(ref uint32))
                             if (input.ReadFixed32(ref uint32))
+                            {
                                 GetFieldBuilder(number).AddFixed32(uint32);
                                 GetFieldBuilder(number).AddFixed32(uint32);
+                            }
                             return true;
                             return true;
                         }
                         }
                     case WireFormat.WireType.Fixed64:
                     case WireFormat.WireType.Fixed64:
                         {
                         {
                             ulong uint64 = 0;
                             ulong uint64 = 0;
                             if (input.ReadFixed64(ref uint64))
                             if (input.ReadFixed64(ref uint64))
+                            {
                                 GetFieldBuilder(number).AddFixed64(uint64);
                                 GetFieldBuilder(number).AddFixed64(uint64);
+                            }
                             return true;
                             return true;
                         }
                         }
                     case WireFormat.WireType.LengthDelimited:
                     case WireFormat.WireType.LengthDelimited:
                         {
                         {
                             ByteString bytes = null;
                             ByteString bytes = null;
                             if (input.ReadBytes(ref bytes))
                             if (input.ReadBytes(ref bytes))
+                            {
                                 GetFieldBuilder(number).AddLengthDelimited(bytes);
                                 GetFieldBuilder(number).AddLengthDelimited(bytes);
+                            }
                             return true;
                             return true;
                         }
                         }
                     case WireFormat.WireType.StartGroup:
                     case WireFormat.WireType.StartGroup:
@@ -617,18 +628,24 @@ namespace Google.ProtocolBuffers
                     {
                     {
                         FieldDescriptor fieldByName = builder.DescriptorForType.FindFieldByName(name);
                         FieldDescriptor fieldByName = builder.DescriptorForType.FindFieldByName(name);
                         if (fieldByName != null)
                         if (fieldByName != null)
+                        {
                             tag = WireFormat.MakeTag(fieldByName);
                             tag = WireFormat.MakeTag(fieldByName);
+                        }
                         else
                         else
                         {
                         {
                             ExtensionInfo extension = extensionRegistry.FindByName(builder.DescriptorForType, name);
                             ExtensionInfo extension = extensionRegistry.FindByName(builder.DescriptorForType, name);
                             if (extension != null)
                             if (extension != null)
+                            {
                                 tag = WireFormat.MakeTag(extension.Descriptor);
                                 tag = WireFormat.MakeTag(extension.Descriptor);
+                            }
                         }
                         }
                     }
                     }
                     if (tag == 0)
                     if (tag == 0)
                     {
                     {
                         if (input.SkipField())
                         if (input.SkipField())
+                        {
                             continue; //can't merge unknown without field tag
                             continue; //can't merge unknown without field tag
+                        }
                         break;
                         break;
                     }
                     }
 
 
@@ -650,18 +667,23 @@ namespace Google.ProtocolBuffers
             /// <param name="tag">The tag, which should already have been read from the input</param>
             /// <param name="tag">The tag, which should already have been read from the input</param>
             /// <returns>true unless the tag is an end-group tag</returns>
             /// <returns>true unless the tag is an end-group tag</returns>
             internal bool MergeFieldFrom(ICodedInputStream input,
             internal bool MergeFieldFrom(ICodedInputStream input,
-                                         ExtensionRegistry extensionRegistry, IBuilder builder, uint tag, string fieldName)
+                                         ExtensionRegistry extensionRegistry, IBuilder builder, uint tag,
+                                         string fieldName)
             {
             {
                 if (tag == 0 && fieldName != null)
                 if (tag == 0 && fieldName != null)
                 {
                 {
                     FieldDescriptor fieldByName = builder.DescriptorForType.FindFieldByName(fieldName);
                     FieldDescriptor fieldByName = builder.DescriptorForType.FindFieldByName(fieldName);
                     if (fieldByName != null)
                     if (fieldByName != null)
+                    {
                         tag = WireFormat.MakeTag(fieldByName);
                         tag = WireFormat.MakeTag(fieldByName);
+                    }
                     else
                     else
                     {
                     {
                         ExtensionInfo extension = extensionRegistry.FindByName(builder.DescriptorForType, fieldName);
                         ExtensionInfo extension = extensionRegistry.FindByName(builder.DescriptorForType, fieldName);
                         if (extension != null)
                         if (extension != null)
+                        {
                             tag = WireFormat.MakeTag(extension.Descriptor);
                             tag = WireFormat.MakeTag(extension.Descriptor);
+                        }
                     }
                     }
                 }
                 }
 
 
@@ -709,12 +731,15 @@ namespace Google.ProtocolBuffers
                         //Allowed as of 2.3, this is unpacked data for a packed array
                         //Allowed as of 2.3, this is unpacked data for a packed array
                     }
                     }
                     else if (field.IsRepeated && wireType == WireFormat.WireType.LengthDelimited &&
                     else if (field.IsRepeated && wireType == WireFormat.WireType.LengthDelimited &&
-                        (expectedType == WireFormat.WireType.Varint || expectedType == WireFormat.WireType.Fixed32 || expectedType == WireFormat.WireType.Fixed64))
+                             (expectedType == WireFormat.WireType.Varint || expectedType == WireFormat.WireType.Fixed32 ||
+                              expectedType == WireFormat.WireType.Fixed64))
                     {
                     {
                         //Allowed as of 2.3, this is packed data for an unpacked array
                         //Allowed as of 2.3, this is packed data for an unpacked array
                     }
                     }
                     else
                     else
+                    {
                         return MergeFieldFrom(tag, input);
                         return MergeFieldFrom(tag, input);
+                    }
                 }
                 }
 
 
                 switch (field.FieldType)
                 switch (field.FieldType)
@@ -722,26 +747,40 @@ namespace Google.ProtocolBuffers
                     case FieldType.Group:
                     case FieldType.Group:
                     case FieldType.Message:
                     case FieldType.Message:
                         {
                         {
-                            IBuilderLite subBuilder = (defaultFieldInstance != null) ? defaultFieldInstance.WeakCreateBuilderForType() : builder.CreateBuilderForField(field);
+                            IBuilderLite subBuilder = (defaultFieldInstance != null)
+                                                          ? defaultFieldInstance.WeakCreateBuilderForType()
+                                                          : builder.CreateBuilderForField(field);
                             if (!field.IsRepeated)
                             if (!field.IsRepeated)
                             {
                             {
-                                subBuilder.WeakMergeFrom((IMessageLite)builder[field]);
+                                subBuilder.WeakMergeFrom((IMessageLite) builder[field]);
                                 if (field.FieldType == FieldType.Group)
                                 if (field.FieldType == FieldType.Group)
+                                {
                                     input.ReadGroup(field.FieldNumber, subBuilder, extensionRegistry);
                                     input.ReadGroup(field.FieldNumber, subBuilder, extensionRegistry);
+                                }
                                 else
                                 else
+                                {
                                     input.ReadMessage(subBuilder, extensionRegistry);
                                     input.ReadMessage(subBuilder, extensionRegistry);
+                                }
                                 builder[field] = subBuilder.WeakBuild();
                                 builder[field] = subBuilder.WeakBuild();
                             }
                             }
                             else
                             else
                             {
                             {
                                 List<IMessageLite> list = new List<IMessageLite>();
                                 List<IMessageLite> list = new List<IMessageLite>();
                                 if (field.FieldType == FieldType.Group)
                                 if (field.FieldType == FieldType.Group)
-                                    input.ReadGroupArray(tag, fieldName, list, subBuilder.WeakDefaultInstanceForType, extensionRegistry);
+                                {
+                                    input.ReadGroupArray(tag, fieldName, list, subBuilder.WeakDefaultInstanceForType,
+                                                         extensionRegistry);
+                                }
                                 else
                                 else
-                                    input.ReadMessageArray(tag, fieldName, list, subBuilder.WeakDefaultInstanceForType, extensionRegistry);
+                                {
+                                    input.ReadMessageArray(tag, fieldName, list, subBuilder.WeakDefaultInstanceForType,
+                                                           extensionRegistry);
+                                }
 
 
                                 foreach (IMessageLite m in list)
                                 foreach (IMessageLite m in list)
+                                {
                                     builder.WeakAddRepeatedField(field, m);
                                     builder.WeakAddRepeatedField(field, m);
+                                }
                                 return true;
                                 return true;
                             }
                             }
                             break;
                             break;
@@ -753,24 +792,34 @@ namespace Google.ProtocolBuffers
                                 object unknown;
                                 object unknown;
                                 IEnumLite value = null;
                                 IEnumLite value = null;
                                 if (input.ReadEnum(ref value, out unknown, field.EnumType))
                                 if (input.ReadEnum(ref value, out unknown, field.EnumType))
+                                {
                                     builder[field] = value;
                                     builder[field] = value;
-                                else if(unknown is int)
-                                    MergeVarintField(fieldNumber, (ulong)(int)unknown);
+                                }
+                                else if (unknown is int)
+                                {
+                                    MergeVarintField(fieldNumber, (ulong) (int) unknown);
+                                }
                             }
                             }
                             else
                             else
                             {
                             {
                                 ICollection<object> unknown;
                                 ICollection<object> unknown;
                                 List<IEnumLite> list = new List<IEnumLite>();
                                 List<IEnumLite> list = new List<IEnumLite>();
                                 input.ReadEnumArray(tag, fieldName, list, out unknown, field.EnumType);
                                 input.ReadEnumArray(tag, fieldName, list, out unknown, field.EnumType);
-                                
+
                                 foreach (IEnumLite en in list)
                                 foreach (IEnumLite en in list)
+                                {
                                     builder.WeakAddRepeatedField(field, en);
                                     builder.WeakAddRepeatedField(field, en);
+                                }
 
 
                                 if (unknown != null)
                                 if (unknown != null)
                                 {
                                 {
                                     foreach (object oval in unknown)
                                     foreach (object oval in unknown)
+                                    {
                                         if (oval is int)
                                         if (oval is int)
-                                            MergeVarintField(fieldNumber, (ulong)(int)oval);
+                                        {
+                                            MergeVarintField(fieldNumber, (ulong) (int) oval);
+                                        }
+                                    }
                                 }
                                 }
                             }
                             }
                             break;
                             break;
@@ -781,14 +830,18 @@ namespace Google.ProtocolBuffers
                             {
                             {
                                 object value = null;
                                 object value = null;
                                 if (input.ReadPrimitiveField(field.FieldType, ref value))
                                 if (input.ReadPrimitiveField(field.FieldType, ref value))
+                                {
                                     builder[field] = value;
                                     builder[field] = value;
+                                }
                             }
                             }
                             else
                             else
                             {
                             {
                                 List<object> list = new List<object>();
                                 List<object> list = new List<object>();
                                 input.ReadPrimitiveArray(field.FieldType, tag, fieldName, list);
                                 input.ReadPrimitiveArray(field.FieldType, tag, fieldName, list);
                                 foreach (object oval in list)
                                 foreach (object oval in list)
+                                {
                                     builder.WeakAddRepeatedField(field, oval);
                                     builder.WeakAddRepeatedField(field, oval);
+                                }
                             }
                             }
                             break;
                             break;
                         }
                         }
@@ -832,13 +885,21 @@ namespace Google.ProtocolBuffers
                 {
                 {
                     if (tag == 0 && name != null)
                     if (tag == 0 && name != null)
                     {
                     {
-                        if (name == "type_id") tag = WireFormat.MessageSetTag.TypeID;
-                        else if (name == "message") tag = WireFormat.MessageSetTag.Message;
+                        if (name == "type_id")
+                        {
+                            tag = WireFormat.MessageSetTag.TypeID;
+                        }
+                        else if (name == "message")
+                        {
+                            tag = WireFormat.MessageSetTag.Message;
+                        }
                     }
                     }
                     if (tag == 0)
                     if (tag == 0)
                     {
                     {
                         if (input.SkipField())
                         if (input.SkipField())
+                        {
                             continue; //can't merge unknown without field tag
                             continue; //can't merge unknown without field tag
+                        }
                         break;
                         break;
                     }
                     }
 
 
@@ -882,7 +943,7 @@ namespace Google.ProtocolBuffers
                     }
                     }
                     else if (tag == WireFormat.MessageSetTag.Message)
                     else if (tag == WireFormat.MessageSetTag.Message)
                     {
                     {
-                        if(subBuilder != null)
+                        if (subBuilder != null)
                         {
                         {
                             // We already know the type, so we can parse directly from the input
                             // We already know the type, so we can parse directly from the input
                             // with no copying.  Hooray!
                             // with no copying.  Hooray!
@@ -909,7 +970,9 @@ namespace Google.ProtocolBuffers
                 }
                 }
 
 
                 if (lastTag != WireFormat.MessageSetTag.ItemEnd)
                 if (lastTag != WireFormat.MessageSetTag.ItemEnd)
+                {
                     throw InvalidProtocolBufferException.InvalidEndTag();
                     throw InvalidProtocolBufferException.InvalidEndTag();
+                }
 
 
                 if (subBuilder != null)
                 if (subBuilder != null)
                 {
                 {

+ 1 - 0
src/ProtocolBuffers/WireFormat.cs

@@ -143,6 +143,7 @@ namespace Google.ProtocolBuffers
         }
         }
 
 
 #endif
 #endif
+
         /// <summary>
         /// <summary>
         /// Converts a field type to its wire type. Done with a switch for the sake
         /// Converts a field type to its wire type. Done with a switch for the sake
         /// of speed - this is significantly faster than a dictionary lookup.
         /// of speed - this is significantly faster than a dictionary lookup.