protected Collection<ObjectPermissionModel> getImplicitPermissions(ModeledAuthenticatedUser user,
            ModelType model) {
        
        // Check to see if the user granting permissions is a skeleton user,
        // thus lacking database backing.
        if (user.getUser().isSkeleton())
            return Collections.emptyList();
        
        // Build list of implicit permissions
        Collection<ObjectPermissionModel> implicitPermissions =
                new ArrayList<>(IMPLICIT_OBJECT_PERMISSIONS.length);

        
        UserModel userModel = user.getUser().getModel();
        for (ObjectPermission.Type permission : IMPLICIT_OBJECT_PERMISSIONS) {

            // Create model which grants this permission to the current user
            ObjectPermissionModel permissionModel = new ObjectPermissionModel();
            permissionModel.setEntityID(userModel.getEntityID());
            permissionModel.setType(permission);
            permissionModel.setObjectIdentifier(model.getIdentifier());

            // Add permission
            implicitPermissions.add(permissionModel);

        }
        
        return Collections.unmodifiableCollection(implicitPermissions);

    }
Returns an immutable collection of permissions that should be granted due
to the creation of the given object. These permissions need not be
granted solely to the user creating the object.

@param user
    The user creating the object.

@param model
    The object being created.

@return
    The collection of implicit permissions that should be granted due to
    the creation of the given object.
extensions/guacamole-auth-jdbc/modules/guacamole-auth-jdbc-base/src/main/java/org/apache/guacamole/auth/jdbc/base/ModeledDirectoryObjectService.java