code: public final <T> T decode(Val value) {
        if (value == null) {
           return null;
        }
        return decode(value.get());
     }
docs: Converts a {@link Val} object to desired type
  
  @param <T>   the target type parameter
  @param value the value to convert
  @return the result of conversion