In the CallInterceptor.visitGetKeyValue command you alredy check if command.isReturnEntry(), and based on that return the appropriate thing: the entry or the value. You're re-doing the check here as well and I wonder why?
Also the same check (isReturnEntry) is performed in GetKeyvalueCommand so it seems to me the first two checks are redundant.