static <T> MetadataKey<T> create(String id, TypeToken<T> type) {
        Objects.requireNonNull(id, "id");
        Objects.requireNonNull(type, "type");
        return new MetadataKeyImpl<>(id, type);
    }
Creates a MetadataKey with the given id and type

@param id the id of the key
@param type the type of the value mapped to this key
@param <T> the value type
@return a new metadata key
helper/src/main/java/me/lucko/helper/metadata/MetadataKey.java