test_class.declarator: END_USER_LABEL = Label.of("EndUser")
test_class.modifier: private static final
test_class.original_string: private static final Label END_USER_LABEL = Label.of("EndUser");
test_class.type: Label
test_class.var_name: END_USER_LABEL
test_class.declarator: END_USER_RESOURCE_1 = JsonPointer.of("foo/bar")
test_class.modifier: private static final
test_class.original_string: private static final JsonPointer END_USER_RESOURCE_1 = JsonPointer.of("foo/bar");
test_class.type: JsonPointer
test_class.var_name: END_USER_RESOURCE_1
test_class.declarator: END_USER_RESOURCE_2 = JsonPointer.of("/attributes")
test_class.modifier: private static final
test_class.original_string: private static final JsonPointer END_USER_RESOURCE_2 = JsonPointer.of("/attributes");
test_class.type: JsonPointer
test_class.var_name: END_USER_RESOURCE_2
test_class.declarator: END_USER_SUBJECT_ID_1 =
              SubjectId.newInstance(SubjectIssuer.GOOGLE, "myself")
test_class.modifier: private static final
test_class.original_string: private static final SubjectId END_USER_SUBJECT_ID_1 =
              SubjectId.newInstance(SubjectIssuer.GOOGLE, "myself");
test_class.type: SubjectId
test_class.var_name: END_USER_SUBJECT_ID_1
test_class.declarator: END_USER_SUBJECT_TYPE_1 = SubjectType.newInstance("endUserSubjectType1")
test_class.modifier: private static final
test_class.original_string: private static final SubjectType END_USER_SUBJECT_TYPE_1 = SubjectType.newInstance("endUserSubjectType1");
test_class.type: SubjectType
test_class.var_name: END_USER_SUBJECT_TYPE_1
test_class.declarator: END_USER_SUBJECT_ID_2 =
              SubjectId.newInstance(SubjectIssuer.GOOGLE, "others")
test_class.modifier: private static final
test_class.original_string: private static final SubjectId END_USER_SUBJECT_ID_2 =
              SubjectId.newInstance(SubjectIssuer.GOOGLE, "others");
test_class.type: SubjectId
test_class.var_name: END_USER_SUBJECT_ID_2
test_class.declarator: END_USER_SUBJECT_TYPE_2 = SubjectType.newInstance("endUserSubjectType2")
test_class.modifier: private static final
test_class.original_string: private static final SubjectType END_USER_SUBJECT_TYPE_2 = SubjectType.newInstance("endUserSubjectType2");
test_class.type: SubjectType
test_class.var_name: END_USER_SUBJECT_TYPE_2
test_class.declarator: END_USER_EFFECTED_PERMISSIONS_1 =
              EffectedPermissions.newInstance(Permissions.newInstance(TestConstants.Policy.PERMISSION_READ),
                      Permissions.newInstance(TestConstants.Policy.PERMISSION_WRITE))
test_class.modifier: private static final
test_class.original_string: private static final EffectedPermissions END_USER_EFFECTED_PERMISSIONS_1 =
              EffectedPermissions.newInstance(Permissions.newInstance(TestConstants.Policy.PERMISSION_READ),
                      Permissions.newInstance(TestConstants.Policy.PERMISSION_WRITE));
