A general projection can be specified by providing two methods; a source method runs on each member of a source population and decides which entities in the dest population it wants to connect to; a dest method has access to the internals of the destination entity and decides which requests to fulfill.
GeneralProjection(Population srcPop, Population destPop, SourceMethod sm, DestMethod dm)