@Override
 public SortedSet<E> headSet(final E toElement) {
   final SortedSet<E> head = decorated().headSet(toElement);
   return UnmodifiableSortedSet.unmodifiableSortedSet(head);
 }
 @Override
 public SortedSet<E> tailSet(final E fromElement) {
   final SortedSet<E> tail = decorated().tailSet(fromElement);
   return UnmodifiableSortedSet.unmodifiableSortedSet(tail);
 }
 // SortedSet
 // -----------------------------------------------------------------------
 @Override
 public SortedSet<E> subSet(final E fromElement, final E toElement) {
   final SortedSet<E> sub = decorated().subSet(fromElement, toElement);
   return UnmodifiableSortedSet.unmodifiableSortedSet(sub);
 }