public Memory unsetProperty(Environment env, TraceInfo trace, IObject object, String property,
                                PropertyCallCache callCache, int index)
            throws Throwable {
        ClassEntity context = env.getLastClassOnStack();
        PropertyEntity entity = isInstanceOf(context) ? context.properties.get(property) : properties.get(property);

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

        if (entity == null) {
            PropertyEntity staticEntity = staticProperties.get(property);
            if (staticEntity != null) {
                invalidAccessToProperty(env, trace, staticEntity, staticEntity.canAccess(env));
            }
        }

        ArrayMemory props = object.getPropertiesForChange();
        if (props == null || accessFlag != 0 || props.removeByScalar(entity == null ? property : entity.specificName) == null) {
            if (methodMagicUnset != null) {
                if (context != null && context.getId() == methodMagicUnset.getClazz().getId()) {
                    if (env.peekCall(0).flags == FLAG_UNSET) {
                        return Memory.NULL;
                    }
                }

                try {
                    Memory[] args = new Memory[]{new StringMemory(property)};
                    env.pushCall(trace, object, args, methodMagicUnset.getName(), methodMagicUnset.getClazz().getName(), name);
                    env.peekCall(0).flags = FLAG_UNSET;

                    args = InvokeArgumentHelper.checkType(env, trace, methodMagicUnset, args);
                    methodMagicUnset.invokeDynamic(object, env, trace, args);
                } finally {
                    env.popCall();
                }
                return Memory.NULL;
            }
        }

        if (entity != null && entity.isTyped() && props != null && accessFlag == 0) {
            props.putAsKeyString(entity.specificName, entity.getUninitializedValue());
        }

        if (accessFlag != 0)
            invalidAccessToProperty(env, trace, entity, accessFlag);

        entity = staticProperties.get(property);
        if (entity != null) {
            env.error(trace, ErrorType.E_STRICT,
                    Messages.ERR_ACCESSING_STATIC_PROPERTY_AS_NON_STATIC,
                    entity.getClazz().getName(),
                    entity.getName()
            );
        }

        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