private boolean implies(final VirtualFilePermission permission) { assert permission != null; // else the above check would have failed int remainingFlags = permission.getActionFlags(); if (remainingFlags == 0) { return true; } // snapshot final VirtualFilePermission[] permissions = this.permissions; final String theirName = permission.getName(); for (VirtualFilePermission ourPermission : permissions) { if (VirtualFilePermission.impliesPath(ourPermission.getName(), theirName)) { remainingFlags &= ~ourPermission.getActionFlags(); if (remainingFlags == 0) { return true; } } } return false; }