def append(self, newItem):
        newGlob, newInfo = newItem
        newGlobLower = newGlob.lower()
        self._caseMap[newGlobLower] = newGlob
        newGlob = newGlobLower
        if not any(x in newGlob for x in '*?['):
            # Exact matches go in a hash for quick add and lookup
            if self.multipleMatches and newGlob in self._exact:
                self._exact[newGlob].append(newInfo)
            else:
                self._exact[newGlob] = [newInfo]
        else:
            # Globs are put in a list that is scanned after exact matches
            location = None
            removeOld = False
            for i, (serverGlob, info) in enumerate(self._globs):
                if fnmatch.fnmatch(newItem[0], serverGlob):
                    if not self.multipleMatches and serverGlob == newItem[0]:
                        removeOld = True
                    location = i
                    break

            if location is None:
                self._globs.append(newItem)
            elif removeOld:
                self._globs[location] = newItem
            else:
                self._globs.insert(location, newItem)
dataset/ETHPy150Open sassoftware/conary/conary/conarycfg.py/ServerGlobList.append/original