TrustDecider became overly complicated and hard to maintain. It also does too much of uneeded work and needs refactoring.
Few things that needs to be true:
1) Certificate stores should never be loaded more than once
2) We should be loading stores as we need them - if first one is sufficient to comfirm certificate validity then we do not need to load others.
3) isAllPermissionsGranted should not be synchronized itself but it should be safe for the concurent use. If dialog is shown then it should not prevent other certificates to be validated if any.
4) We do not want to have static methods. Instead we need to have clean interface and be able to have different implementations
(e.g. for testing).
5) Need unit tests and benchmarks
More careful analysis of the code is required to identify additional steps.