private bool TryExecuteGet(TranslationResult translationResult, Type entityType, out object result)
        {
            result = null;

            var entityKey = translationResult.TryGetEntityKeyForTable(this.TableDefinition);
            if (entityKey == null)
            {
                return false;
            }

            Document resultDoc = null;

            // first trying to get entity from cache, but only if it's not a projection
            if (ReferenceEquals(this.TableEntityType, entityType))
            {
                resultDoc = this.Cache.GetSingleEntity(entityKey);
            }

            if (resultDoc != null)
            {
                this.Log("Get from cache: " + translationResult);
            }
            else
            {
                // if the entity is not found in cache - then getting it from DynamoDb
                resultDoc = this.TableDefinition.GetItem
                    (
                        this.EntityKeyGetter.GetKeyDictionary(entityKey),
                        new GetItemOperationConfig
                        {
                            AttributesToGet = translationResult.AttributesToGet,
                            ConsistentRead = this._consistentRead
                        }
                    );

                // putting the entity to cache as well
                this.Cache.PutSingleLoadedEntity(entityKey, resultDoc);

                this.Log("Get from DynamoDb: " + translationResult);
            }

            // creating an enumerator for a single value or an empty enumerator
            result = this.CreateSingleDocReader(resultDoc, entityType, translationResult.ProjectionFunc);

            return true;
        }