@SuppressWarnings("unchecked")
    public static <T> Class<T> compile(ClassLoader cl, String name, String code) {
        try {
            // The class name is part of the "code" and makes the string unique,
            // to prevent class leaks we don't cache the class loader directly
            // but only its hash code
            final ClassKey classKey = new ClassKey(cl.hashCode(), code);
            return (Class<T>) COMPILED_CLASS_CACHE.get(classKey, () -> doCompile(cl, name, code));
        } catch (Exception e) {
            throw new FlinkRuntimeException(e.getMessage(), e);
        }
    }
@Test
    public void testWrongCode() {
        String code = "public class111 Main {\n" + "  int i;\n" + "  int j;\n" + "}";
        assertThatThrownBy(
                        () -> CompileUtils.compile(this.getClass().getClassLoader(), "Main", code))
                .isInstanceOf(FlinkRuntimeException.class)
                .hasMessageContaining(
                        "Table program cannot be compiled. This is a bug. Please file an issue.");
    }