digraph SocketPools {
    subgraph cluster_legend {
	label="Legend";

	## The following legend is an attempt to match UML notation,
	## except for template_class and Factory->object, which are
	## invented for this diagram.
	BaseClass;
	SubClass [label="Derived Class"];
	Whole;
	Part;
	A;
	B;
	Interface [label="Interface / ABC", style=dashed];
	template_class [shape=diamond]; # Link will name parameter(s)

	SubClass -> BaseClass [arrowhead="empty"];
	SubClass -> Interface [arrowhead="empty", style=dashed];
	Part -> Whole [arrowhead="diamond", label="ownership"];
	Part -> Whole [arrowhead="odiamond", label="pointer"];
	RefCountedPart -> Whole [arrowhead="diamond", color=red,
		                 label="partial\nownership"];
	A -> B [arrowhead="none", headlabel="?..?", taillabel="?..?",
		label="association"];
	// Often a "subgraph { rank=same; .. }" is used to wrap the
	// below to make the generative relationship distinctive
	// from the other class relationships.
	Factory -> object [arrowhead=veevee];
    };

    ClientSocketPoolBase [shape=diamond];
    ClientSocketPoolBaseHelper;

    ClientSocketPoolBaseHelper_ConnectJobFactory
        [style=dotted, label="ClientSocketPoolBaseHelper::\nConnectJobFactory"];
    ClientSocketPoolBase_ConnectJobFactory
        [style=dotted, shape=diamond,
	 label="ClientSocketPoolBase::\nConnectJobFactory"];
    ClientSocketPoolBase_ConnectJobFactoryAdaptor
        [shape=diamond,
	 label="ClientSocketPoolBase::\nConnectJobFactoryAdaptor"];

    HigherLayeredPool [style=dotted];
    LowerLayeredPool [style=dotted];
    ClientSocketPool [style=dotted];

    ConnectJob [style=dashed];
    ConnectJob_Delegate [style=dotted, label="ConnectJob::Delegate"];

    ClientSocketFactory [style=dotted];
    DefaultClientSocketFactory;
    TCPClientSocket;
    StreamSocket [style=dotted]
    Socket;

    TransportSocketParams;
    TransportConnectJobHelper;
    TransportConnectJobFactory;
    TransportConnectJob;

    TransportClientSocketPool -> ClientSocketPool [arrowhead=empty];
    ClientSocketPool -> LowerLayeredPool [arrowhead=empty];
    ClientSocketPoolBaseHelper -> ConnectJob_Delegate [arrowhead=empty];
    TransportConnectJobFactory -> ClientSocketPoolBase_ConnectJobFactory
        [arrowhead=empty, label="TransportSocketParams"];
    ClientSocketPoolBase_ConnectJobFactoryAdaptor ->
        ClientSocketPoolBaseHelper_ConnectJobFactory
 	    [arrowhead=empty, arrowtail=none];
    TransportConnectJob -> ConnectJob [arrowhead=empty];
    DefaultClientSocketFactory -> ClientSocketFactory [arrowhead=empty];
    StreamSocket -> Socket [arrowhead=empty]
    TCPClientSocket -> StreamSocket [arrowhead=empty]

    ClientSocketPoolBaseHelper -> ClientSocketPoolBase [arrowhead=diamond];
    ClientSocketPoolBase -> TransportClientSocketPool
        [arrowhead=diamond, label="TransportSocketParams"];
    ClientSocketPoolBase_ConnectJobFactory ->
        ClientSocketPoolBase_ConnectJobFactoryAdaptor [arrowhead=diamond];
    ClientSocketPoolBaseHelper_ConnectJobFactory -> 
        ClientSocketPoolBaseHelper [arrowhead=diamond];
    TransportConnectJobHelper -> TransportConnectJob [arrowhead=diamond];
    TransportSocketParams -> TransportConnectJobHelper
        [arrowhead=diamond, color=red];

    ConnectJob -> ConnectJob_Delegate
        [dir=back, arrowhead=none, arrowtail=odiamond];
    HigherLayeredPool -> ClientSocketPoolBaseHelper
        [arrowhead=odiamond, taillabel="*"];
    LowerLayeredPool -> ClientSocketPoolBaseHelper
        [arrowhead=odiamond, taillabel="*"];
    ClientSocketFactory -> ClientSocketPoolBaseHelper [arrowhead=odiamond];

    subgraph {
        rank=same;
        ClientSocketPoolBaseHelper_ConnectJobFactory -> ConnectJob
            [arrowhead=veevee];
    }
    ClientSocketPoolBase_ConnectJobFactory -> ConnectJob [arrowhead=veevee];
    ClientSocketFactory -> TCPClientSocket [arrowhead=veevee]
}

