private static void handleConstructor(ComponentConfig config, Class<?> clazz) {
        try {
            for (Constructor<?> constructor : clazz.getDeclaredConstructors()) {
                
                Class<?>[] parameters = constructor.getParameterTypes();
                Type[] parameterTypes = constructor.getGenericParameterTypes();
                Annotation[][] annotations = constructor.getParameterAnnotations();
                
                for (int i=0; i<annotations.length; i++) {
                    Field fa = null; 
                    
                    for (int j=0; j<annotations[i].length; j++) {
                        if (annotations[i][j].annotationType() == Field.class) {
                            fa = (Field) annotations[i][j];
                            break;
                        }
                    }
                    
                    if (fa != null) {
                        TypeInfo info = new TypeInfo();
                        info.carg = i + 1;
                        info.name = toValue(fa.name());
                        info.type = parameters[i];
                        info.genericType = parameterTypes[i];
                        
                        config.add(createField(info, fa));
                    }
                }
            }
        }
        catch (IllegalArgumentException ex) {
            throw new BeanIOConfigurationException("Invalid @Field annotation on a " +
                "constructor parameter in class '" + clazz.getName() + "': " + ex.getMessage(), ex);
        }
    }