rename FieldType to PbFieldType and bump version to 0.4.2

'FieldType' conflicts with classes and proto messages with the
same name. Renamed to PbFieldType to make this less likely.

(I'm breaking compatibility with 0.4.1 because leaving
'FieldType' around will prevent upgrades from 0.4.0
and below. Since I just released 0.4.1 on Friday, it
seems unlikely to affect many people.)

BUG=
R=cbracken@google.com

Review URL: https://chromiumcodereview.appspot.com//1312763005.
diff --git a/CHANGELOG.md b/CHANGELOG.md
index bba588f..b2541ed 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,4 +1,10 @@
-## 0.4.1
+## 0.4.2
+ * Renamed FieldType to PbFieldType.
+
+## 0.4.1 - DO NOT USE
+ * added FieldType class. It turned out that FieldType is a
+   commonly used name, even in .proto files. This is renamed to
+   PbFieldType in 0.4.2.
  * Added support for observing field changes.
    For now, this can only be enabled by using a mixin to override
    the eventPlugin getter.
diff --git a/lib/src/protobuf/builder_info.dart b/lib/src/protobuf/builder_info.dart
index 337e6cd..8bb14fd 100644
--- a/lib/src/protobuf/builder_info.dart
+++ b/lib/src/protobuf/builder_info.dart
@@ -51,7 +51,7 @@
   // TODO(skybrian): migrate to pp() and remove.
   void m(int tagNumber, String name,
          CreateBuilderFunc subBuilder, MakeDefaultFunc makeDefault) {
-    add(tagNumber, name, FieldType._REPEATED_MESSAGE,
+    add(tagNumber, name, PbFieldType._REPEATED_MESSAGE,
         makeDefault, subBuilder, null);
   }
 
diff --git a/lib/src/protobuf/coded_buffer_writer.dart b/lib/src/protobuf/coded_buffer_writer.dart
index d503749..b23aa96 100644
--- a/lib/src/protobuf/coded_buffer_writer.dart
+++ b/lib/src/protobuf/coded_buffer_writer.dart
@@ -68,20 +68,20 @@
     }
 
     return new Map<int, dynamic>()
