public function getProperty($id, $name, $directAccess = false)
    {
        if ($directAccess) {
            if (!isset($this->items[$id][$name])) {
                return null;
            }

            return $this->items[$id][$name];
        }

        $id = $this->validateAndResolveId($id);
        if (!isset($this->items[$id][$name]) && !array_key_exists($name, $this->items[$id])) {
            throw new Exception\LogicException(
                sprintf('The "%s" item does not have "%s" property.', $id, $name)
            );
        }

        return $this->items[$id][$name];
    }