@Override
    public boolean isPermissionSet(@NonNull String permission) {
        if (permission == null) {
            throw new NullPointerException("permission");
        }

        QueryOptions queryOptions = this.queryOptionsSupplier.getQueryOptions();
        TristateResult result = this.user.getCachedData().getPermissionData(queryOptions).checkPermission(permission, CheckOrigin.PLATFORM_API_HAS_PERMISSION_SET);
        if (result.result() == Tristate.UNDEFINED) {
            return false;
        }

        // ignore matches made from looking up in the permission map (replicate bukkit behaviour)
        if (result.processorClass() == PermissionMapProcessor.class) {
            return false;
        }

        // ignore the op processor
        return result.processorClass() != OpProcessor.class;
    }
Injects a fake 'attachments' list into the superclass, for dumb plugins
which for some reason decided to add attachments via reflection.

The fake list proxies (some) calls back to the proper methods on this permissible.
bukkit/src/main/java/me/lucko/luckperms/bukkit/inject/permissible/LuckPermsPermissible.java