code: protected void add(final UpdateOperator op, final String f, final Object value, final boolean convert) {
          if (value == null) {
              throw new QueryException("Val cannot be null");
          }
  
          Object val = value;
          PathTarget pathTarget = new PathTarget(mapper, clazz, f, validateNames);
          MappedField mf = pathTarget.getTarget();
  
          if (convert) {
              if (UpdateOperator.PULL_ALL.equals(op) && value instanceof List) {
                  val = toDBObjList(mf, (List<?>) value);
              } else {
                  val = mapper.toMongoObject(mf, null, value);
              }
          }
  
  
          if (UpdateOperator.ADD_TO_SET_EACH.equals(op)) {
              val = new BasicDBObject(UpdateOperator.EACH.val(), val);
          }
  
          addOperation(op, pathTarget.translatedPath(), val);
      }
docs: TODO Clean this up a little.