| 
					
				 | 
			
			
				@@ -659,14 +659,14 @@ public class RubyMessage extends RubyObject { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 Descriptors.FieldDescriptor.Type fieldType = fieldDescriptor.getType(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 IRubyObject typeClass = context.runtime.getObject(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                boolean addValue = true; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 if (fieldType == Descriptors.FieldDescriptor.Type.MESSAGE) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     typeClass = ((RubyDescriptor) getDescriptorForField(context, fieldDescriptor)).msgclass(context); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    if (value.isNil()){ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                        addValue = false; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 } else if (fieldType == Descriptors.FieldDescriptor.Type.ENUM) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     typeClass = ((RubyEnumDescriptor) getDescriptorForField(context, fieldDescriptor)).enummodule(context); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                Utils.checkType(context, fieldType, value, (RubyModule) typeClass); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                // Convert integer enum to symbol 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                if (fieldType == Descriptors.FieldDescriptor.Type.ENUM) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     Descriptors.EnumDescriptor enumDescriptor = fieldDescriptor.getEnumType(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     if (Utils.isRubyNum(value)) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         Descriptors.EnumValueDescriptor val = 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -674,7 +674,12 @@ public class RubyMessage extends RubyObject { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                         if (val.getIndex() != -1) value = context.runtime.newSymbol(val.getName()); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                     } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				                 } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-                this.fields.put(fieldDescriptor, value); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                if (addValue) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    Utils.checkType(context, fieldType, value, (RubyModule) typeClass); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    this.fields.put(fieldDescriptor, value); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } else { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                    this.fields.remove(fieldDescriptor); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+                } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         return context.runtime.getNil(); 
			 |