class AbstractFile implements FileAttributes {

    public void changePermissions(int permissions) throws IOException, UnsupportedFileOperationException {
        int bitShift = 0;

        PermissionBits mask = getChangeablePermissions();
        for(PermissionAccess a : PermissionAccess.values()) {
            for(PermissionType p : PermissionType.values()) {
                if(mask.getBitValue(a, p))
                    changePermission(a, p, (permissions & (1<<bitShift))!=0);

                bitShift++;
            }
        }
    }

    protected  AbstractFile(FileURL url);

}