class MultiNodeSessionFactory {

    // TODO multi-instance ?
    private final static MultiNodeSessionFactory INSTANCE = new MultiNodeSessionFactory();
    // TODO multi-instance ?
    private final HgStoreNodeManager nodeManager = HgStoreNodeManager.getInstance();
    // TODO: to be a chain assigned to each graph
    //private HgStoreNodeDispatcher storeNodeDispatcher;

    private MultiNodeSessionFactory() {
    }

    static MultiNodeSessionFactory getInstance() {
        return INSTANCE;
    }

    HgStoreSession createStoreSession(String graphName) {
        return buildProxy(graphName);
    }

    private HgStoreSession buildProxy(String graphName) {<FILL_FUNCTION_BODY>}
}

        //return new MultiNodeSessionProxy(graphName, nodeManager, storeNodeDispatcher);
        //return new NodePartitionSessionProxy(graphName,nodeManager);
        //return new NodeRetrySessionProxy(graphName,nodeManager);
        return new NodeTxSessionProxy(graphName, nodeManager);
    
<no_super_class>