class TypeReflector {

    public Object get(T bean, String name) {
        validate(bean, name);
        Function<T, Object> getter = getters.get(name);
        if (getter == null) {
            throw new IllegalArgumentException("No getter specified for property '" + name + "' on bean class '" + bean.getClass() + "'");
        }
        return getter.apply(bean);
    }

    public  TypeReflector(Class<T> clazz);
    public  TypeReflector(JavaType javaType);

}