diff --git a/com.google.eclipse.protobuf.feature/feature.xml b/com.google.eclipse.protobuf.feature/feature.xml
index 60eb4ac..01cb397 100644
--- a/com.google.eclipse.protobuf.feature/feature.xml
+++ b/com.google.eclipse.protobuf.feature/feature.xml
@@ -2,7 +2,7 @@
 <feature
       id="com.google.eclipse.protobuf"
       label="%featureName"
-      version="1.3.5.qualifier"
+      version="1.3.3.qualifier"
       provider-name="%providerName">
 
    <description url="https://code.google.com/p/protobuf-dt/">
diff --git a/com.google.eclipse.protobuf.ui.integration.test/.gitignore b/com.google.eclipse.protobuf.ui.integration.test/.gitignore
deleted file mode 100644
index 5e56e04..0000000
--- a/com.google.eclipse.protobuf.ui.integration.test/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-/bin
diff --git a/com.google.eclipse.protobuf.ui.test/.gitignore b/com.google.eclipse.protobuf.ui.test/.gitignore
deleted file mode 100644
index 5e56e04..0000000
--- a/com.google.eclipse.protobuf.ui.test/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-/bin
diff --git a/com.google.eclipse.protobuf.ui/META-INF/MANIFEST.MF b/com.google.eclipse.protobuf.ui/META-INF/MANIFEST.MF
index 3afef04..b509576 100644
--- a/com.google.eclipse.protobuf.ui/META-INF/MANIFEST.MF
+++ b/com.google.eclipse.protobuf.ui/META-INF/MANIFEST.MF
@@ -2,7 +2,7 @@
 Bundle-ManifestVersion: 2
 Bundle-Name: %Bundle-Name
 Bundle-Vendor: %Bundle-Vendor
-Bundle-Version: 1.3.5.qualifier
+Bundle-Version: 1.3.3.qualifier
 Bundle-SymbolicName: com.google.eclipse.protobuf.ui; singleton:=true
 Bundle-ActivationPolicy: lazy
 Require-Bundle: com.google.eclipse.protobuf;visibility:=reexport,
@@ -29,6 +29,5 @@
  com.google.eclipse.protobuf.ui.plugin,
  com.google.eclipse.protobuf.ui.preferences,
  com.google.eclipse.protobuf.ui.preferences.compiler,
- com.google.eclipse.protobuf.ui.util,
- com.google.eclipse.protobuf.ui.quickfix
+ com.google.eclipse.protobuf.ui.util
 Bundle-Activator: com.google.eclipse.protobuf.ui.internal.ProtobufActivator
diff --git a/com.google.eclipse.protobuf/META-INF/MANIFEST.MF b/com.google.eclipse.protobuf/META-INF/MANIFEST.MF
index ff18266..b714cf1 100644
--- a/com.google.eclipse.protobuf/META-INF/MANIFEST.MF
+++ b/com.google.eclipse.protobuf/META-INF/MANIFEST.MF
@@ -3,7 +3,7 @@
 Eclipse-ExtensibleAPI: true
 Bundle-Name: %Bundle-Name
 Bundle-Vendor: %Bundle-Vendor
-Bundle-Version: 1.3.5.qualifier
+Bundle-Version: 1.3.3.qualifier
 Bundle-SymbolicName: com.google.eclipse.protobuf; singleton:=true
 Bundle-ActivationPolicy: lazy
 Require-Bundle: org.eclipse.xtext;bundle-version="2.3.0",
