public static ItemStack convertToCraftItemStack(ItemStack itemStack) {
        if (AS_CRAFT_OPY_ACCESSOR == null) {
            ClassTemplate template = new Reflection().reflect(MinecraftReflection.getCraftItemStackClass());

            List<SafeMethod<ItemStack>> methods = template.getSafeMethods(withExactName("asCraftCopy"), withArguments(ItemStack.class));

            if (methods.size() > 0) {
                AS_CRAFT_OPY_ACCESSOR = methods.get(0).getAccessor();
            } else {
                throw new RuntimeException("Failed to get the asCraftCopy method!");
            }
        }

        return AS_CRAFT_OPY_ACCESSOR.invokeStatic(itemStack);
    }