test_class.type: EffectedPermissions
test_class.var_name: END_USER_EFFECTED_PERMISSIONS_1
test_class.declarator: SUPPORT_LABEL = Label.of("SupportGroup")
test_class.modifier: private static final
test_class.original_string: private static final Label SUPPORT_LABEL = Label.of("SupportGroup");
test_class.type: Label
test_class.var_name: SUPPORT_LABEL
test_class.declarator: POLICY_ID = PolicyId.of("com.example", "myPolicy")
test_class.modifier: private static final
test_class.original_string: private static final PolicyId POLICY_ID = PolicyId.of("com.example", "myPolicy");
test_class.type: PolicyId
test_class.var_name: POLICY_ID
test_class.file: model/policies/src/test/java/org/eclipse/ditto/model/policies/ImmutablePolicyTest.java
test_class.identifier: ImmutablePolicyTest
test_case.body: @Test
      public void setSubjectForShouldCopyExisting() {
          final Policy policy = createPolicy();
          final Policy policyModified =
                  policy.setSubjectFor(END_USER_LABEL,
                          Subject.newInstance(END_USER_SUBJECT_ID_2, END_USER_SUBJECT_TYPE_2));
  
          assertThat(policy).hasLabel(END_USER_LABEL);
          assertThat(policy).hasSubjectFor(END_USER_LABEL, END_USER_SUBJECT_ID_1);
          assertThat(policy).hasSubjectTypeFor(END_USER_LABEL, END_USER_SUBJECT_ID_1, END_USER_SUBJECT_TYPE_1);
          assertThat(policy).doesNotHaveSubjectFor(END_USER_LABEL, END_USER_SUBJECT_ID_2);
          assertThat(policy).hasResourceFor(END_USER_LABEL, TestConstants.Policy.RESOURCE_TYPE, END_USER_RESOURCE_1);
          assertThat(policyModified).hasLabel(END_USER_LABEL);
          assertThat(policyModified).hasSubjectFor(END_USER_LABEL, END_USER_SUBJECT_ID_1);
          assertThat(policyModified).hasSubjectTypeFor(END_USER_LABEL, END_USER_SUBJECT_ID_1, END_USER_SUBJECT_TYPE_1);
          assertThat(policyModified).hasSubjectFor(END_USER_LABEL, END_USER_SUBJECT_ID_2);
          assertThat(policyModified).hasSubjectTypeFor(END_USER_LABEL, END_USER_SUBJECT_ID_2, END_USER_SUBJECT_TYPE_2);
          assertThat(policyModified).hasResourceFor(END_USER_LABEL, TestConstants.Policy.RESOURCE_TYPE,
                  END_USER_RESOURCE_1);
      }
test_case.class_method_signature: ImmutablePolicyTest.setSubjectForShouldCopyExisting()
test_case.full_signature: @Test public void setSubjectForShouldCopyExisting()
test_case.identifier: setSubjectForShouldCopyExisting
test_case.invocations: createPolicy setSubjectFor newInstance hasLabel assertThat hasSubjectFor assertThat hasSubjectTypeFor assertThat doesNotHaveSubjectFor assertThat hasResourceFor assertThat hasLabel assertThat hasSubjectFor assertThat hasSubjectTypeFor assertThat hasSubjectFor assertThat hasSubjectTypeFor assertThat hasResourceFor assertThat
test_case.modifiers: @Test public
test_case.parameters: ()
test_case.return: void
test_case.signature: void setSubjectForShouldCopyExisting()
focal_class.declarator: policyId
focal_class.modifier: @Nullable private final
focal_class.original_string: @Nullable private final PolicyId policyId;
focal_class.type: PolicyId
focal_class.var_name: policyId
focal_class.declarator: entries
focal_class.modifier: private final
focal_class.original_string: private final Map<Label, PolicyEntry> entries;
focal_class.type: Map<Label, PolicyEntry>
focal_class.var_name: entries
focal_class.declarator: namespace
focal_class.modifier: @Nullable private final
focal_class.original_string: @Nullable private final String namespace;
focal_class.type: String
focal_class.var_name: namespace
focal_class.declarator: lifecycle
focal_class.modifier: @Nullable private final
focal_class.original_string: @Nullable private final PolicyLifecycle lifecycle;
focal_class.type: PolicyLifecycle
focal_class.var_name: lifecycle
focal_class.declarator: revision
focal_class.modifier: @Nullable private final
focal_class.original_string: @Nullable private final PolicyRevision revision;
focal_class.type: PolicyRevision
focal_class.var_name: revision
focal_class.declarator: modified
focal_class.modifier: @Nullable private final
focal_class.original_string: @Nullable private final Instant modified;
focal_class.type: Instant
focal_class.var_name: modified
focal_class.declarator: created
focal_class.modifier: @Nullable private final
focal_class.original_string: @Nullable private final Instant created;
focal_class.type: Instant
focal_class.var_name: created
focal_class.file: model/policies/src/main/java/org/eclipse/ditto/model/policies/ImmutablePolicy.java
focal_class.identifier: ImmutablePolicy
focal_class.interfaces: implements Policy
focal_class.class_method_signature: ImmutablePolicy.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)
focal_class.full_signature: 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)
focal_class.identifier: ImmutablePolicy
focal_class.modifiers: private
focal_class.parameters: (@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)
focal_class.signature:  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)
focal_class.class_method_signature: ImmutablePolicy.of(@Nullable final String policyId,
              @Nullable final PolicyLifecycle lifecycle,
              @Nullable final PolicyRevision revision,
              @Nullable final Instant modified,
              @Nullable final Instant created,
              final Iterable<PolicyEntry> entries)