diff --git a/com.google.eclipse.protobuf/descriptor.proto b/com.google.eclipse.protobuf/descriptor.proto
index a2b9b4d..d959ce1 100644
--- a/com.google.eclipse.protobuf/descriptor.proto
+++ b/com.google.eclipse.protobuf/descriptor.proto
@@ -1,266 +1,446 @@
-// Copyright 2013 Google Inc.  All rights reserved.
+// Protocol Buffers - Google's data interchange format
+// Copyright 2008 Google Inc.  All rights reserved.
+// http://code.google.com/p/protobuf/
+//
+// Redistribution and use in source and binary forms, with or without
+// modification, are permitted provided that the following conditions are
+// met:
+//
+//     * Redistributions of source code must retain the above copyright
+// notice, this list of conditions and the following disclaimer.
+//     * Redistributions in binary form must reproduce the above
+// copyright notice, this list of conditions and the following disclaimer
+// in the documentation and/or other materials provided with the
+// distribution.
+//     * Neither the name of Google Inc. nor the names of its
+// contributors may be used to endorse or promote products derived from
+// this software without specific prior written permission.
+//
+// THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+// "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+// LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+// A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+// OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+// SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+// LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+// DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+// THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+// (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+// OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 
+// Author: kenton@google.com (Kenton Varda)
+//  Based on original Protocol Buffers design by
+//  Sanjay Ghemawat, Jeff Dean, and others.
+//
+// The messages in this file describe the definitions found in .proto files.
+// A valid .proto file can be translated directly to a FileDescriptorProto
+// without any other information (e.g. without reading its imports).
 syntax = "proto2";
 
-package proto2;
 
+package google.protobuf;
 option java_package = "com.google.protobuf";
 option java_outer_classname = "DescriptorProtos";
+
+// descriptor.proto must be optimized for speed because reflection-based
+// algorithms don't work during bootstrapping.
 option optimize_for = SPEED;
 
+// The protocol compiler can output a FileDescriptorSet containing the .proto
+// files it parses.
 message FileDescriptorSet {
   repeated FileDescriptorProto file = 1;
 }
 
+// Describes a complete .proto file.
 message FileDescriptorProto {
-  optional string name = 1;
-  optional string package = 2;
+  optional string name = 1;       // file name, relative to root of source tree
+  optional string package = 2;    // e.g. "foo", "foo.bar", etc.
+
+  // Names of files imported by this file.
   repeated string dependency = 3;
-  repeated int32 public_dependency = 10;
-  repeated int32 weak_dependency = 11;
+
+  // All top-level definitions in this file.
   repeated DescriptorProto message_type = 4;
   repeated EnumDescriptorProto enum_type = 5;
   repeated ServiceDescriptorProto service = 6;
   repeated FieldDescriptorProto extension = 7;
+
   optional FileOptions options = 8;
+
+  // This field contains optional information about the original source code.
+  // You may safely remove this entire field whithout harming runtime
+  // functionality of the descriptors -- the information is needed only by
+  // development tools.
   optional SourceCodeInfo source_code_info = 9;
 }
 
+// Describes a message type.
 message DescriptorProto {
   optional string name = 1;
+
   repeated FieldDescriptorProto field = 2;
   repeated FieldDescriptorProto extension = 6;
+
   repeated DescriptorProto nested_type = 3;
   repeated EnumDescriptorProto enum_type = 4;
+
   message ExtensionRange {
     optional int32 start = 1;
     optional int32 end = 2;
   }
   repeated ExtensionRange extension_range = 5;
+
   optional MessageOptions options = 7;
 }
 
