public static Property getProperty(Class clazz, String name) {
        if (name.indexOf('.') != -1) {
            String key = clazz.getName() + "#" + name;
            Property property = propertiesCache.get(key);

            if (property == null) {
                property = new CompositeProperty(clazz, name);
                addProperty(key, property);
                return property;
            } else {
                return property;
            }
        } else {
            String key = clazz.getName() + "#" + name;
            Property property = propertiesCache.get(key);

            if (property == null) {
                property = new SimpleProperty(clazz, name);
                addProperty(key, property);
                return property;
            } else {
                return property;
            }
        }
    }