class ClientPermissions {

	public void removePermission(final String secretName, final Permissions permission) {
		synchronized (this.secretPermissions) {
			// Get the previous value (if any)
			final Integer previous = this.secretPermissions.get(secretName);

			// We need to update the existing value
			if (previous != null) {
				final Integer updated = (previous & ~permission.getCode()); // mask the bits with and of not

				if (updated == 0) {
					this.secretPermissions.remove(secretName);
				} else {
					this.secretPermissions.put(secretName, updated);
				}
			}
		}
	}

	public  ClientPermissions();
	public  ClientPermissions(final Map<String, Integer> secretPermissions);

}