code: protected static <P extends ParaObject> Map<String, AttributeValue> toRow(P so, Class<? extends Annotation> filter) {
  		HashMap<String, AttributeValue> row = new HashMap<>();
  		if (so == null) {
  			return row;
  		}
  		for (Map.Entry<String, Object> entry : ParaObjectUtils.getAnnotatedFields(so, filter).entrySet()) {
  			Object value = entry.getValue();
  			if (value != null && !StringUtils.isBlank(value.toString())) {
  				row.put(entry.getKey(), new AttributeValue(value.toString()));
  			}
  		}
  		if (so.getVersion() != null && so.getVersion() > 0) {
  			row.put(Config._VERSION, new AttributeValue().withN(so.getVersion().toString()));
  		} else {
  			row.remove(Config._VERSION);
  		}
  		return row;
  	}
docs: Converts a {@link ParaObject} to DynamoDB row.
  @param <P> type of object
  @param so an object
  @param filter used to filter out fields on update.
  @return a row representation of the given object.