class QueryReadOnlyMethodsAccessor implements QueryPropertyAccessor {
    /** */
    private final Method getter;

    /** */
    private final String propName;

    /**
     * @param getter Getter method.
     * @param propName Property name.
     */
    public QueryReadOnlyMethodsAccessor(Method getter, String propName) {
        getter.setAccessible(true);

        this.getter = getter;
        this.propName = propName;
    }

    /** {@inheritDoc} */
    @Override public Object getValue(Object obj) throws IgniteCheckedException {<FILL_FUNCTION_BODY>}

    /** {@inheritDoc} */
    @Override public void setValue(Object obj, Object newVal) throws IgniteCheckedException {
        throw new UnsupportedOperationException("Property is read-only [type=" + getType() +
            ", property=" + propName + ']');
    }

    /** {@inheritDoc} */
    @Override public String getPropertyName() {
        return propName;
    }

    /** {@inheritDoc} */
    @Override public Class<?> getType() {
        return getter.getReturnType();
    }
}

        try {
            return getter.invoke(obj);
        }
        catch (Exception e) {
            throw new IgniteCheckedException("Failed to invoke getter method " +
                "[type=" + getType() + ", property=" + propName + ']', e);
        }
    
<no_super_class>