private NameEnvironmentAnswer findType(String className) {
                String resourceName = className.replace('.', '/') + ".class";
                InputStream is = null;
                try {
                    // we're only asking ECJ to compile a single class; we shouldn't need this
                    if (className.equals(targetName)) {
                        return new NameEnvironmentAnswer(targetCompilationUnits[0], null);
                    }
                    
                    is = loader.getResourceAsStream(resourceName);
                    if (is == null) {
                        is = parentClassLoader.getResourceAsStream(resourceName);
                    }
                    
                    if (is != null) {

                        ByteArrayOutputStream buffer = new ByteArrayOutputStream();
                        int nRead;
                        byte[] data = new byte[1024];
                        while ((nRead = is.read(data, 0, data.length)) != -1) {
                            buffer.write(data, 0, nRead);
                        }
                        buffer.flush();

                        ClassFileReader cfr = new ClassFileReader(buffer.toByteArray(), className.toCharArray(), true);
                        return new NameEnvironmentAnswer(cfr, null);
                    } else {
                        return null;
                    }
                } catch (ClassFormatException | IOException ex) {
                    throw new RuntimeException(ex);
                } finally {
                    if (is != null) {
                        try {
                            is.close();
                        } catch (IOException e) { }
                    }
                }
                
            }
EvaluatorFactory is a factory implementation for creating Evaluator instances

@author tiwe
querydsl-codegen-utils/src/main/java/com/querydsl/codegen/utils/ECJEvaluatorFactory.java