protected function parseAccessControlList($list)
    {
        $permissions = [];

        // Matches between two parenthesis.
        preg_match_all('/\((.*?)\)/', $list, $matches);

        // Make sure we have resulting matches.
        if (is_array($matches) && count($matches) > 0) {
            // Matches inside the first key will have parenthesis
            // already removed, so we need to verify it exists.
            if (array_key_exists(1, $matches) && is_array($matches[1])) {
                // We'll go through each match and see if the ACE
                // exists inside the permissions definition list.
                foreach ($matches[1] as $definition) {
                    // We'll merge the permissions list so we have a flat array
                    // of all of the rights for the current account.
                    $permissions = array_merge($permissions, $this->parseDefinitionRights($definition));
                }
            }
        }

        return $permissions;
    }