-        ..[FieldType._BOOL_BIT] = makeWriter(
+        ..[PbFieldType._BOOL_BIT] = makeWriter(
             (value) => _int32ToBytes(value ? 1 : 0))
-        ..[FieldType._BYTES_BIT] = writeBytesNoTag
-        ..[FieldType._STRING_BIT] = (output, value) {
+        ..[PbFieldType._BYTES_BIT] = writeBytesNoTag
+        ..[PbFieldType._STRING_BIT] = (output, value) {
             writeBytesNoTag(output, _UTF8.encode(value));
         }
-        ..[FieldType._DOUBLE_BIT] = makeWriter((double value) {
+        ..[PbFieldType._DOUBLE_BIT] = makeWriter((double value) {
             if (value.isNaN) return new ByteData(8)
                   ..setUint32(0, 0x00000000, Endianness.LITTLE_ENDIAN)
                   ..setUint32(4, 0x7ff80000, Endianness.LITTLE_ENDIAN);
             return new ByteData(8)
                 ..setFloat64(0, value, Endianness.LITTLE_ENDIAN);
         })
-        ..[FieldType._FLOAT_BIT] = makeWriter((double value) {
+        ..[PbFieldType._FLOAT_BIT] = makeWriter((double value) {
             const double MIN_FLOAT_DENORM = 1.401298464324817E-45;
             const double MAX_FLOAT = 3.4028234663852886E38;
             // TODO(antonm): reevaluate once semantics of odd values
@@ -96,25 +96,25 @@
             return new ByteData(4)
                 ..setFloat32(0, value, Endianness.LITTLE_ENDIAN);
         })
-        ..[FieldType._ENUM_BIT] = makeWriter(
+        ..[PbFieldType._ENUM_BIT] = makeWriter(
             (value) => _int32ToBytes(value.value))
-        ..[FieldType._GROUP_BIT] = (output, value) {
+        ..[PbFieldType._GROUP_BIT] = (output, value) {
             value.writeToCodedBufferWriter(output);
         }
-        ..[FieldType._INT32_BIT] = makeWriter(_int32ToBytes)
-        ..[FieldType._INT64_BIT] = makeWriter(
+        ..[PbFieldType._INT32_BIT] = makeWriter(_int32ToBytes)
+        ..[PbFieldType._INT64_BIT] = makeWriter(
             (value) => _toVarint64(value))
-        ..[FieldType._SINT32_BIT] = makeWriter(
+        ..[PbFieldType._SINT32_BIT] = makeWriter(
             (int value) => _int32ToBytes(_encodeZigZag32(value)))
-        ..[FieldType._SINT64_BIT] = makeWriter(
+        ..[PbFieldType._SINT64_BIT] = makeWriter(
             (Int64 value) => _toVarint64(_encodeZigZag64(value)))
-        ..[FieldType._UINT32_BIT] = makeWriter(_toVarint32)
-        ..[FieldType._UINT64_BIT] = makeWriter(_toVarint64)
-        ..[FieldType._FIXED32_BIT] = makeWriter(makeByteData32)
-        ..[FieldType._FIXED64_BIT] = makeWriter(makeByteData64)
-        ..[FieldType._SFIXED32_BIT] = makeWriter(makeByteData32)
-        ..[FieldType._SFIXED64_BIT] = makeWriter(makeByteData64)
-        ..[FieldType._MESSAGE_BIT] = (output, value) {
+        ..[PbFieldType._UINT32_BIT] = makeWriter(_toVarint32)
+        ..[PbFieldType._UINT64_BIT] = makeWriter(_toVarint64)
+        ..[PbFieldType._FIXED32_BIT] = makeWriter(makeByteData32)
+        ..[PbFieldType._FIXED64_BIT] = makeWriter(makeByteData64)
+        ..[PbFieldType._SFIXED32_BIT] = makeWriter(makeByteData32)
+        ..[PbFieldType._SFIXED64_BIT] = makeWriter(makeByteData64)
+        ..[PbFieldType._MESSAGE_BIT] = (output, value) {
             output._withDeferredSizeCalculation(() {
               value.writeToCodedBufferWriter(output);
             });
@@ -125,24 +125,24 @@
 
   static _makeOpenTagMap() {
     return new Map<int, int>()
-        ..[FieldType._BOOL_BIT] = WIRETYPE_VARINT
-        ..[FieldType._BYTES_BIT] = WIRETYPE_LENGTH_DELIMITED
-        ..[FieldType._STRING_BIT] = WIRETYPE_LENGTH_DELIMITED
-        ..[FieldType._DOUBLE_BIT] = WIRETYPE_FIXED64
-        ..[FieldType._FLOAT_BIT] = WIRETYPE_FIXED32
-        ..[FieldType._ENUM_BIT] = WIRETYPE_VARINT
-        ..[FieldType._GROUP_BIT] = WIRETYPE_START_GROUP
-        ..[FieldType._INT32_BIT] = WIRETYPE_VARINT
-        ..[FieldType._INT64_BIT] = WIRETYPE_VARINT
-        ..[FieldType._SINT32_BIT] = WIRETYPE_VARINT
-        ..[FieldType._SINT64_BIT] = WIRETYPE_VARINT
-        ..[FieldType._UINT32_BIT] = WIRETYPE_VARINT
-        ..[FieldType._UINT64_BIT] = WIRETYPE_VARINT
-        ..[FieldType._FIXED32_BIT] = WIRETYPE_FIXED32
-        ..[FieldType._FIXED64_BIT] = WIRETYPE_FIXED64
-        ..[FieldType._SFIXED32_BIT] = WIRETYPE_FIXED32
-        ..[FieldType._SFIXED64_BIT] = WIRETYPE_FIXED64
-        ..[FieldType._MESSAGE_BIT] = WIRETYPE_LENGTH_DELIMITED;
+        ..[PbFieldType._BOOL_BIT] = WIRETYPE_VARINT
+        ..[PbFieldType._BYTES_BIT] = WIRETYPE_LENGTH_DELIMITED
+        ..[PbFieldType._STRING_BIT] = WIRETYPE_LENGTH_DELIMITED
+        ..[PbFieldType._DOUBLE_BIT] = WIRETYPE_FIXED64
+        ..[PbFieldType._FLOAT_BIT] = WIRETYPE_FIXED32
+        ..[PbFieldType._ENUM_BIT] = WIRETYPE_VARINT
+        ..[PbFieldType._GROUP_BIT] = WIRETYPE_START_GROUP
+        ..[PbFieldType._INT32_BIT] = WIRETYPE_VARINT
+        ..[PbFieldType._INT64_BIT] = WIRETYPE_VARINT
+        ..[PbFieldType._SINT32_BIT] = WIRETYPE_VARINT
+        ..[PbFieldType._SINT64_BIT] = WIRETYPE_VARINT
+        ..[PbFieldType._UINT32_BIT] = WIRETYPE_VARINT
+        ..[PbFieldType._UINT64_BIT] = WIRETYPE_VARINT
+        ..[PbFieldType._FIXED32_BIT] = WIRETYPE_FIXED32
+        ..[PbFieldType._FIXED64_BIT] = WIRETYPE_FIXED64
+        ..[PbFieldType._SFIXED32_BIT] = WIRETYPE_FIXED32
+        ..[PbFieldType._SFIXED64_BIT] = WIRETYPE_FIXED64
+        ..[PbFieldType._MESSAGE_BIT] = WIRETYPE_LENGTH_DELIMITED;
   }
 
   void _withDeferredSizeCalculation(continuation) {
@@ -165,7 +165,7 @@
       writeInt32NoTag(makeTag(fieldNumber, wireFormat));
     }
 
-    if ((fieldType & FieldType._PACKED_BIT) != 0) {
+    if ((fieldType & PbFieldType._PACKED_BIT) != 0) {
       if (!fieldValue.isEmpty) {
         writeTag(WIRETYPE_LENGTH_DELIMITED);
         _withDeferredSizeCalculation(() {
@@ -180,12 +180,12 @@
     writeValue(value) {
       writeTag(_OPEN_TAG_MAP[valueType]);
       writeFunction(this, value);
-      if (valueType == FieldType._GROUP_BIT) {
+      if (valueType == PbFieldType._GROUP_BIT) {
         writeTag(WIRETYPE_END_GROUP);
       }
     }
 
-    if ((fieldType & FieldType._REPEATED_BIT) != 0) {
+    if ((fieldType & PbFieldType._REPEATED_BIT) != 0) {
       fieldValue.forEach(writeValue);
       return;
     }
diff --git a/lib/src/protobuf/field_error.dart b/lib/src/protobuf/field_error.dart
index 7c5af4c..29d03bc 100644
--- a/lib/src/protobuf/field_error.dart
+++ b/lib/src/protobuf/field_error.dart
@@ -10,53 +10,53 @@
 /// For enums, group, and message fields, this check is only approximate,
 /// because the exact type isn't included in [fieldType].
 String _getFieldError(int fieldType, var value) {
-  switch (FieldType._baseType(fieldType)) {
-    case FieldType._BOOL_BIT:
+  switch (PbFieldType._baseType(fieldType)) {
+    case PbFieldType._BOOL_BIT:
       if (value is! bool) return 'not type bool';
       return null;
-    case FieldType._BYTES_BIT:
+    case PbFieldType._BYTES_BIT:
       if (value is! List) return 'not List';
       return null;
-    case FieldType._STRING_BIT:
+    case PbFieldType._STRING_BIT:
       if (value is! String) return 'not type String';
       return null;
-    case FieldType._FLOAT_BIT:
+    case PbFieldType._FLOAT_BIT:
       if (value is! double) return 'not type double';
       if (!_isFloat32(value)) return 'out of range for float';
       return null;
-    case FieldType._DOUBLE_BIT:
+    case PbFieldType._DOUBLE_BIT:
       if (value is! double) return 'not type double';
       return null;
-    case FieldType._ENUM_BIT:
+    case PbFieldType._ENUM_BIT:
       if (value is! ProtobufEnum) return 'not type ProtobufEnum';
       return null;
 
-    case FieldType._INT32_BIT:
-    case FieldType._SINT32_BIT:
-    case FieldType._SFIXED32_BIT:
+    case PbFieldType._INT32_BIT:
+    case PbFieldType._SINT32_BIT:
+    case PbFieldType._SFIXED32_BIT:
       if (value is! int) return 'not type int';
       if (!_isSigned32(value)) return 'out of range for signed 32-bit int';
       return null;
 
-    case FieldType._UINT32_BIT:
-    case FieldType._FIXED32_BIT:
+    case PbFieldType._UINT32_BIT:
+    case PbFieldType._FIXED32_BIT:
       if (value is! int) return 'not type int';
       if (!_isUnsigned32(value)) return 'out of range for unsigned 32-bit int';
       return null;
 
-    case FieldType._INT64_BIT:
-    case FieldType._SINT64_BIT:
-    case FieldType._UINT64_BIT:
-    case FieldType._FIXED64_BIT:
-    case FieldType._SFIXED64_BIT:
+    case PbFieldType._INT64_BIT:
+    case PbFieldType._SINT64_BIT:
+    case PbFieldType._UINT64_BIT:
+    case PbFieldType._FIXED64_BIT:
+    case PbFieldType._SFIXED64_BIT:
       // We always use the full range of the same Dart type.
       // It's up to the caller to treat the Int64 as signed or unsigned.
       // See: https://github.com/dart-lang/dart-protobuf/issues/44
       if (value is! Int64) return 'not Int64';
       return null;
 
-    case FieldType._GROUP_BIT:
-    case FieldType._MESSAGE_BIT:
+    case PbFieldType._GROUP_BIT:
+    case PbFieldType._MESSAGE_BIT:
       if (value is! GeneratedMessage) return 'not a GeneratedMessage';
       return null;
     default:
@@ -77,40 +77,40 @@
 /// because the exact type isn't included in [fieldType].
 CheckFunc getCheckFunction(int fieldType) {
   switch (fieldType & ~0x7) {
-    case FieldType._BOOL_BIT:
+    case PbFieldType._BOOL_BIT:
       return _checkBool;
-    case FieldType._BYTES_BIT:
+    case PbFieldType._BYTES_BIT:
       return _checkBytes;
-    case FieldType._STRING_BIT:
+    case PbFieldType._STRING_BIT:
       return _checkString;
-    case FieldType._FLOAT_BIT:
+    case PbFieldType._FLOAT_BIT:
       return _checkFloat;
-    case FieldType._DOUBLE_BIT:
+    case PbFieldType._DOUBLE_BIT:
       return _checkDouble;
 
-    case FieldType._INT32_BIT:
-    case FieldType._SINT32_BIT:
-    case FieldType._SFIXED32_BIT:
+    case PbFieldType._INT32_BIT:
+    case PbFieldType._SINT32_BIT:
+    case PbFieldType._SFIXED32_BIT:
       return _checkSigned32;
 
-    case FieldType._UINT32_BIT:
-    case FieldType._FIXED32_BIT:
+    case PbFieldType._UINT32_BIT:
+    case PbFieldType._FIXED32_BIT:
       return _checkUnsigned32;
 
-    case FieldType._INT64_BIT:
-    case FieldType._SINT64_BIT:
-    case FieldType._SFIXED64_BIT:
-    case FieldType._UINT64_BIT:
-    case FieldType._FIXED64_BIT:
+    case PbFieldType._INT64_BIT:
+    case PbFieldType._SINT64_BIT:
+    case PbFieldType._SFIXED64_BIT:
+    case PbFieldType._UINT64_BIT:
+    case PbFieldType._FIXED64_BIT:
       // We always use the full range of the same Dart type.
       // It's up to the caller to treat the Int64 as signed or unsigned.
       // See: https://github.com/dart-lang/dart-protobuf/issues/44
       return _checkAnyInt64;
 
-    case FieldType._ENUM_BIT:
+    case PbFieldType._ENUM_BIT:
       return _checkAnyEnum;
-    case FieldType._GROUP_BIT:
-    case FieldType._MESSAGE_BIT:
+    case PbFieldType._GROUP_BIT:
+    case PbFieldType._MESSAGE_BIT:
       return _checkAnyMessage;
   }
   throw new ArgumentError('check function not implemented: ${fieldType}');
diff --git a/lib/src/protobuf/field_info.dart b/lib/src/protobuf/field_info.dart
index e7ae388..c5be493 100644
--- a/lib/src/protobuf/field_info.dart
+++ b/lib/src/protobuf/field_info.dart
@@ -54,7 +54,7 @@
   }
 
   static MakeDefaultFunc findMakeDefault(int type, dynamic defaultOrMaker) {
-    if (defaultOrMaker == null) return FieldType._defaultForType(type);
+    if (defaultOrMaker == null) return PbFieldType._defaultForType(type);
     if (defaultOrMaker is MakeDefaultFunc) return defaultOrMaker;
     return () => defaultOrMaker;
   }
diff --git a/lib/src/protobuf/field_type.dart b/lib/src/protobuf/field_type.dart
index afa1058..adf67ab 100644
--- a/lib/src/protobuf/field_type.dart
+++ b/lib/src/protobuf/field_type.dart
@@ -4,18 +4,18 @@
 
 part of protobuf;
 
-bool _isRepeated(int fieldType) => (fieldType & FieldType._REPEATED_BIT) != 0;
+bool _isRepeated(int fieldType) => (fieldType & PbFieldType._REPEATED_BIT) != 0;
 
-bool _isRequired(int fieldType) => (fieldType & FieldType._REQUIRED_BIT) != 0;
+bool _isRequired(int fieldType) => (fieldType & PbFieldType._REQUIRED_BIT) != 0;
 
 bool _isEnum(int fieldType) =>
-    FieldType._baseType(fieldType) == FieldType._ENUM_BIT;
+    PbFieldType._baseType(fieldType) == PbFieldType._ENUM_BIT;
 
 bool _isGroupOrMessage(int fieldType) =>
-    (fieldType & (FieldType._GROUP_BIT | FieldType._MESSAGE_BIT)) != 0;
+    (fieldType & (PbFieldType._GROUP_BIT | PbFieldType._MESSAGE_BIT)) != 0;
 
 /// Defines constants and functions for dealing with fieldType bits.
-class FieldType {
+class PbFieldType {
 
   /// Returns the base field type without any of the required, repeated
   /// and packed bits.
diff --git a/lib/src/protobuf/generated_message.dart b/lib/src/protobuf/generated_message.dart
index 621821f..cab2749 100644
--- a/lib/src/protobuf/generated_message.dart
+++ b/lib/src/protobuf/generated_message.dart
@@ -11,83 +11,84 @@
 abstract class GeneratedMessage {
 
   // Short names for use in generated code.
-  // TODO(skybrian) change generated code to use FieldType instead.
+  // TODO(skybrian) remove once we're sure that all generated code
+  // uses PbFieldType instead of GeneratedMessage for these constants.
 
   // _O_ptional.
-  static const int OB = FieldType._OPTIONAL_BOOL;
-  static const int OY = FieldType._OPTIONAL_BYTES;
-  static const int OS = FieldType._OPTIONAL_STRING;
-  static const int OF = FieldType._OPTIONAL_FLOAT;
-  static const int OD = FieldType._OPTIONAL_DOUBLE;
-  static const int OE = FieldType._OPTIONAL_ENUM;
-  static const int OG = FieldType._OPTIONAL_GROUP;
-  static const int O3 = FieldType._OPTIONAL_INT32;
-  static const int O6 = FieldType._OPTIONAL_INT64;
-  static const int OS3 = FieldType._OPTIONAL_SINT32;
-  static const int OS6 = FieldType._OPTIONAL_SINT64;
-  static const int OU3 = FieldType._OPTIONAL_UINT32;
-  static const int OU6 = FieldType._OPTIONAL_UINT64;
-  static const int OF3 = FieldType._OPTIONAL_FIXED32;
-  static const int OF6 = FieldType._OPTIONAL_FIXED64;
-  static const int OSF3 = FieldType._OPTIONAL_SFIXED32;
-  static const int OSF6 = FieldType._OPTIONAL_SFIXED64;
-  static const int OM = FieldType._OPTIONAL_MESSAGE;
+  static const int OB = PbFieldType._OPTIONAL_BOOL;
+  static const int OY = PbFieldType._OPTIONAL_BYTES;
+  static const int OS = PbFieldType._OPTIONAL_STRING;
+  static const int OF = PbFieldType._OPTIONAL_FLOAT;
+  static const int OD = PbFieldType._OPTIONAL_DOUBLE;
+  static const int OE = PbFieldType._OPTIONAL_ENUM;
+  static const int OG = PbFieldType._OPTIONAL_GROUP;
+  static const int O3 = PbFieldType._OPTIONAL_INT32;
+  static const int O6 = PbFieldType._OPTIONAL_INT64;
+  static const int OS3 = PbFieldType._OPTIONAL_SINT32;
+  static const int OS6 = PbFieldType._OPTIONAL_SINT64;
+  static const int OU3 = PbFieldType._OPTIONAL_UINT32;
+  static const int OU6 = PbFieldType._OPTIONAL_UINT64;
+  static const int OF3 = PbFieldType._OPTIONAL_FIXED32;
+  static const int OF6 = PbFieldType._OPTIONAL_FIXED64;
+  static const int OSF3 = PbFieldType._OPTIONAL_SFIXED32;
+  static const int OSF6 = PbFieldType._OPTIONAL_SFIXED64;
+  static const int OM = PbFieldType._OPTIONAL_MESSAGE;
 
   // re_Q_uired.
-  static const int QB = FieldType._REQUIRED_BOOL;
-  static const int QY = FieldType._REQUIRED_BYTES;
-  static const int QS = FieldType._REQUIRED_STRING;
-  static const int QF = FieldType._REQUIRED_FLOAT;
-  static const int QD = FieldType._REQUIRED_DOUBLE;
-  static const int QE = FieldType._REQUIRED_ENUM;
-  static const int QG = FieldType._REQUIRED_GROUP;
-  static const int Q3 = FieldType._REQUIRED_INT32;
-  static const int Q6 = FieldType._REQUIRED_INT64;
-  static const int QS3 = FieldType._REQUIRED_SINT32;
-  static const int QS6 = FieldType._REQUIRED_SINT64;
-  static const int QU3 = FieldType._REQUIRED_UINT32;
-  static const int QU6 = FieldType._REQUIRED_UINT64;
-  static const int QF3 = FieldType._REQUIRED_FIXED32;
-  static const int QF6 = FieldType._REQUIRED_FIXED64;
-  static const int QSF3 = FieldType._REQUIRED_SFIXED32;
-  static const int QSF6 = FieldType._REQUIRED_SFIXED64;
-  static const int QM = FieldType._REQUIRED_MESSAGE;
+  static const int QB = PbFieldType._REQUIRED_BOOL;
+  static const int QY = PbFieldType._REQUIRED_BYTES;
+  static const int QS = PbFieldType._REQUIRED_STRING;
+  static const int QF = PbFieldType._REQUIRED_FLOAT;
+  static const int QD = PbFieldType._REQUIRED_DOUBLE;
+  static const int QE = PbFieldType._REQUIRED_ENUM;
+  static const int QG = PbFieldType._REQUIRED_GROUP;
+  static const int Q3 = PbFieldType._REQUIRED_INT32;
+  static const int Q6 = PbFieldType._REQUIRED_INT64;
+  static const int QS3 = PbFieldType._REQUIRED_SINT32;
+  static const int QS6 = PbFieldType._REQUIRED_SINT64;
+  static const int QU3 = PbFieldType._REQUIRED_UINT32;
+  static const int QU6 = PbFieldType._REQUIRED_UINT64;
+  static const int QF3 = PbFieldType._REQUIRED_FIXED32;
+  static const int QF6 = PbFieldType._REQUIRED_FIXED64;
+  static const int QSF3 = PbFieldType._REQUIRED_SFIXED32;
+  static const int QSF6 = PbFieldType._REQUIRED_SFIXED64;
+  static const int QM = PbFieldType._REQUIRED_MESSAGE;
 
   // re_P_eated.
-  static const int PB = FieldType._REPEATED_BOOL;
-  static const int PY = FieldType._REPEATED_BYTES;
-  static const int PS = FieldType._REPEATED_STRING;
-  static const int PF = FieldType._REPEATED_FLOAT;
-  static const int PD = FieldType._REPEATED_DOUBLE;
-  static const int PE = FieldType._REPEATED_ENUM;
-  static const int PG = FieldType._REPEATED_GROUP;
-  static const int P3 = FieldType._REPEATED_INT32;
-  static const int P6 = FieldType._REPEATED_INT64;
-  static const int PS3 = FieldType._REPEATED_SINT32;
-  static const int PS6 = FieldType._REPEATED_SINT64;
-  static const int PU3 = FieldType._REPEATED_UINT32;
-  static const int PU6 = FieldType._REPEATED_UINT64;
-  static const int PF3 = FieldType._REPEATED_FIXED32;
-  static const int PF6 = FieldType._REPEATED_FIXED64;
-  static const int PSF3 = FieldType._REPEATED_SFIXED32;
-  static const int PSF6 = FieldType._REPEATED_SFIXED64;
-  static const int PM = FieldType._REPEATED_MESSAGE;
+  static const int PB = PbFieldType._REPEATED_BOOL;
+  static const int PY = PbFieldType._REPEATED_BYTES;
+  static const int PS = PbFieldType._REPEATED_STRING;
+  static const int PF = PbFieldType._REPEATED_FLOAT;
+  static const int PD = PbFieldType._REPEATED_DOUBLE;
+  static const int PE = PbFieldType._REPEATED_ENUM;
+  static const int PG = PbFieldType._REPEATED_GROUP;
+  static const int P3 = PbFieldType._REPEATED_INT32;
+  static const int P6 = PbFieldType._REPEATED_INT64;
+  static const int PS3 = PbFieldType._REPEATED_SINT32;
+  static const int PS6 = PbFieldType._REPEATED_SINT64;
+  static const int PU3 = PbFieldType._REPEATED_UINT32;
+  static const int PU6 = PbFieldType._REPEATED_UINT64;
+  static const int PF3 = PbFieldType._REPEATED_FIXED32;
+  static const int PF6 = PbFieldType._REPEATED_FIXED64;
+  static const int PSF3 = PbFieldType._REPEATED_SFIXED32;
+  static const int PSF6 = PbFieldType._REPEATED_SFIXED64;
+  static const int PM = PbFieldType._REPEATED_MESSAGE;
 
   // pac_K_ed.
-  static const int KB = FieldType._PACKED_BOOL;
-  static const int KE = FieldType._PACKED_ENUM;
-  static const int KF = FieldType._PACKED_FLOAT;
-  static const int KD = FieldType._PACKED_DOUBLE;
-  static const int K3 = FieldType._PACKED_INT32;
-  static const int K6 = FieldType._PACKED_INT64;
-  static const int KS3 = FieldType._PACKED_SINT32;
-  static const int KS6 = FieldType._PACKED_SINT64;
-  static const int KU3 = FieldType._PACKED_UINT32;
-  static const int KU6 = FieldType._PACKED_UINT64;
-  static const int KF3 = FieldType._PACKED_FIXED32;
-  static const int KF6 = FieldType._PACKED_FIXED64;
-  static const int KSF3 = FieldType._PACKED_SFIXED32;
-  static const int KSF6 = FieldType._PACKED_SFIXED64;
+  static const int KB = PbFieldType._PACKED_BOOL;
+  static const int KE = PbFieldType._PACKED_ENUM;
+  static const int KF = PbFieldType._PACKED_FLOAT;
+  static const int KD = PbFieldType._PACKED_DOUBLE;
+  static const int K3 = PbFieldType._PACKED_INT32;
+  static const int K6 = PbFieldType._PACKED_INT64;
+  static const int KS3 = PbFieldType._PACKED_SINT32;
+  static const int KS6 = PbFieldType._PACKED_SINT64;
+  static const int KU3 = PbFieldType._PACKED_UINT32;
+  static const int KU6 = PbFieldType._PACKED_UINT64;
+  static const int KF3 = PbFieldType._PACKED_FIXED32;
+  static const int KF6 = PbFieldType._PACKED_FIXED64;
+  static const int KSF3 = PbFieldType._PACKED_SFIXED32;
+  static const int KSF6 = PbFieldType._PACKED_SFIXED64;
 
   // Range of integers in JSON (53-bit integers).
   static Int64 MAX_JSON_INT = new Int64.fromInts(0x200000, 0);
@@ -334,24 +335,24 @@
 
       // Ignore required/optional packed/unpacked.
       int fieldType = fi.type;
-      fieldType &= ~(FieldType._PACKED_BIT | FieldType._REQUIRED_BIT);
+      fieldType &= ~(PbFieldType._PACKED_BIT | PbFieldType._REQUIRED_BIT);
       switch (fieldType) {
-        case FieldType._OPTIONAL_BOOL:
+        case PbFieldType._OPTIONAL_BOOL:
           _setField(fi, input.readBool());
           break;
-        case FieldType._OPTIONAL_BYTES:
+        case PbFieldType._OPTIONAL_BYTES:
           _setField(fi, input.readBytes());
           break;
-        case FieldType._OPTIONAL_STRING:
+        case PbFieldType._OPTIONAL_STRING:
           _setField(fi, input.readString());
           break;
-        case FieldType._OPTIONAL_FLOAT:
+        case PbFieldType._OPTIONAL_FLOAT:
           _setField(fi, input.readFloat());
           break;
-        case FieldType._OPTIONAL_DOUBLE:
+        case PbFieldType._OPTIONAL_DOUBLE:
           _setField(fi, input.readDouble());
           break;
-        case FieldType._OPTIONAL_ENUM:
+        case PbFieldType._OPTIONAL_ENUM:
           int rawValue = input.readEnum();
           var value = _getValueOfFunc(tagNumber, extensionRegistry)(rawValue);
           if (value == null) {
@@ -360,7 +361,7 @@
             _setField(fi, value);
           }
           break;
-        case FieldType._OPTIONAL_GROUP:
+        case PbFieldType._OPTIONAL_GROUP:
           GeneratedMessage subMessage =
               _getEmptyMessage(tagNumber, extensionRegistry);
           if (_fieldValues.containsKey(tagNumber)) {
@@ -369,37 +370,37 @@
           input.readGroup(tagNumber, subMessage, extensionRegistry);
           _setField(fi, subMessage);
           break;
-        case FieldType._OPTIONAL_INT32:
+        case PbFieldType._OPTIONAL_INT32:
           _setField(fi, input.readInt32());
           break;
-        case FieldType._OPTIONAL_INT64:
+        case PbFieldType._OPTIONAL_INT64:
           _setField(fi, input.readInt64());
           break;
-        case FieldType._OPTIONAL_SINT32:
+        case PbFieldType._OPTIONAL_SINT32:
           _setField(fi, input.readSint32());
           break;
-        case FieldType._OPTIONAL_SINT64:
+        case PbFieldType._OPTIONAL_SINT64:
           _setField(fi, input.readSint64());
           break;
-        case FieldType._OPTIONAL_UINT32:
+        case PbFieldType._OPTIONAL_UINT32:
           _setField(fi, input.readUint32());
           break;
-        case FieldType._OPTIONAL_UINT64:
+        case PbFieldType._OPTIONAL_UINT64:
           _setField(fi, input.readUint64());
           break;
-        case FieldType._OPTIONAL_FIXED32:
+        case PbFieldType._OPTIONAL_FIXED32:
           _setField(fi, input.readFixed32());
           break;
-        case FieldType._OPTIONAL_FIXED64:
+        case PbFieldType._OPTIONAL_FIXED64:
           _setField(fi, input.readFixed64());
           break;
-        case FieldType._OPTIONAL_SFIXED32:
+        case PbFieldType._OPTIONAL_SFIXED32:
           _setField(fi, input.readSfixed32());
           break;
-        case FieldType._OPTIONAL_SFIXED64:
+        case PbFieldType._OPTIONAL_SFIXED64:
           _setField(fi, input.readSfixed64());
           break;
-        case FieldType._OPTIONAL_MESSAGE:
+        case PbFieldType._OPTIONAL_MESSAGE:
           GeneratedMessage subMessage =
               _getEmptyMessage(tagNumber, extensionRegistry);
           if (_fieldValues.containsKey(tagNumber)) {
@@ -408,22 +409,22 @@
           input.readMessage(subMessage, extensionRegistry);
           _setField(fi, subMessage);
           break;
-        case FieldType._REPEATED_BOOL:
+        case PbFieldType._REPEATED_BOOL:
           readPackable(wireType, tagNumber, input.readBool);
           break;
-        case FieldType._REPEATED_BYTES:
+        case PbFieldType._REPEATED_BYTES:
           appendToRepeated(tagNumber, input.readBytes());
           break;
-        case FieldType._REPEATED_STRING:
+        case PbFieldType._REPEATED_STRING:
           appendToRepeated(tagNumber, input.readString());
           break;
-        case FieldType._REPEATED_FLOAT:
+        case PbFieldType._REPEATED_FLOAT:
           readPackable(wireType, tagNumber, input.readFloat);
           break;
-        case FieldType._REPEATED_DOUBLE:
+        case PbFieldType._REPEATED_DOUBLE:
           readPackable(wireType, tagNumber, input.readDouble);
           break;
-        case FieldType._REPEATED_ENUM:
+        case PbFieldType._REPEATED_ENUM:
           readPackableToList(wireType, tagNumber, (List list) {
             int rawValue = input.readEnum();
             var value = _getValueOfFunc(tagNumber, extensionRegistry)(rawValue);
@@ -434,43 +435,43 @@
             }
           });
           break;
-        case FieldType._REPEATED_GROUP:
+        case PbFieldType._REPEATED_GROUP:
           GeneratedMessage subMessage =
               _getEmptyMessage(tagNumber, extensionRegistry);
           input.readGroup(tagNumber, subMessage, extensionRegistry);
           appendToRepeated(tagNumber, subMessage);
           break;
-        case FieldType._REPEATED_INT32:
+        case PbFieldType._REPEATED_INT32:
           readPackable(wireType, tagNumber, input.readInt32);
           break;
-        case FieldType._REPEATED_INT64:
+        case PbFieldType._REPEATED_INT64:
           readPackable(wireType, tagNumber, input.readInt64);
           break;
-        case FieldType._REPEATED_SINT32:
+        case PbFieldType._REPEATED_SINT32:
           readPackable(wireType, tagNumber, input.readSint32);
           break;
-        case FieldType._REPEATED_SINT64:
+        case PbFieldType._REPEATED_SINT64:
           readPackable(wireType, tagNumber, input.readSint64);
           break;
-        case FieldType._REPEATED_UINT32:
+        case PbFieldType._REPEATED_UINT32:
           readPackable(wireType, tagNumber, input.readUint32);
           break;
-        case FieldType._REPEATED_UINT64:
+        case PbFieldType._REPEATED_UINT64:
           readPackable(wireType, tagNumber, input.readUint64);
           break;
-        case FieldType._REPEATED_FIXED32:
+        case PbFieldType._REPEATED_FIXED32:
           readPackable(wireType, tagNumber, input.readFixed32);
           break;
-        case FieldType._REPEATED_FIXED64:
+        case PbFieldType._REPEATED_FIXED64:
           readPackable(wireType, tagNumber, input.readFixed64);
           break;
-        case FieldType._REPEATED_SFIXED32:
+        case PbFieldType._REPEATED_SFIXED32:
           readPackable(wireType, tagNumber, input.readSfixed32);
           break;
-        case FieldType._REPEATED_SFIXED64:
+        case PbFieldType._REPEATED_SFIXED64:
           readPackable(wireType, tagNumber, input.readSfixed64);
           break;
-        case FieldType._REPEATED_MESSAGE:
+        case PbFieldType._REPEATED_MESSAGE:
           GeneratedMessage subMessage =
               _getEmptyMessage(tagNumber, extensionRegistry);
           input.readMessage(subMessage, extensionRegistry);
@@ -505,40 +506,40 @@
   /// The encoding is described in [GeneratedMessage.writeToJson].
   Map<String, dynamic> writeToJsonMap() {
     convertToMap(fieldValue, fieldType) {
-      int baseType = FieldType._baseType(fieldType);
+      int baseType = PbFieldType._baseType(fieldType);
 
       if (_isRepeated(fieldType)) {
         return new List.from(fieldValue.map((e) => convertToMap(e, baseType)));
       }
 
       switch (baseType) {
-      case FieldType._BOOL_BIT:
-      case FieldType._STRING_BIT:
-      case FieldType._FLOAT_BIT:
-      case FieldType._DOUBLE_BIT:
-      case FieldType._INT32_BIT:
-      case FieldType._SINT32_BIT:
-      case FieldType._UINT32_BIT:
-      case FieldType._FIXED32_BIT:
-      case FieldType._SFIXED32_BIT:
+      case PbFieldType._BOOL_BIT:
+      case PbFieldType._STRING_BIT:
+      case PbFieldType._FLOAT_BIT:
+      case PbFieldType._DOUBLE_BIT:
+      case PbFieldType._INT32_BIT:
+      case PbFieldType._SINT32_BIT:
+      case PbFieldType._UINT32_BIT:
+      case PbFieldType._FIXED32_BIT:
+      case PbFieldType._SFIXED32_BIT:
         return fieldValue;
-      case FieldType._BYTES_BIT:
+      case PbFieldType._BYTES_BIT:
         // Encode 'bytes' as a base64-encoded string.
         return CryptoUtils.bytesToBase64(fieldValue);
-      case FieldType._ENUM_BIT:
+      case PbFieldType._ENUM_BIT:
         return fieldValue.value; // assume |value| < 2^52
-      case FieldType._INT64_BIT:
-      case FieldType._SINT64_BIT:
-      case FieldType._UINT64_BIT:
-      case FieldType._FIXED64_BIT:
-      case FieldType._SFIXED64_BIT:
+      case PbFieldType._INT64_BIT:
+      case PbFieldType._SINT64_BIT:
+      case PbFieldType._UINT64_BIT:
+      case PbFieldType._FIXED64_BIT:
+      case PbFieldType._SFIXED64_BIT:
         // Use strings for 64-bit integers which cannot fit in doubles.
         if (MIN_JSON_INT <= fieldValue && fieldValue <= MAX_JSON_INT) {
           return fieldValue.toInt();
         }
         return fieldValue.toString();
-      case FieldType._GROUP_BIT:
-      case FieldType._MESSAGE_BIT:
+      case PbFieldType._GROUP_BIT:
+      case PbFieldType._MESSAGE_BIT:
         return fieldValue.writeToJsonMap();
       default:
         throw 'Unknown type $fieldType';
@@ -610,8 +611,8 @@
   _convertJsonValue(value, int tagNumber, int fieldType,
                    ExtensionRegistry extensionRegistry) {
     String expectedType; // for exception message
-    switch (FieldType._baseType(fieldType)) {
-    case FieldType._BOOL_BIT:
+    switch (PbFieldType._baseType(fieldType)) {
+    case PbFieldType._BOOL_BIT:
       if (value is bool) {
         return value;
       } else if (value is String) {
@@ -630,20 +631,20 @@
         expectedType = 'bool, 0, or 1';
       }
       break;
-    case FieldType._BYTES_BIT:
+    case PbFieldType._BYTES_BIT:
       if (value is String) {
         return CryptoUtils.base64StringToBytes(value);
       }
       expectedType = 'Base64 String';
       break;
-    case FieldType._STRING_BIT:
+    case PbFieldType._STRING_BIT:
       if (value is String) {
         return value;
       }
       expectedType = 'String';
       break;
-    case FieldType._FLOAT_BIT:
-    case FieldType._DOUBLE_BIT:
+    case PbFieldType._FLOAT_BIT:
+    case PbFieldType._DOUBLE_BIT:
       // Allow quoted values, although we don't emit them.
       if (value is double) {
         return value;
@@ -654,7 +655,7 @@
       }
       expectedType = 'num or stringified num';
       break;
-    case FieldType._ENUM_BIT:
+    case PbFieldType._ENUM_BIT:
       // Allow quoted values, although we don't emit them.
       if (value is String) {
         value = int.parse(value);
@@ -664,11 +665,11 @@
       }
       expectedType = 'int or stringified int';
       break;
-    case FieldType._INT32_BIT:
-    case FieldType._SINT32_BIT:
-    case FieldType._UINT32_BIT:
-    case FieldType._FIXED32_BIT:
-    case FieldType._SFIXED32_BIT:
+    case PbFieldType._INT32_BIT:
+    case PbFieldType._SINT32_BIT:
+    case PbFieldType._UINT32_BIT:
+    case PbFieldType._FIXED32_BIT:
+    case PbFieldType._SFIXED32_BIT:
       if (value is String) {
         value = int.parse(value);
       }
@@ -678,11 +679,11 @@
       }
       expectedType = 'int or stringified int';
       break;
-    case FieldType._INT64_BIT:
-    case FieldType._SINT64_BIT:
-    case FieldType._UINT64_BIT:
-    case FieldType._FIXED64_BIT:
-    case FieldType._SFIXED64_BIT:
+    case PbFieldType._INT64_BIT:
+    case PbFieldType._SINT64_BIT:
+    case PbFieldType._UINT64_BIT:
+    case PbFieldType._FIXED64_BIT:
+    case PbFieldType._SFIXED64_BIT:
       // Allow quoted values, although we don't emit them.
       if (value is String) {
         return Int64.parseRadix(value, 10);
@@ -692,8 +693,8 @@
       }
       expectedType = 'int or stringified int';
       break;
-    case FieldType._GROUP_BIT:
-    case FieldType._MESSAGE_BIT:
+    case PbFieldType._GROUP_BIT:
+    case PbFieldType._MESSAGE_BIT:
       if (value is Map) {
         GeneratedMessage subMessage =
             _getEmptyMessage(tagNumber, extensionRegistry);
diff --git a/lib/src/protobuf/unknown_field_set.dart b/lib/src/protobuf/unknown_field_set.dart
index 3f56517..32073b1 100644
--- a/lib/src/protobuf/unknown_field_set.dart
+++ b/lib/src/protobuf/unknown_field_set.dart
@@ -223,11 +223,11 @@
       output.writeField(fieldNumber, type, value);
     }
 
-    write(FieldType._REPEATED_UINT64, varints);
-    write(FieldType._REPEATED_FIXED32, fixed32s);
-    write(FieldType._REPEATED_FIXED64, fixed64s);
-    write(FieldType._REPEATED_BYTES, lengthDelimited);
-    write(FieldType._REPEATED_GROUP, groups);
+    write(PbFieldType._REPEATED_UINT64, varints);
+    write(PbFieldType._REPEATED_FIXED32, fixed32s);
+    write(PbFieldType._REPEATED_FIXED64, fixed64s);
+    write(PbFieldType._REPEATED_BYTES, lengthDelimited);
+    write(PbFieldType._REPEATED_GROUP, groups);
   }
 
   void addGroup(UnknownFieldSet value) {
diff --git a/lib/src/protobuf/wire_format.dart b/lib/src/protobuf/wire_format.dart
index daa2a70..5b2659c 100644
--- a/lib/src/protobuf/wire_format.dart
+++ b/lib/src/protobuf/wire_format.dart
@@ -22,32 +22,32 @@
 
 /// Returns true if the wireType can be merged into the given fieldType.
 bool _wireTypeMatches(int fieldType, int wireType) {
-  switch (FieldType._baseType(fieldType)) {
-    case FieldType._BOOL_BIT:
-    case FieldType._ENUM_BIT:
-    case FieldType._INT32_BIT:
-    case FieldType._INT64_BIT:
-    case FieldType._SINT32_BIT:
-    case FieldType._SINT64_BIT:
-    case FieldType._UINT32_BIT:
-    case FieldType._UINT64_BIT:
+  switch (PbFieldType._baseType(fieldType)) {
+    case PbFieldType._BOOL_BIT:
+    case PbFieldType._ENUM_BIT:
+    case PbFieldType._INT32_BIT:
+    case PbFieldType._INT64_BIT:
+    case PbFieldType._SINT32_BIT:
+    case PbFieldType._SINT64_BIT:
+    case PbFieldType._UINT32_BIT:
+    case PbFieldType._UINT64_BIT:
       return wireType == WIRETYPE_VARINT ||
           wireType == WIRETYPE_LENGTH_DELIMITED;
-    case FieldType._FLOAT_BIT:
-    case FieldType._FIXED32_BIT:
-    case FieldType._SFIXED32_BIT:
+    case PbFieldType._FLOAT_BIT:
+    case PbFieldType._FIXED32_BIT:
+    case PbFieldType._SFIXED32_BIT:
       return wireType == WIRETYPE_FIXED32 ||
           wireType == WIRETYPE_LENGTH_DELIMITED;
-    case FieldType._DOUBLE_BIT:
-    case FieldType._FIXED64_BIT:
-    case FieldType._SFIXED64_BIT:
+    case PbFieldType._DOUBLE_BIT:
+    case PbFieldType._FIXED64_BIT:
+    case PbFieldType._SFIXED64_BIT:
       return wireType == WIRETYPE_FIXED64 ||
           wireType == WIRETYPE_LENGTH_DELIMITED;
-    case FieldType._BYTES_BIT:
-    case FieldType._STRING_BIT:
-    case FieldType._MESSAGE_BIT:
+    case PbFieldType._BYTES_BIT:
+    case PbFieldType._STRING_BIT:
+    case PbFieldType._MESSAGE_BIT:
       return wireType == WIRETYPE_LENGTH_DELIMITED;
-    case FieldType._GROUP_BIT:
+    case PbFieldType._GROUP_BIT:
       return wireType == WIRETYPE_START_GROUP;
     default:
       return false;
diff --git a/pubspec.yaml b/pubspec.yaml
index b59fe9b..463a86c 100644
--- a/pubspec.yaml
+++ b/pubspec.yaml
@@ -1,5 +1,5 @@
 name: protobuf
-version: 0.4.1
+version: 0.4.2
 author: Dart Team <misc@dartlang.org>
 description: Runtime library for protobuf support.
 homepage: https://github.com/dart-lang/dart-protobuf
diff --git a/test/event_test.dart b/test/event_test.dart
index cbc6f0f..446df34 100644
--- a/test/event_test.dart
+++ b/test/event_test.dart
@@ -8,7 +8,7 @@
 import 'dart:typed_data' show Uint8List;
 
 import 'package:protobuf/protobuf.dart'
-    show GeneratedMessage, Extension, ExtensionRegistry, FieldType;
+    show GeneratedMessage, Extension, ExtensionRegistry, PbFieldType;
 import 'package:protobuf/src/protobuf/mixins/event_mixin.dart'
     show PbEventMixin, PbFieldChange;
 import 'package:test/test.dart' show test, expect, predicate, same;
@@ -20,7 +20,7 @@
   Rec create() => new Rec();
 }
 
-Extension comment = new Extension("Rec", "comment", 5, FieldType.OS);
+Extension comment = new Extension("Rec", "comment", 5, PbFieldType.OS);
 
 main() {
   test('Events are sent when setting and clearing a non-repeated field', () {
diff --git a/test/list_test.dart b/test/list_test.dart
index 38ed442..0123892 100755
--- a/test/list_test.dart
+++ b/test/list_test.dart
@@ -99,7 +99,7 @@
   });
 
   test('PbList for signed int32 validates items', () {
-    var list = new PbList.forFieldType(FieldType.P3);
+    var list = new PbList.forFieldType(PbFieldType.P3);
 
     expect(() {
       list.add(-2147483649);
@@ -119,7 +119,7 @@
   });
 
   test('PBList for unsigned int32 validates items', () {
-    var list = new PbList.forFieldType(FieldType.PU3);
+    var list = new PbList.forFieldType(PbFieldType.PU3);
 
     expect(() {
       list.add(-1);
@@ -139,7 +139,7 @@
   });
 
   test('PbList for float validates items', () {
-    var list = new PbList.forFieldType(FieldType.PF);
+    var list = new PbList.forFieldType(PbFieldType.PF);
 
     expect(() {
       list.add(3.4028234663852886E39);
@@ -159,7 +159,7 @@
   });
 
   test('PbList for signed Int64 validates items', () {
-    var list = new PbList.forFieldType(FieldType.P6);
+    var list = new PbList.forFieldType(PbFieldType.P6);
     expect(() {
       list.add(cast(0)); // not an Int64
     }, badArgument);
@@ -178,7 +178,7 @@
   });
 
   test('PbList for unsigned Int64 validates items', () {
-    var list = new PbList.forFieldType(FieldType.PU6);
+    var list = new PbList.forFieldType(PbFieldType.PU6);
     expect(() {
       list.add(cast(0)); // not an Int64
     }, badArgument);