public static void guessYPropertyValues(YIComponent view, boolean guessNested, YFormatter formatter, Class upperClass, Object property) {
        Class viewClass = view.getClass();
        String viewName = viewClass.getName();
        int pos = viewName.lastIndexOf('.');
        if (pos > -1) {
            viewName = viewName.substring(pos+1);            
        }
        
        viewName = viewName.substring(0,1).toLowerCase() + viewName.substring(1);
        guessYProperty(view, viewName, guessNested, formatter, property);
        boolean search = true;
        while (search) {
            Field[] fields = viewClass.getDeclaredFields();
            for (int i = 0; i < fields.length; i++) {
                Field field = fields[i];
                if (YIComponent.class.isAssignableFrom(field.getType())) {
                    try {
                        field.setAccessible(true);
                        YIComponent comp = (YIComponent) field.get(view);
                        if (comp != null) {
                            guessYProperty(comp, field.getName(), guessNested, formatter, property);
                        }
                    } catch (Exception e) {
                        logger.warn("Property " + property + " could not be guessed for " + view.getClass() + 
                                ", field " + field.getName() + ". ");
                    }
                }
            }
            search = (upperClass != null && !upperClass.equals(viewClass));
            viewClass = viewClass.getSuperclass();
        }
    }