focal_class.full_signature: @Deprecated public static Policy of(@Nullable final String policyId,
              @Nullable final PolicyLifecycle lifecycle,
              @Nullable final PolicyRevision revision,
              @Nullable final Instant modified,
              @Nullable final Instant created,
              final Iterable<PolicyEntry> entries)
focal_class.identifier: of
focal_class.modifiers: @Deprecated public static
focal_class.parameters: (@Nullable final String policyId,
              @Nullable final PolicyLifecycle lifecycle,
              @Nullable final PolicyRevision revision,
              @Nullable final Instant modified,
              @Nullable final Instant created,
              final Iterable<PolicyEntry> entries)
focal_class.return: Policy
focal_class.signature: Policy of(@Nullable final String policyId,
              @Nullable final PolicyLifecycle lifecycle,
              @Nullable final PolicyRevision revision,
              @Nullable final Instant modified,
              @Nullable final Instant created,
              final Iterable<PolicyEntry> entries)
focal_class.class_method_signature: ImmutablePolicy.of(@Nullable final PolicyId policyId,
              @Nullable final PolicyLifecycle lifecycle,
              @Nullable final PolicyRevision revision,
              @Nullable final Instant modified,
              @Nullable final Instant created,
              final Iterable<PolicyEntry> entries)
focal_class.full_signature: public static Policy of(@Nullable final PolicyId policyId,
              @Nullable final PolicyLifecycle lifecycle,
              @Nullable final PolicyRevision revision,
              @Nullable final Instant modified,
              @Nullable final Instant created,
              final Iterable<PolicyEntry> entries)
focal_class.identifier: of
focal_class.modifiers: public static
focal_class.parameters: (@Nullable final PolicyId policyId,
              @Nullable final PolicyLifecycle lifecycle,
              @Nullable final PolicyRevision revision,
              @Nullable final Instant modified,
              @Nullable final Instant created,
              final Iterable<PolicyEntry> entries)
focal_class.return: Policy
focal_class.signature: Policy of(@Nullable final PolicyId policyId,
              @Nullable final PolicyLifecycle lifecycle,
              @Nullable final PolicyRevision revision,
              @Nullable final Instant modified,
              @Nullable final Instant created,
              final Iterable<PolicyEntry> entries)
