class AuthorizableFacade implements Authorizable {

    @SuppressWarnings("WeakerAccess")
    public static @Nullable Authorizable ensureBestWrapper(final @Nullable Authorizable authorizable) {
        if (authorizable == null) {
            return null;
        } else if (authorizable instanceof AuthorizableFacade) {
            return authorizable;
        } else if (authorizable instanceof User) {
            return new UserFacade((User) authorizable);
        } else if (authorizable instanceof Group) {
            return new GroupFacade((Group) authorizable);
        } else {
            return new AuthorizableFacade<>(authorizable);
        }
    }

    @SuppressWarnings("WeakerAccess") public  AuthorizableFacade(final @NotNull A delegate);

}