throw new IllegalStateException("Controller not initialized");
throw new IllegalStateException("Controller is not ready");
    public static HashMap getServiceProperties(String loginTicketId)            throws UnknownTicketException, InoperableStateException, IllegalInputException {        if (loginTicketId == null || loginTicketId.equals("")) {            throw new IllegalInputException("loginTicketId must be a non-empty string");        }        if (!ready) {            throw new IllegalStateException("Controller not initialized");        }        /* Validate arguments */        if (loginTicketId == null || loginTicketId.equals("")) {            throw new IllegalArgumentException("loginTicketId must be a non-empty string, was: " + loginTicketId);        }        MoriaAuthnAttempt authnAttempt;        try {            authnAttempt = store.getAuthnAttempt(loginTicketId, true);        } catch (InvalidTicketException e) {            // TODO: Log            throw new UnknownTicketException("Ticket does not exist");        } catch (MoriaStoreException e) {            // TODO: Log            throw new InoperableStateException("Moria is unavailable, store is down");        }        try {            return authzManager.getServiceProperties(authnAttempt.getServicePrincipal());        } catch (UnknownServicePrincipalException e) {            // TODO: Log loginTicketId points to a non-existing service (unlikely to happen)            throw new UnknownTicketException("Ticket is no longer connected to a service.");        }    }