focal_class.class_method_signature: ImmutablePolicy.fromJson(final JsonObject jsonObject)
focal_class.full_signature: public static Policy fromJson(final JsonObject jsonObject)
focal_class.identifier: fromJson
focal_class.modifiers: public static
focal_class.parameters: (final JsonObject jsonObject)
focal_class.return: Policy
focal_class.signature: Policy fromJson(final JsonObject jsonObject)
focal_class.class_method_signature: ImmutablePolicy.tryToParseModified(final CharSequence dateTime)
focal_class.full_signature: private static Instant tryToParseModified(final CharSequence dateTime)
focal_class.identifier: tryToParseModified
focal_class.modifiers: private static
focal_class.parameters: (final CharSequence dateTime)
focal_class.return: Instant
focal_class.signature: Instant tryToParseModified(final CharSequence dateTime)
focal_class.class_method_signature: ImmutablePolicy.getEntityId()
focal_class.full_signature: @Override public Optional<PolicyId> getEntityId()
focal_class.identifier: getEntityId
focal_class.modifiers: @Override public
focal_class.parameters: ()
focal_class.return: Optional<PolicyId>
focal_class.signature: Optional<PolicyId> getEntityId()
focal_class.class_method_signature: ImmutablePolicy.getNamespace()
focal_class.full_signature: @Override public Optional<String> getNamespace()
focal_class.identifier: getNamespace
focal_class.modifiers: @Override public
focal_class.parameters: ()
focal_class.return: Optional<String>
focal_class.signature: Optional<String> getNamespace()
focal_class.class_method_signature: ImmutablePolicy.getLifecycle()
focal_class.full_signature: @Override public Optional<PolicyLifecycle> getLifecycle()
focal_class.identifier: getLifecycle
focal_class.modifiers: @Override public
focal_class.parameters: ()
focal_class.return: Optional<PolicyLifecycle>
focal_class.signature: Optional<PolicyLifecycle> getLifecycle()
focal_class.class_method_signature: ImmutablePolicy.getRevision()
focal_class.full_signature: @Override public Optional<PolicyRevision> getRevision()
focal_class.identifier: getRevision
focal_class.modifiers: @Override public
focal_class.parameters: ()
focal_class.return: Optional<PolicyRevision>
focal_class.signature: Optional<PolicyRevision> getRevision()
focal_class.class_method_signature: ImmutablePolicy.getModified()
focal_class.full_signature: @Override public Optional<Instant> getModified()
focal_class.identifier: getModified
focal_class.modifiers: @Override public
focal_class.parameters: ()
focal_class.return: Optional<Instant>
focal_class.signature: Optional<Instant> getModified()
focal_class.class_method_signature: ImmutablePolicy.getCreated()
focal_class.full_signature: @Override public Optional<Instant> getCreated()
focal_class.identifier: getCreated
focal_class.modifiers: @Override public
focal_class.parameters: ()
focal_class.return: Optional<Instant>
focal_class.signature: Optional<Instant> getCreated()
focal_class.class_method_signature: ImmutablePolicy.getMetadata()
focal_class.full_signature: @Override public Optional<Metadata> getMetadata()
focal_class.identifier: getMetadata
focal_class.modifiers: @Override public
focal_class.parameters: ()
focal_class.return: Optional<Metadata>
focal_class.signature: Optional<Metadata> getMetadata()
focal_class.class_method_signature: ImmutablePolicy.isDeleted()
focal_class.full_signature: @Override public boolean isDeleted()
focal_class.identifier: isDeleted
focal_class.modifiers: @Override public
focal_class.parameters: ()
focal_class.return: boolean
focal_class.signature: boolean isDeleted()
focal_class.class_method_signature: ImmutablePolicy.setEntry(final PolicyEntry policyEntry)
focal_class.full_signature: @Override public Policy setEntry(final PolicyEntry policyEntry)
focal_class.identifier: setEntry
focal_class.modifiers: @Override public
focal_class.parameters: (final PolicyEntry policyEntry)
focal_class.return: Policy
focal_class.signature: Policy setEntry(final PolicyEntry policyEntry)
focal_class.class_method_signature: ImmutablePolicy.getLabels()
focal_class.full_signature: @Override public Set<Label> getLabels()
focal_class.identifier: getLabels
focal_class.modifiers: @Override public
focal_class.parameters: ()
focal_class.return: Set<Label>
focal_class.signature: Set<Label> getLabels()
focal_class.class_method_signature: ImmutablePolicy.contains(final CharSequence label)
focal_class.full_signature: @Override public boolean contains(final CharSequence label)
focal_class.identifier: contains
focal_class.modifiers: @Override public
focal_class.parameters: (final CharSequence label)
focal_class.return: boolean
focal_class.signature: boolean contains(final CharSequence label)
focal_class.class_method_signature: ImmutablePolicy.getEntryFor(final CharSequence label)
focal_class.full_signature: @Override public Optional<PolicyEntry> getEntryFor(final CharSequence label)
focal_class.identifier: getEntryFor
focal_class.modifiers: @Override public
focal_class.parameters: (final CharSequence label)
focal_class.return: Optional<PolicyEntry>
focal_class.signature: Optional<PolicyEntry> getEntryFor(final CharSequence label)
focal_class.class_method_signature: ImmutablePolicy.removeEntry(final CharSequence label)
focal_class.full_signature: @Override public Policy removeEntry(final CharSequence label)
focal_class.identifier: removeEntry
focal_class.modifiers: @Override public
focal_class.parameters: (final CharSequence label)
focal_class.return: Policy
focal_class.signature: Policy removeEntry(final CharSequence label)
focal_class.class_method_signature: ImmutablePolicy.removeEntry(final PolicyEntry entry)
focal_class.full_signature: @Override public Policy removeEntry(final PolicyEntry entry)
focal_class.identifier: removeEntry
focal_class.modifiers: @Override public
focal_class.parameters: (final PolicyEntry entry)
focal_class.return: Policy
focal_class.signature: Policy removeEntry(final PolicyEntry entry)
focal_class.class_method_signature: ImmutablePolicy.setSubjectsFor(final CharSequence label, final Subjects subjects)
focal_class.full_signature: @Override public Policy setSubjectsFor(final CharSequence label, final Subjects subjects)
focal_class.identifier: setSubjectsFor
focal_class.modifiers: @Override public
focal_class.parameters: (final CharSequence label, final Subjects subjects)
focal_class.return: Policy
focal_class.signature: Policy setSubjectsFor(final CharSequence label, final Subjects subjects)
focal_class.class_method_signature: ImmutablePolicy.setSubjectFor(final CharSequence label, final Subject subject)
focal_class.full_signature: @Override public Policy setSubjectFor(final CharSequence label, final Subject subject)
focal_class.identifier: setSubjectFor
focal_class.modifiers: @Override public
focal_class.parameters: (final CharSequence label, final Subject subject)
focal_class.return: Policy
focal_class.signature: Policy setSubjectFor(final CharSequence label, final Subject subject)
focal_class.class_method_signature: ImmutablePolicy.removeSubjectFor(final CharSequence label, final SubjectId subjectId)
focal_class.full_signature: @Override public Policy removeSubjectFor(final CharSequence label, final SubjectId subjectId)
focal_class.identifier: removeSubjectFor
focal_class.modifiers: @Override public
focal_class.parameters: (final CharSequence label, final SubjectId subjectId)
focal_class.return: Policy
focal_class.signature: Policy removeSubjectFor(final CharSequence label, final SubjectId subjectId)
focal_class.class_method_signature: ImmutablePolicy.setResourcesFor(final CharSequence label, final Resources resources)
focal_class.full_signature: @Override public Policy setResourcesFor(final CharSequence label, final Resources resources)
focal_class.identifier: setResourcesFor
focal_class.modifiers: @Override public
focal_class.parameters: (final CharSequence label, final Resources resources)
focal_class.return: Policy
focal_class.signature: Policy setResourcesFor(final CharSequence label, final Resources resources)
focal_class.class_method_signature: ImmutablePolicy.setResourceFor(final CharSequence label, final Resource resource)
focal_class.full_signature: @Override public Policy setResourceFor(final CharSequence label, final Resource resource)
focal_class.identifier: setResourceFor
focal_class.modifiers: @Override public
focal_class.parameters: (final CharSequence label, final Resource resource)
focal_class.return: Policy
focal_class.signature: Policy setResourceFor(final CharSequence label, final Resource resource)
focal_class.class_method_signature: ImmutablePolicy.removeResourceFor(final CharSequence label, final ResourceKey resourceKey)
focal_class.full_signature: @Override public Policy removeResourceFor(final CharSequence label, final ResourceKey resourceKey)
focal_class.identifier: removeResourceFor
focal_class.modifiers: @Override public
focal_class.parameters: (final CharSequence label, final ResourceKey resourceKey)
focal_class.return: Policy
focal_class.signature: Policy removeResourceFor(final CharSequence label, final ResourceKey resourceKey)
focal_class.class_method_signature: ImmutablePolicy.getEffectedPermissionsFor(final CharSequence label, final SubjectId subjectId,
              final ResourceKey resourceKey)
