docs: public void set(Object target, Object value) throws MetadataException
      {
          // if target null, we have nothing to do
          if(target == null) return;
          Object current = target;
          if (isNestedField())
          {
              List fields = getFieldsList();
              int size = fields.size() - 1;
              Field field;
              for (int i = 0; i < size; i++)
              {
                  field = (Field) fields.get(i);
                  Object attribute;
                  try
                  {
                      attribute = getValueFrom(field, current);
                  }
                  catch (Exception e)
                  {
                      throw new MetadataException("Can't read field '" + field.getName() + "' of type " + field.getType().getName(), e);
                  }
                  if (attribute != null || value != null)
                  {
                      // if the intermediary nested object is null, we have to create
                      // a new instance to set the value
                      if (attribute == null)
                      {
                          try
                          {
                              attribute = ClassHelper.newInstance(field.getType());
                          }
                          catch (Exception e)
                          {
                              throw new MetadataException("Can't create nested object of type '"
                                      + field.getType() + "' for field '"
                                      + field.getName() + "'", e);
                          }
                      }
                      try
                      {
                          //field.set(current, attribute);
                          setValueFor(field, current, attribute);
                      }
                      //catch (IllegalAccessException e)
                      catch (Exception e)
                      {
                          throw new MetadataException("Can't set nested object of type '"
                                      + field.getType() + "' for field '"
                                      + field.getName() + "'", e);
                      }
                  }
                  else
                  {
                      return;
                  }
                  current = attribute;
              }
          }
          setValueFor(getField(), current, value);
      }