Getter getGetter(Object targetObject, String attributeName, boolean failOnMissingReflectiveAttribute) {
        Getter getter = getterCache.getGetter(targetObject.getClass(), attributeName);
        if (getter == null) {
            getter = instantiateGetter(targetObject, attributeName, failOnMissingReflectiveAttribute);
            if (getter.isCacheable()) {
                getterCache.putGetter(targetObject.getClass(), attributeName, getter);
            }
        }
        return getter;
    }
@Test
    public void when_getGetterExtractor_then_getterInCacheWithProperType() {
        // GIVEN
        AttributeConfig config
                = new AttributeConfig("gimmePower", "com.hazelcast.query.impl.getters.ExtractorsTest$PowerExtractor");
        Extractors extractors = createExtractors(config);

        // WHEN
        Getter getterFirstInvocation = extractors.getGetter(bond, "gimmePower", true);
        Getter getterSecondInvocation = extractors.getGetter(bond, "gimmePower", true);

        // THEN
        assertThat(getterFirstInvocation).isSameAs(getterSecondInvocation);
        assertThat(getterFirstInvocation).isInstanceOf(ExtractorGetter.class);
    }