public Memory issetProperty(Environment env, TraceInfo trace, IObject object, String property,
                                PropertyCallCache callCache, int cacheIndex)
            throws Throwable {
        PropertyEntity entity = callCache == null || env instanceof ConcurrentEnvironment ? null : callCache.get(env, cacheIndex);

        if (entity == null) {
            ClassEntity contex = env.getLastClassOnStack();
            entity = isInstanceOf(contex) ? contex.properties.get(property) : properties.get(property);

            if (entity != null && callCache != null) {
                callCache.put(env, cacheIndex, entity);
            }
        } else if (entity.getClazz() != object.getReflection()) {
            ClassEntity contex = env.getLastClassOnStack();
            entity = isInstanceOf(contex) ? contex.properties.get(property) : properties.get(property);
        }

        int accessFlag = entity == null ? 0 : entity.canAccess(env);

        ArrayMemory props = object.getProperties();
        Memory tmp = null;

        if (props != null && accessFlag == 0) {
            tmp = entity == null ? props.getByScalar(property) : entity.getValue(env, trace, object);
        }

        if (tmp != null) {
            return tmp.isNull() ? tmp : Memory.TRUE;
        }

        if (methodMagicIsset != null) {
            Memory result;

            ClassEntity context = env.getLastClassOnStack();

            if (context != null && context.getId() == methodMagicIsset.getClazz().getId())
                if (env.peekCall(0).flags == FLAG_ISSET) {
                    return object.getProperties().getByScalar(property) != null ? Memory.TRUE : Memory.NULL;
                }

            try {
                Memory[] args = new Memory[]{new StringMemory(property)};

                env.pushCall(trace, object, args, methodMagicIsset.getName(), methodMagicIsset.getClazz().getName(), name);
                env.peekCall(0).flags = FLAG_ISSET;

                args = InvokeArgumentHelper.checkType(env, trace, methodMagicIsset, args);
                result = methodMagicIsset.invokeDynamic(object, env, trace, args)
                        .toBoolean() ? Memory.TRUE : Memory.NULL;
            } finally {
                env.popCall();
            }
            return result;
        }

        return Memory.NULL;
    }
return empty list if success else list with not valid implemented methods in class

@param _interface
@return
jphp-runtime/src/php/runtime/reflection/ClassEntity.java