+// Describes a field within a message.
 message FieldDescriptorProto {
   enum Type {
+    // 0 is reserved for errors.
+    // Order is weird for historical reasons.
     TYPE_DOUBLE         = 1;
     TYPE_FLOAT          = 2;
-    TYPE_INT64          = 3;
+    TYPE_INT64          = 3;   // Not ZigZag encoded.  Negative numbers
+                               // take 10 bytes.  Use TYPE_SINT64 if negative
+                               // values are likely.
     TYPE_UINT64         = 4;
-    TYPE_INT32          = 5;
+    TYPE_INT32          = 5;   // Not ZigZag encoded.  Negative numbers
+                               // take 10 bytes.  Use TYPE_SINT32 if negative
+                               // values are likely.
     TYPE_FIXED64        = 6;
     TYPE_FIXED32        = 7;
     TYPE_BOOL           = 8;
     TYPE_STRING         = 9;
-    TYPE_GROUP          = 10;
-    TYPE_MESSAGE        = 11;
+    TYPE_GROUP          = 10;  // Tag-delimited aggregate.
+    TYPE_MESSAGE        = 11;  // Length-delimited aggregate.
+
+    // New in version 2.
     TYPE_BYTES          = 12;
     TYPE_UINT32         = 13;
     TYPE_ENUM           = 14;
     TYPE_SFIXED32       = 15;
     TYPE_SFIXED64       = 16;
-    TYPE_SINT32         = 17;
-    TYPE_SINT64         = 18;
+    TYPE_SINT32         = 17;  // Uses ZigZag encoding.
+    TYPE_SINT64         = 18;  // Uses ZigZag encoding.
   };
+
   enum Label {
+    // 0 is reserved for errors
     LABEL_OPTIONAL      = 1;
     LABEL_REQUIRED      = 2;
     LABEL_REPEATED      = 3;
+    // TODO(sanjay): Should we add LABEL_MAP?
   };
+
   optional string name = 1;
   optional int32 number = 3;
   optional Label label = 4;
+
+  // If type_name is set, this need not be set.  If both this and type_name
+  // are set, this must be either TYPE_ENUM or TYPE_MESSAGE.
   optional Type type = 5;
+
+  // For message and enum types, this is the name of the type.  If the name
+  // starts with a '.', it is fully-qualified.  Otherwise, C++-like scoping
+  // rules are used to find the type (i.e. first the nested types within this
+  // message are searched, then within the parent, on up to the root
+  // namespace).
   optional string type_name = 6;
+
+  // For extensions, this is the name of the type being extended.  It is
+  // resolved in the same manner as type_name.
   optional string extendee = 2;
+
+  // For numeric types, contains the original text representation of the value.
+  // For booleans, "true" or "false".
+  // For strings, contains the default text contents (not escaped in any way).
+  // For bytes, contains the C escaped value.  All bytes >= 128 are escaped.
+  // TODO(kenton):  Base-64 encode?
   optional string default_value = 7;
+
   optional FieldOptions options = 8;
 }
 
+// Describes an enum type.
 message EnumDescriptorProto {
   optional string name = 1;
+
   repeated EnumValueDescriptorProto value = 2;
+
   optional EnumOptions options = 3;
 }
 
+// Describes a value within an enum.
 message EnumValueDescriptorProto {
   optional string name = 1;
   optional int32 number = 2;
+
   optional EnumValueOptions options = 3;
 }
 
+// Describes a service.
 message ServiceDescriptorProto {
   optional string name = 1;
   repeated MethodDescriptorProto method = 2;
-  repeated StreamDescriptorProto stream = 4;
+
   optional ServiceOptions options = 3;
 }
 
+// Describes a method of a service.
 message MethodDescriptorProto {
   optional string name = 1;
+
+  // Input and output type names.  These are resolved in the same way as
+  // FieldDescriptorProto.type_name, but must refer to a message type.
   optional string input_type = 2;
   optional string output_type = 3;
+
   optional MethodOptions options = 4;
 }
 
