protected void initProperties(){
        properties = new HashSet();
        //scan methods
        for (Method method : c.getMethods()) {
            String name = method.getName();
            if (Modifier.isPublic(method.getModifiers()) && name.startsWith("get")) {
                name = lowerFirstChar(name.substring(3));
                if (!properties.contains(name) && !name.equals("class")) {
                    properties.add(name);
                }
            }
        }
        fieldProperties = new HashSet();
        //scan fields
        for (Field field : c.getFields()) {
            String name = field.getName();
            if (Modifier.isPublic(field.getModifiers()) && !properties.contains(name) ) {
                properties.add(name);
                fieldProperties.add(name);
            }
        }
    }