    * A container to maintain a ToMany relationship to a set of different
    * objects.
    *
+   * This is usually used with the `ToMany` typealias, for example like this:
+   *
+   *     var addresses : ToMany<Address>
+   *
    * NOTE: This is *NOT* a `Relationship` object. It is more like a `Fault`
-   *       and necessary because `Codable` doesn't deal with recursive
+   *       and necessary because `Codable` doesn't deal well with recursive
    *       relationships.
    */
-  public struct ToManyRelationshipHolder<T: CodableObjectType> : Codable {
+  public struct ToManyRelationshipHolder<TargetType: CodableObjectType>
+                  : Codable
+  {
     // TODO: like a toMany fault?
     // TBD: should this have a reference to the `Relationship` itself?
 

      // Create a typed relationship, this works because the
      // `ToOneRelationshipHolder` has the static type of the target as the
      // generic argument.
      let rs = CodableRelationship<T>(name: name, isToMany: false,
                                      isMandatory: !isOptional,
                                      source: source, destination: destination)
      return rs

        fatalError("no entity?")
      }
      
      let entity = decoder.lookupOrCreateTypedEntity(TargetType.self)
      return entity
    }
    
