code: @Programmatic
      public Collection<String> purposesFor(
              final CommunicationChannelType communicationChannelType,
              final Object communicationChannelOwner) {
          final Set<String> fallback = Collections.singleton(DEFAULT_PURPOSE);
          if(communicationChannelPurposeRepository == null) {
              return fallback;
          }
          final Collection<String> purposes =
                  communicationChannelPurposeRepository
                          .purposesFor(communicationChannelType, communicationChannelOwner);
          return purposes != null? purposes: fallback;
      }
docs: Return the list of objects to act as a "purpose" for the {@link CommunicationChannel}s, as per
  {@link CommunicationChannelPurposeRepository}, or a default name otherwise.
  
  <p>
  May return null if there are none (in which case a default name will be used).
  </p>