public Memory getValue(Environment env, TraceInfo trace, Object object) throws Throwable {
        if (getter != null && object instanceof IObject) {
            return ObjectInvokeHelper.invokeMethod((IObject) object, getter, env, trace, null, false);
        }

        ArrayMemory props = ((IObject) object).getProperties();

        ReferenceMemory result = props.getByScalar(specificName);
        if (result == null) {
            result = props.getByScalar(name);
        }

        if (result != null && isTyped()) {
            return new ObjectPropertyMemory(env, trace, result, this);
        }

        return result;
    }
0 - success
1 - invalid protected
2 - invalid private
@param env
@return
jphp-runtime/src/php/runtime/reflection/PropertyEntity.java