private static Optional<String> pathTo(HasClasses<?> parent, String path, String needle) {
        for (final ClassOrInterface<?> child : parent.getClasses()) {
            final String childName = child.getName();
            final String newPath = path.isEmpty() ? "" : path + "." + childName;
            
            if (childName.equals(needle)) {
                return Optional.of(newPath);
            } else {
                final Optional<String> recursion = pathTo(child, newPath, needle);
                if (recursion.isPresent()) {
                    return recursion;
                }
            }
        }
        
        return Optional.empty();
    }
Creates a full name for the specified class in the specified file,
suitable to be used as a TypeName.

@param file   the file to reference
@param clazz  the class to reference
@return       the full name of the class
common-parent/codegen/src/main/java/com/speedment/common/codegen/constant/SimpleTypeUtil.java