-message StreamDescriptorProto {
-  optional string name = 1;
-  optional string client_message_type = 2;
-  optional string server_message_type = 3;
-  optional StreamOptions options = 4;
-}
+// ===================================================================
+// Options
+
+// Each of the definitions above may have "options" attached.  These are
+// just annotations which may cause code to be generated slightly differently
+// or may contain hints for code that manipulates protocol messages.
+//
+// Clients may define custom options as extensions of the *Options messages.
+// These extensions may not yet be known at parsing time, so the parser cannot
+// store the values in them.  Instead it stores them in a field in the *Options
+// message called uninterpreted_option. This field must have the same name
+// across all *Options messages. We then use this field to populate the
+// extensions when we build a descriptor, at which point all protos have been
+// parsed and so all extensions are known.
+//
+// Extension numbers for custom options may be chosen as follows:
+// * For options which will only be used within a single application or
+//   organization, or for experimental options, use field numbers 50000
+//   through 99999.  It is up to you to ensure that you do not use the
+//   same number for multiple options.
+// * For options which will be published and used publicly by multiple
+//   independent entities, e-mail protobuf-global-extension-registry@google.com
+//   to reserve extension numbers. Simply provide your project name (e.g.
+//   Object-C plugin) and your porject website (if available) -- there's no need
+//   to explain how you intend to use them. Usually you only need one extension
+//   number. You can declare multiple options with only one extension number by
+//   putting them in a sub-message. See the Custom Options section of the docs
+//   for examples:
+//   http://code.google.com/apis/protocolbuffers/docs/proto.html#options
+//   If this turns out to be popular, a web service will be set up
+//   to automatically assign option numbers.
+
 
 message FileOptions {
-  optional int32 cc_api_version = 2 [default=2];
-  enum CompatibilityLevel {
-    NO_COMPATIBILITY = 0;
-    PROTO1_COMPATIBLE = 100;
-    DEPRECATED_PROTO1_COMPATIBLE = 50;
-  }
-  optional CompatibilityLevel cc_api_compatibility = 15 [default=NO_COMPATIBILITY];
-  optional bool cc_proto_array_compatible = 22 [default=true];
-  optional bool cc_utf8_verification = 24 [default=true];
-  optional bool cc_proto1_text_format = 25 [default=false];
+
+  // Sets the Java package where classes generated from this .proto will be
+  // placed.  By default, the proto package is used, but this is often
+  // inappropriate because proto packages do not normally start with backwards
+  // domain names.
   optional string java_package = 1;
-  optional int32 py_api_version = 4 [default=2];
-  optional int32 java_api_version = 5 [default=2];
-  optional bool java_use_javaproto2 = 6 [default=true];
-  optional bool java_java5_enums = 7 [default=true];
-  optional bool java_generate_rpc_baseimpl = 13 [default=false];
-  optional bool java_use_javastrings = 21 [default=false];
-  optional string java_alt_api_package = 19;
+
+
+  // If set, all the classes from the .proto file are wrapped in a single
+  // outer class with the given name.  This applies to both Proto1
+  // (equivalent to the old "--one_java_file" option) and Proto2 (where
+  // a .proto always translates to a single class, but you may want to
+  // explicitly choose the class name).
   optional string java_outer_classname = 8;
+
+  // If set true, then the Java code generator will generate a separate .java
+  // file for each top-level message, enum, and service defined in the .proto
+  // file.  Thus, these types will *not* be nested inside the outer class
+  // named by java_outer_classname.  However, the outer class will still be
+  // generated to contain the file's getDescriptor() method as well as any
+  // top-level extensions defined in the file.
   optional bool java_multiple_files = 10 [default=false];
+
+  // If set true, then the Java code generator will generate equals() and
+  // hashCode() methods for all messages defined in the .proto file. This is
+  // purely a speed optimization, as the AbstractMessage base class includes
+  // reflection-based implementations of these methods.
   optional bool java_generate_equals_and_hash = 20 [default=false];
+
+  // Generated classes can be optimized for speed or code size.
   enum OptimizeMode {
-    SPEED = 1;
-    CODE_SIZE = 2;
-    LITE_RUNTIME = 3;
+    SPEED = 1;        // Generate complete code for parsing, serialization,
+                      // etc.
+    CODE_SIZE = 2;    // Use ReflectionOps to implement these methods.
+    LITE_RUNTIME = 3; // Generate code using MessageLite and the lite runtime.
   }
   optional OptimizeMode optimize_for = 9 [default=SPEED];
-  optional string go_package = 11;
-  optional string javascript_package = 12;
-  optional int32 szl_api_version = 14 [default=1];
+
+
+
+
+  // Should generic services be generated in each language?  "Generic" services
+  // are not specific to any particular RPC system.  They are generated by the
+  // main code generators in each language (without additional plugins).
+  // Generic services were the only kind of service generation supported by
+  // early versions of proto2.
+  //
+  // Generic services are now considered deprecated in favor of using plugins
+  // that generate code specific to your particular RPC system.  Therefore,
+  // these default to false.  Old code which depends on generic services should
+  // explicitly set them to true.
+  optional bool cc_generic_services = 16 [default=false];
   optional bool java_generic_services = 17 [default=false];
   optional bool py_generic_services = 18 [default=false];
-  optional bool deprecated = 23 [default=false];
+
+  // The parser stores options it doesn't recognize here. See above.
   repeated UninterpretedOption uninterpreted_option = 999;
+
+  // Clients can define custom options in extensions of this message. See above.
   extensions 1000 to max;
 }
 
 message MessageOptions {
+  // Set true to use the old proto1 MessageSet wire format for extensions.
+  // This is provided for backwards-compatibility with the MessageSet wire
+  // format.  You should not use this for any other reason:  It's less
+  // efficient, has fewer features, and is more complicated.
+  //
+  // The message must be defined exactly as follows:
+  //   message Foo {
+  //     option message_set_wire_format = true;
+  //     extensions 4 to max;
+  //   }
+  // Note that the message cannot have any defined fields; MessageSets only
+  // have extensions.
+  //
+  // All extensions of your type must be singular messages; e.g. they cannot
+  // be int32s, enums, or repeated messages.
+  //
+  // Because this is an option, the above two restrictions are not enforced by
+  // the protocol compiler.
   optional bool message_set_wire_format = 1 [default=false];
+
+  // Disables the generation of the standard "descriptor()" accessor, which can
+  // conflict with a field of the same name.  This is meant to make migration
+  // from proto1 easier; new code should avoid fields named "descriptor".
   optional bool no_standard_descriptor_accessor = 2 [default=false];
-  optional bool deprecated = 3 [default=false];
+
+  // The parser stores options it doesn't recognize here. See above.
   repeated UninterpretedOption uninterpreted_option = 999;
+
+  // Clients can define custom options in extensions of this message. See above.
   extensions 1000 to max;
 }
 
 message FieldOptions {
+  // The ctype option instructs the C++ code generator to use a different
+  // representation of the field than it normally would.  See the specific
+  // options below.  This option is not yet implemented in the open source
+  // release -- sorry, we'll try to include it in a future version!
   optional CType ctype = 1 [default = STRING];
   enum CType {
+    // Default mode.
     STRING = 0;
+
     CORD = 1;
+
     STRING_PIECE = 2;
   }
+  // The packed option can be enabled for repeated primitive fields to enable
+  // a more efficient representation on the wire. Rather than repeatedly
+  // writing the tag and type for each element, the entire array is encoded as
+  // a single length-delimited blob.
   optional bool packed = 2;
-  optional JType jtype = 4 [default = NORMAL];
-  enum JType {
-    NORMAL = 0;
-    BYTES = 1;
-  }
-  optional JSType jstype = 6 [default = JS_NORMAL];
-  enum JSType {
-    JS_NORMAL = 0;
-    JS_STRING = 1;
-    JS_NUMBER = 2;
-  }
-  optional bool lazy = 5 [default=false];
+
+
+  // Is this field deprecated?
+  // Depending on the target platform, this can emit Deprecated annotations
+  // for accessors, or it will be completely ignored; in the very least, this
+  // is a formalization for deprecating fields.
   optional bool deprecated = 3 [default=false];
+
+  // EXPERIMENTAL.  DO NOT USE.
+  // For "map" fields, the name of the field in the enclosed type that
+  // is the key for this map.  For example, suppose we have:
+  //   message Item {
+  //     required string name = 1;
+  //     required string value = 2;
+  //   }
+  //   message Config {
+  //     repeated Item items = 1 [experimental_map_key="name"];
+  //   }
+  // In this situation, the map key for Item will be set to "name".
+  // TODO: Fully-implement this, then remove the "experimental_" prefix.
   optional string experimental_map_key = 9;
-  optional bool weak = 10 [default=false];
-  message UpgradedOption {
-    optional string name = 1;
-    optional string value = 2;
-  };
-  repeated UpgradedOption upgraded_option = 11;
+
+  // The parser stores options it doesn't recognize here. See above.
   repeated UninterpretedOption uninterpreted_option = 999;
+
+  // Clients can define custom options in extensions of this message. See above.
   extensions 1000 to max;
 }
 
 message EnumOptions {
-  optional string proto1_name = 1;
-  optional bool allow_alias = 2;
-  optional bool deprecated = 3 [default=false];
+
+  // The parser stores options it doesn't recognize here. See above.
   repeated UninterpretedOption uninterpreted_option = 999;
+
+  // Clients can define custom options in extensions of this message. See above.
   extensions 1000 to max;
 }
 
 message EnumValueOptions {
-  optional bool deprecated = 1 [default=false];
+  // The parser stores options it doesn't recognize here. See above.
   repeated UninterpretedOption uninterpreted_option = 999;
+
+  // Clients can define custom options in extensions of this message. See above.
   extensions 1000 to max;
 }
 
 message ServiceOptions {
-  optional bool multicast_stub = 20 [default=false];
-  optional double failure_detection_delay = 16 [default=-1.0];
-  optional bool deprecated = 33 [default=false];
+
+  // Note:  Field numbers 1 through 32 are reserved for Google's internal RPC
+  //   framework.  We apologize for hoarding these numbers to ourselves, but
+  //   we were already using them long before we decided to release Protocol
+  //   Buffers.
+
+  // The parser stores options it doesn't recognize here. See above.
   repeated UninterpretedOption uninterpreted_option = 999;
+
+  // Clients can define custom options in extensions of this message. See above.
   extensions 1000 to max;
 }
 
 message MethodOptions {
-  enum Protocol {
-    TCP = 0;
-    UDP = 1;
-  }
-  enum SecurityLevel {
-    NONE = 0;
-    INTEGRITY = 1;
-    PRIVACY_AND_INTEGRITY = 2;
-    STRONG_PRIVACY_AND_INTEGRITY = 3;
-  }
-  enum Format {
-    UNCOMPRESSED = 0;
-    ZIPPY_COMPRESSED = 1;
-  }
-  optional double deadline = 8  [default=-1.0];
-  optional bool duplicate_suppression = 9  [default=false];
-  optional bool fail_fast = 10 [default=false];
-  optional sint32 client_logging = 11 [default=256];
-  optional sint32 server_logging = 12 [default=256];
-  optional SecurityLevel security_level = 13 [default=NONE];
-  optional Format response_format = 15 [default=UNCOMPRESSED];
-  optional Format request_format = 17 [default=UNCOMPRESSED];
-  optional string stream_type = 18;
-  optional bool deprecated = 33 [default=false];
+
+  // Note:  Field numbers 1 through 32 are reserved for Google's internal RPC
+  //   framework.  We apologize for hoarding these numbers to ourselves, but
+  //   we were already using them long before we decided to release Protocol
+  //   Buffers.
+
+  // The parser stores options it doesn't recognize here. See above.
   repeated UninterpretedOption uninterpreted_option = 999;
+
+  // Clients can define custom options in extensions of this message. See above.
   extensions 1000 to max;
 }
 
