class TagValueInfo implements TagValue {
        @Generated
        private String tagId;
        @Generated
        private Object value;

        public static TagValueInfo of(String id, String value, PropertyMetadata metadata) {<FILL_FUNCTION_BODY>}
    }

            TagValueInfo tagValue = new TagValueInfo();
            tagValue.tagId = id;

            if (metadata != null && metadata.getValueType() instanceof Converter) {
                tagValue.value = ((Converter<?>) metadata.getValueType()).convert(value);
            } else {
                tagValue.value = value;
            }
            return tagValue;
        
<no_super_class>