Also, to make this fail, errors should be thrown. I designed like that due to the deep call stack (something like maybe monad would be much better).
```erlang
        {error, _} -> 
            throw({error, malformed_policy_condition});
```