-message StreamOptions {
-  enum TokenUnit {
-    MESSAGE = 0;
-    BYTE = 1;
-  }
-  optional int64 client_initial_tokens = 1 [default=-1];
-  optional int64 server_initial_tokens = 2 [default=-1];
-  optional TokenUnit token_unit = 3 [default=MESSAGE];
-  optional MethodOptions.SecurityLevel security_level = 4 [default=NONE];
-  optional string security_label = 5;
-  optional int32 client_logging = 6 [default=256];
-  optional int32 server_logging = 7 [default=256];
-  optional bool deprecated = 33 [default=false];
-  repeated UninterpretedOption uninterpreted_option = 999;
-  extensions 1000 to max;
-}
-
+// A message representing a option the parser does not recognize. This only
+// appears in options protos created by the compiler::Parser class.
+// DescriptorPool resolves these when building Descriptor objects. Therefore,
+// options protos in descriptor objects (e.g. returned by Descriptor::options(),
+// or produced by Descriptor::CopyTo()) will never have UninterpretedOptions
+// in them.
 message UninterpretedOption {
+  // The name of the uninterpreted option.  Each string represents a segment in
+  // a dot-separated name.  is_extension is true iff a segment represents an
+  // extension (denoted with parentheses in options specs in .proto files).
+  // E.g.,{ ["foo", false], ["bar.baz", true], ["qux", false] } represents
+  // "foo.(bar.baz).qux".
   message NamePart {
     required string name_part = 1;
     required bool is_extension = 2;
   }
   repeated NamePart name = 2;
+
+  // The value of the uninterpreted option, in whatever type the tokenizer
+  // identified it as during parsing. Exactly one of these should be set.
   optional string identifier_value = 3;
   optional uint64 positive_int_value = 4;
   optional int64 negative_int_value = 5;
@@ -269,12 +449,90 @@
   optional string aggregate_value = 8;
 }
 
