 }
 
 /**
-  ChanSender<T> wraps a Chan<T> and allows sending through it
-  via a SendingChannel interface.
+  ChannelSender<T,C> wraps a ChannelType (as C) and allows sending through it
+  via a SenderType interface.
 */
 
 class ChannelSender<T, C: ChannelType where C.ElementType == T>: Sender<T>


    If c is a (subclass of) Sender, c will be returned directly.

    If c is any other kind of SendingChannel, c will be wrapped in an EnclosedSender.

    :param: c A SendingChannel implementor to be wrapped by a WriteChan object.

    :return:  A Sender object that will pass along the elements from c.
  */

  public class func Wrap<C: SenderType where C.SentElement == T>(c: C) -> Sender<T>

}

/**
  EnclosedSender<T> wraps an object that implements SenderType and makes it
  looks like a Sender<T> subclass.

  This is accomplished in wrapping its entire SenderType interface in a series of closures.
  While that is probably memory-heavy, it works. WrappedSender uses a generic approach.
*/

