class ImmutablePolicy implements Policy {

    @Override
    public Policy removeEntry(final CharSequence label) {
        final Label lbl = Label.of(label);

        if (!entries.containsKey(lbl)) {
            return this;
        }

        final Map<Label, PolicyEntry> entriesCopy = copyEntries();
        entriesCopy.remove(lbl);

        return new ImmutablePolicy(policyId, entriesCopy, lifecycle, revision, modified, created);
    }

    private  ImmutablePolicy(@Nullable final PolicyId policyId,
            final Map<Label, PolicyEntry> theEntries,
            @Nullable final PolicyLifecycle lifecycle,
            @Nullable final PolicyRevision revision,
            @Nullable final Instant modified,
            @Nullable final Instant created);

}