focal_class.full_signature: @Override public Optional<EffectedPermissions> getEffectedPermissionsFor(final CharSequence label, final SubjectId subjectId,
              final ResourceKey resourceKey)
focal_class.identifier: getEffectedPermissionsFor
focal_class.modifiers: @Override public
focal_class.parameters: (final CharSequence label, final SubjectId subjectId,
              final ResourceKey resourceKey)
focal_class.return: Optional<EffectedPermissions>
focal_class.signature: Optional<EffectedPermissions> getEffectedPermissionsFor(final CharSequence label, final SubjectId subjectId,
              final ResourceKey resourceKey)
focal_class.class_method_signature: ImmutablePolicy.isEmpty()
focal_class.full_signature: @Override public boolean isEmpty()
focal_class.identifier: isEmpty
focal_class.modifiers: @Override public
focal_class.parameters: ()
focal_class.return: boolean
focal_class.signature: boolean isEmpty()
focal_class.class_method_signature: ImmutablePolicy.getSize()
focal_class.full_signature: @Override public int getSize()
focal_class.identifier: getSize
focal_class.modifiers: @Override public
focal_class.parameters: ()
focal_class.return: int
focal_class.signature: int getSize()
focal_class.class_method_signature: ImmutablePolicy.getEntriesSet()
focal_class.full_signature: @Override public Set<PolicyEntry> getEntriesSet()
focal_class.identifier: getEntriesSet
focal_class.modifiers: @Override public
focal_class.parameters: ()
focal_class.return: Set<PolicyEntry>
focal_class.signature: Set<PolicyEntry> getEntriesSet()
focal_class.class_method_signature: ImmutablePolicy.stream()
focal_class.full_signature: @Override public Stream<PolicyEntry> stream()
focal_class.identifier: stream
focal_class.modifiers: @Override public
focal_class.parameters: ()
focal_class.return: Stream<PolicyEntry>
focal_class.signature: Stream<PolicyEntry> stream()
focal_class.class_method_signature: ImmutablePolicy.iterator()
focal_class.full_signature: @Override public Iterator<PolicyEntry> iterator()
focal_class.identifier: iterator
focal_class.modifiers: @Override public
focal_class.parameters: ()
focal_class.return: Iterator<PolicyEntry>
focal_class.signature: Iterator<PolicyEntry> iterator()
focal_class.class_method_signature: ImmutablePolicy.toJson(final JsonSchemaVersion schemaVersion, final Predicate<JsonField> thePredicate)
focal_class.full_signature: @Override public JsonObject toJson(final JsonSchemaVersion schemaVersion, final Predicate<JsonField> thePredicate)
focal_class.identifier: toJson
focal_class.modifiers: @Override public
focal_class.parameters: (final JsonSchemaVersion schemaVersion, final Predicate<JsonField> thePredicate)
focal_class.return: JsonObject
focal_class.signature: JsonObject toJson(final JsonSchemaVersion schemaVersion, final Predicate<JsonField> thePredicate)
focal_class.class_method_signature: ImmutablePolicy.copyEntries()
focal_class.full_signature: private Map<Label, PolicyEntry> copyEntries()
focal_class.identifier: copyEntries
focal_class.modifiers: private
focal_class.parameters: ()
focal_class.return: Map<Label, PolicyEntry>
focal_class.signature: Map<Label, PolicyEntry> copyEntries()
focal_class.class_method_signature: ImmutablePolicy.equals(final Object o)
focal_class.full_signature: @Override public boolean equals(final Object o)
focal_class.identifier: equals
focal_class.modifiers: @Override public
focal_class.parameters: (final Object o)
focal_class.return: boolean
focal_class.signature: boolean equals(final Object o)
focal_class.class_method_signature: ImmutablePolicy.hashCode()
focal_class.full_signature: @Override public int hashCode()
focal_class.identifier: hashCode
focal_class.modifiers: @Override public
focal_class.parameters: ()
focal_class.return: int
focal_class.signature: int hashCode()
focal_class.class_method_signature: ImmutablePolicy.toString()
focal_class.full_signature: @Override public String toString()
focal_class.identifier: toString
focal_class.modifiers: @Override public
focal_class.parameters: ()
focal_class.return: String
focal_class.signature: String toString()
focal_method.body: @Override
      public Policy setSubjectFor(final CharSequence label, final Subject subject) {
          final Label lbl = Label.of(label);
          checkNotNull(subject, "subject to set to the Policy entry");
  
          final Policy result;
          final PolicyEntry existingPolicyEntry = entries.get(lbl);
          if (null != existingPolicyEntry) {
              final Subjects existingSubjects = existingPolicyEntry.getSubjects();
              final Subjects newSubjects = existingSubjects.setSubject(subject);
              if (!Objects.equals(existingSubjects, newSubjects)) {
                  final Map<Label, PolicyEntry> entriesCopy = copyEntries();
                  entriesCopy.put(lbl, newPolicyEntry(lbl, newSubjects, existingPolicyEntry.getResources()));
                  result = new ImmutablePolicy(policyId, entriesCopy, lifecycle, revision, modified, created);
              } else {
                  result = this;
              }
          } else {
              result = setSubjectsFor(label, Subjects.newInstance(subject));
          }
  
          return result;
      }
focal_method.class_method_signature: ImmutablePolicy.setSubjectFor(final CharSequence label, final Subject subject)
focal_method.full_signature: @Override public Policy setSubjectFor(final CharSequence label, final Subject subject)
focal_method.identifier: setSubjectFor
focal_method.invocations: of checkNotNull get getSubjects setSubject equals copyEntries put newPolicyEntry getResources setSubjectsFor newInstance
focal_method.modifiers: @Override public
focal_method.parameters: (final CharSequence label, final Subject subject)
focal_method.return: Policy
focal_method.signature: Policy setSubjectFor(final CharSequence label, final Subject subject)