+// ===================================================================
+// Optional source code info
+
+// Encapsulates information about the original source file from which a
+// FileDescriptorProto was generated.
 message SourceCodeInfo {
+  // A Location identifies a piece of source code in a .proto file which
+  // corresponds to a particular definition.  This information is intended
+  // to be useful to IDEs, code indexers, documentation generators, and similar
+  // tools.
+  //
+  // For example, say we have a file like:
+  //   message Foo {
+  //     optional string foo = 1;
+  //   }
+  // Let's look at just the field definition:
+  //   optional string foo = 1;
+  //   ^       ^^     ^^  ^  ^^^
+  //   a       bc     de  f  ghi
+  // We have the following locations:
+  //   span   path               represents
+  //   [a,i)  [ 4, 0, 2, 0 ]     The whole field definition.
+  //   [a,b)  [ 4, 0, 2, 0, 4 ]  The label (optional).
+  //   [c,d)  [ 4, 0, 2, 0, 5 ]  The type (string).
+  //   [e,f)  [ 4, 0, 2, 0, 1 ]  The name (foo).
+  //   [g,h)  [ 4, 0, 2, 0, 3 ]  The number (1).
+  //
+  // Notes:
+  // - A location may refer to a repeated field itself (i.e. not to any
+  //   particular index within it).  This is used whenever a set of elements are
+  //   logically enclosed in a single code segment.  For example, an entire
+  //   extend block (possibly containing multiple extension definitions) will
+  //   have an outer location whose path refers to the "extensions" repeated
+  //   field without an index.
+  // - Multiple locations may have the same path.  This happens when a single
+  //   logical declaration is spread out across multiple places.  The most
+  //   obvious example is the "extend" block again -- there may be multiple
+  //   extend blocks in the same scope, each of which will have the same path.
+  // - A location's span is not always a subset of its parent's span.  For
+  //   example, the "extendee" of an extension declaration appears at the
+  //   beginning of the "extend" block and is shared by all extensions within
+  //   the block.
+  // - Just because a location's span is a subset of some other location's span
+  //   does not mean that it is a descendent.  For example, a "group" defines
+  //   both a type and a field in a single declaration.  Thus, the locations
+  //   corresponding to the type and field and their components will overlap.
+  // - Code which tries to interpret locations should probably be designed to
+  //   ignore those that it doesn't understand, as more types of locations could
+  //   be recorded in the future.
   repeated Location location = 1;
   message Location {
+    // Identifies which part of the FileDescriptorProto was defined at this
+    // location.
+    //
+    // Each element is a field number or an index.  They form a path from
+    // the root FileDescriptorProto to the place where the definition.  For
+    // example, this path:
+    //   [ 4, 3, 2, 7, 1 ]
+    // refers to:
+    //   file.message_type(3)  // 4, 3
+    //       .field(7)         // 2, 7
+    //       .name()           // 1
+    // This is because FileDescriptorProto.message_type has field number 4:
+    //   repeated DescriptorProto message_type = 4;
+    // and DescriptorProto.field has field number 2:
+    //   repeated FieldDescriptorProto field = 2;
+    // and FieldDescriptorProto.name has field number 1:
+    //   optional string name = 1;
+    //
+    // Thus, the above path gives the location of a field name.  If we removed
+    // the last element:
+    //   [ 4, 3, 2, 7 ]
+    // this path refers to the whole field declaration (from the beginning
+    // of the label to the terminating semicolon).
     repeated int32 path = 1 [packed=true];
+
+    // Always has exactly three or four elements: start line, start column,
+    // end line (optional, otherwise assumed same as start line), end column.
+    // These are packed into a single field for efficiency.  Note that line
+    // and column numbers are zero-based -- typically you will want to add
+    // 1 to each before displaying to a user.
     repeated int32 span = 2 [packed=true];
-    optional string leading_comments = 3;
-    optional string trailing_comments = 4;
+
+    // TODO(kenton):  Record comments appearing before and after the
+    // declaration.
   }
 }
