<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def networkBibCoupling(self, weighted = True, fullInfo = False, addCR = False):
 """Creates a bibliographic coupling network based on citations for the RecordCollection. # Parameters _weighted_ : `optional bool` > Default `True`, if `True` the weight of the edges will be added to the network _fullInfo_ : `optional bool` > Default `False`, if `True` the full citation string will be added to each of the nodes of the network. # Returns `Networkx Graph` > A graph of the bibliographic coupling """

        progArgs = (0, "Make a citation network for coupling")
        if metaknowledge.VERBOSE_MODE:
            progKwargs = {'dummy' : False}
        else:
            progKwargs = {'dummy' : True}
        with _ProgressBar(*progArgs, **progKwargs) as PBar:
            citeGrph = self.networkCitation(weighted = False, directed = True, detailedCore = True, fullInfo = fullInfo, count = False, nodeInfo = True, addCR = addCR, _quiet = True)
            pcount = 0
            pmax = len(citeGrph)
            PBar.updateVal(.2, "Starting to classify nodes")
            workingGrph = nx.Graph()
            couplingSet = set()
            for n, d in citeGrph.nodes(data = True):
                pcount += 1
                PBar.updateVal(.2 + .4 * (pcount / pmax), "Classifying: {}".format(n))
                if d['inCore']:
                    workingGrph.add_node(n, **d)
                if citeGrph.in_degree(n) > 0:
                    couplingSet.add(n)
            pcount = 0
            pmax = len(couplingSet)
            for n in couplingSet:
                PBar.updateVal(.6 + .4 * (pcount / pmax), "Coupling: {}".format(n))
                citesLst = list(citeGrph.in_edges(n))
                for i, edgeOuter in enumerate(citesLst):
                    outerNode = edgeOuter[0]
                    for edgeInner in citesLst[i + 1:]:
                        innerNode = edgeInner[0]
                        if weighted and  workingGrph.has_edge(outerNode, innerNode):
                            workingGrph.edges[outerNode, innerNode]['weight'] += 1
                        elif weighted:
                            workingGrph.add_edge(outerNode, innerNode, weight = 1)
                        else:
                            workingGrph.add_edge(outerNode, innerNode)
            PBar.finish("Done making a bib-coupling network from {}".format(self))
        return workingGrph