Lite feature complete.
diff --git a/src/ProtocolBuffers/GeneratedExtensionLite.cs b/src/ProtocolBuffers/GeneratedExtensionLite.cs
index 81d8d41..33969f4 100644
--- a/src/ProtocolBuffers/GeneratedExtensionLite.cs
+++ b/src/ProtocolBuffers/GeneratedExtensionLite.cs
@@ -48,6 +48,7 @@
   }
 
   public class ExtensionDescriptorLite : IFieldDescriptorLite {
+    private readonly string fullName;
     private readonly IEnumLiteMap enumTypeMap;
     private readonly int number;
     private readonly FieldType type;
@@ -56,7 +57,8 @@
     private readonly MappedType mapType;
     private readonly object defaultValue;
 
-    public ExtensionDescriptorLite(IEnumLiteMap enumTypeMap, int number, FieldType type, object defaultValue, bool isRepeated, bool isPacked) {
+    public ExtensionDescriptorLite(string fullName, IEnumLiteMap enumTypeMap, int number, FieldType type, object defaultValue, bool isRepeated, bool isPacked) {
+      this.fullName = fullName;
       this.enumTypeMap = enumTypeMap;
       this.number = number;
       this.type = type;
@@ -66,6 +68,8 @@
       this.defaultValue = defaultValue;
     }
 
+    public string FullName { get { return fullName; } }
+
     public bool IsRepeated {
       get { return isRepeated; }
     }
@@ -116,9 +120,9 @@
 
   public class GeneratedRepeatExtensionLite<TContainingType, TExtensionType> : GeneratedExtensionLite<TContainingType, IList<TExtensionType>>
     where TContainingType : IMessageLite {
-    public GeneratedRepeatExtensionLite(TContainingType containingTypeDefaultInstance,
+    public GeneratedRepeatExtensionLite(string fullName, TContainingType containingTypeDefaultInstance,
       IMessageLite messageDefaultInstance, IEnumLiteMap enumTypeMap, int number, FieldType type, bool isPacked) :
-      base(containingTypeDefaultInstance, new List<TExtensionType>(), messageDefaultInstance, enumTypeMap, number, type, isPacked) {
+      base(fullName, containingTypeDefaultInstance, new List<TExtensionType>(), messageDefaultInstance, enumTypeMap, number, type, isPacked) {
     }
 
     public override object ToReflectionType(object value) {
@@ -167,6 +171,7 @@
 
     /** For use by generated code only. */
     public GeneratedExtensionLite(
+        string fullName,
         TContainingType containingTypeDefaultInstance,
         TExtensionType defaultValue,
         IMessageLite messageDefaultInstance,
@@ -174,13 +179,14 @@
         int number,
         FieldType type)
       : this(containingTypeDefaultInstance, defaultValue, messageDefaultInstance,
-          new ExtensionDescriptorLite(enumTypeMap, number, type, defaultValue,
+          new ExtensionDescriptorLite(fullName, enumTypeMap, number, type, defaultValue,
             false /* isRepeated */, false /* isPacked */)) {
     }
 
     private static readonly IList<object> Empty = new object[0];
     /** Repeating fields: For use by generated code only. */
     protected GeneratedExtensionLite(
+      string fullName,
       TContainingType containingTypeDefaultInstance,
       TExtensionType defaultValue,
       IMessageLite messageDefaultInstance,
@@ -189,7 +195,7 @@
       FieldType type,
       bool isPacked)
       : this(containingTypeDefaultInstance, defaultValue, messageDefaultInstance,
-          new ExtensionDescriptorLite(enumTypeMap, number, type, Empty,
+          new ExtensionDescriptorLite(fullName, enumTypeMap, number, type, Empty,
             true /* isRepeated */, isPacked)) {
     }