@Override
 public IEncodedValue encode(IPropertyCoder masterCoder, Object value) {
   if (value == null) {
     return new EncodedValue("null", "");
   }
   if (masterCoder == null) {
     masterCoder = this;
   }
   for (IPropertyCoder pc : propertyCoders) {
     IEncodedValue encodedValue = pc.encode(masterCoder, value);
     if (encodedValue != null) {
       return encodedValue;
     }
   }
   return null;
 }
 @Override
 public Object decode(IPropertyCoder masterCoder, IEncodedValue encodedValue)
     throws PropertyDecodeException {
   if (encodedValue == null
       || "null".equals(encodedValue.getType())
       || null == encodedValue.getType()
       || null == encodedValue.getData()) {
     return null;
   }
   if (masterCoder == null) {
     masterCoder = this;
   }
   for (IPropertyCoder pc : propertyCoders) {
     Object value = pc.decode(masterCoder, encodedValue);
     if (value != null) {
       return value;
     }
   }
   return null;
 }