code: public static <T extends Tag, V> V convertToValue(T tag) throws ConversionException {
          if(tag == null || tag.getValue() == null) {
              return null;
          }
  
          if(!tagToConverter.containsKey(tag.getClass())) {
              throw new ConversionException("Tag type " + tag.getClass().getName() + " has no converter.");
          }
  
          TagConverter<T, ?> converter = (TagConverter<T, ?>) tagToConverter.get(tag.getClass());
          return (V) converter.convert(tag);
      }
docs: Converts the given tag to a value.
  
  @param <T> Tag type to convert from.
  @param <V> Value type to convert to.
  @param tag Tag to convert.
  @return The converted value.
  @throws ConversionException If a suitable converter could not be found.