Repository: PaperMC/Paper
File: paper-api/src/main/java/org/bukkit/block/BlockType.java (Java)

Code before:
         *
         * @param consumer consumer to run on new instance before returning
         * @return new data instance
         */
        @NotNull
        B createBlockData(@Nullable Consumer<? super B> consumer);

        /**
         * Creates a new {@link BlockData} instance for this block type, with all
         * properties initialized to unspecified defaults.
         *
         * @return new data instance
         */
        @NotNull
        @Override
        B createBlockData();

        /**
         * Creates a set of {@link BlockData} instances for this block type, with all
         * possible combinations of properties values.
         *
         * @return new block data set
         */
        @NotNull
        @Override
        Set<B> createBlockDataStates();

        /**
         * Creates a new {@link BlockData} instance for this block type, with all
         * properties initialized to unspecified defaults, except for those provided
         * in data.
         *
         * @param data data string
         * @return new data instance
         * @throws IllegalArgumentException if the specified data is not valid
         */
        @NotNull
        B createBlockData(@Nullable String data);
    }

    //<editor-fold desc="BlockTypes" defaultstate="collapsed">
    BlockType.Typed<BlockData> AIR = getBlockType("air");
    BlockType.Typed<BlockData> STONE = getBlockType("stone");
    BlockType.Typed<BlockData> GRANITE = getBlockType("granite");
    BlockType.Typed<BlockData> POLISHED_GRANITE = getBlockType("polished_granite");
    BlockType.Typed<BlockData> DIORITE = getBlockType("diorite");
    BlockType.Typed<BlockData> POLISHED_DIORITE = getBlockType("polished_diorite");
    BlockType.Typed<BlockData> ANDESITE = getBlockType("andesite");
    BlockType.Typed<BlockData> POLISHED_ANDESITE = getBlockType("polished_andesite");
    /**
     * BlockData: {@link Snowable}

Review comment (suggestion):
The return type shouldn't be `Set`. The contents are mutable objects which can break set invariants. The type shouldn't be `List` either because the order and random access shouldn't be used, so I think Collection is the best option.

Code after:
         * all properties initialized to unspecified defaults.
         *
         * @param consumer consumer to run on new instance before returning
         * @return new data instance
         */
        @NotNull
        B createBlockData(@Nullable Consumer<? super B> consumer);

        /**
         * Creates a new {@link BlockData} instance for this block type, with all
         * properties initialized to unspecified defaults.
         *
         * @return new data instance
         */
        @NotNull
        @Override
        B createBlockData();

        /**
         * Creates a collection of {@link BlockData} instances for this block type, with all
         * possible combinations of properties values.
         *
         * @return new block data collection
         */
        @Override
        @Unmodifiable @NotNull Collection<B> createBlockDataStates();

        /**
         * Creates a new {@link BlockData} instance for this block type, with all
         * properties initialized to unspecified defaults, except for those provided
         * in data.
         *
         * @param data data string
         * @return new data instance
         * @throws IllegalArgumentException if the specified data is not valid
         */
        @NotNull
        B createBlockData(@Nullable String data);
    }

    //<editor-fold desc="BlockTypes" defaultstate="collapsed">
    BlockType.Typed<BlockData> AIR = getBlockType("air");
    BlockType.Typed<BlockData> STONE = getBlockType("stone");
    BlockType.Typed<BlockData> GRANITE = getBlockType("granite");
    BlockType.Typed<BlockData> POLISHED_GRANITE = getBlockType("polished_granite");
    BlockType.Typed<BlockData> DIORITE = getBlockType("diorite");
    BlockType.Typed<BlockData> POLISHED_DIORITE = getBlockType("polished_diorite");
    BlockType.Typed<BlockData> ANDESITE = getBlockType("andesite");
    BlockType.Typed<BlockData> POLISHED_ANDESITE = getBlockType("polished_andesite");
    /**
     * BlockData: {@link Snowable}