diff --git a/com.google.eclipse.protobuf/src/com/google/eclipse/protobuf/Protobuf.xtext b/com.google.eclipse.protobuf/src/com/google/eclipse/protobuf/Protobuf.xtext
index a4eff95..a2e91e7 100644
--- a/com.google.eclipse.protobuf/src/com/google/eclipse/protobuf/Protobuf.xtext
+++ b/com.google.eclipse.protobuf/src/com/google/eclipse/protobuf/Protobuf.xtext
@@ -207,7 +207,7 @@
   NormalFieldName | ExtensionFieldName;
 
 NormalFieldName:
-  target=[MessageField|Name];
+  target=[MessageField];
 
 ExtensionFieldName:
   '[' target=[MessageField|QualifiedName] ']';
diff --git a/com.google.eclipse.protobuf/src/com/google/eclipse/protobuf/conversion/HEXValueConverter.java b/com.google.eclipse.protobuf/src/com/google/eclipse/protobuf/conversion/HEXValueConverter.java
index adb6208..e553950 100644
--- a/com.google.eclipse.protobuf/src/com/google/eclipse/protobuf/conversion/HEXValueConverter.java
+++ b/com.google.eclipse.protobuf/src/com/google/eclipse/protobuf/conversion/HEXValueConverter.java
@@ -22,7 +22,7 @@
  * @author alruiz@google.com (Alex Ruiz)
  */
 public class HEXValueConverter extends AbstractLexerBasedConverter<Long> {
-  private static final String[] VALID_PREFIXES = { "0x", "-0x", "0X", "-0X" };
+  private static final String[] VALID_PREFIXES = { "0x", "-0x", "0X", "-0x" };
 
   /**
    * Creates an {@code int} from the given input, if the given input represents an hexadecimal number.
diff --git a/update-site/.gitignore b/update-site/.gitignore
deleted file mode 100644
index d076332..0000000
--- a/update-site/.gitignore
+++ /dev/null
@@ -1,4 +0,0 @@
-/content.jar
-/features
-/plugins
-/artifacts.jar
diff --git a/update-site/artifacts.jar b/update-site/artifacts.jar
index 738f943..f960e3d 100644
--- a/update-site/artifacts.jar
+++ b/update-site/artifacts.jar
Binary files differ
diff --git a/update-site/content.jar b/update-site/content.jar
index 545a42f..866e780 100644
--- a/update-site/content.jar
+++ b/update-site/content.jar
Binary files differ
diff --git a/update-site/features/com.google.eclipse.protobuf_1.3.3.201210291557.jar b/update-site/features/com.google.eclipse.protobuf_1.3.3.201210291557.jar
new file mode 100644
index 0000000..31a417a
--- /dev/null
+++ b/update-site/features/com.google.eclipse.protobuf_1.3.3.201210291557.jar
Binary files differ
diff --git a/update-site/plugins/com.google.eclipse.protobuf.ui_1.3.3.201210291557.jar b/update-site/plugins/com.google.eclipse.protobuf.ui_1.3.3.201210291557.jar
new file mode 100644
index 0000000..3920965
--- /dev/null
+++ b/update-site/plugins/com.google.eclipse.protobuf.ui_1.3.3.201210291557.jar
Binary files differ
diff --git a/update-site/plugins/com.google.eclipse.protobuf_1.3.3.201210291557.jar b/update-site/plugins/com.google.eclipse.protobuf_1.3.3.201210291557.jar
new file mode 100644
index 0000000..6e94e84
--- /dev/null
+++ b/update-site/plugins/com.google.eclipse.protobuf_1.3.3.201210291557.jar
Binary files differ
diff --git a/update-site/site.xml b/update-site/site.xml
index 76fead0..b1d0890 100644
--- a/update-site/site.xml
+++ b/update-site/site.xml
@@ -3,7 +3,7 @@
    <description name="protobuf-dt" url="http://protobuf-dt.googlecode.com/git/update-site">
       Update site for protobuf-dt, an Eclipse-based Development Environment for Protocol Buffers.
    </description>
-   <feature url="features/com.google.eclipse.protobuf_1.3.5.201305301034.jar" id="com.google.eclipse.protobuf" version="1.3.5.201305301034">
+   <feature url="features/com.google.eclipse.protobuf_1.3.3.201210291557.jar" id="com.google.eclipse.protobuf" version="1.3.3.201210291557">
       <category name="google"/>
    </feature>
    <category-def name="google" label="Google Inc."/>
