code: def barcollection(
      self,
      xs,
      opens,
      highs,
      lows,
      closes,
      width,
      tickwidth=1,
      edgeadjust=0,
      label="_nolegend",
      scaling=1.0,
      bot=0,
      fillup=True,
      filldown=True,
      **kwargs,
  ):
      # Prepack different zips of the series values
      oc = lambda: zip(opens, closes)  # NOQA: E731
      xoc = lambda: zip(xs, opens, closes)  # NOQA: E731
      iohlc = lambda: zip(xs, opens, highs, lows, closes)  # NOQA: E731
  
      colorup = self.colorup if fillup else "None"
      colordown = self.colordown if filldown else "None"
      colord = {True: colorup, False: colordown}
      colors = [colord[o < c] for o, c in oc()]
  
      edgecolord = {True: self.edgeup, False: self.edgedown}
      edgecolors = [edgecolord[o < c] for o, c in oc()]
  
      tickcolord = {True: self.tickup, False: self.tickdown}
      tickcolors = [tickcolord[o < c] for o, c in oc()]
  
      delta = width / 2 - edgeadjust
  
      def barbox(i, open, close):
          # delta seen as closure
          left, right = i - delta, i + delta
          open = open * scaling + bot
          close = close * scaling + bot
          return (
              (left, open),
              (left, close),
              (right, close),
              (right, open),
          )
  
      barareas = [barbox(i, o, c) for i, o, c in xoc()]
  
      def tup(i, open, high, close):
          high = high * scaling + bot
          open = open * scaling + bot
          close = close * scaling + bot
  
          return (i, high), (i, max(open, close))
  
      tickrangesup = [tup(i, o, h, c) for i, o, h, l, c in iohlc()]
  
      def tdown(i, open, low, close):
          low = low * scaling + bot
          open = open * scaling + bot
          close = close * scaling + bot
  
          return (i, low), (i, min(open, close))
  
      tickrangesdown = [tdown(i, o, l, c) for i, o, h, l, c in iohlc()]
  
      # Extra variables for the collections
      useaa = (0,)  # use tuple here
      lw = (0.5,)  # and here
      tlw = (tickwidth,)
  
      # Bar collection for the candles
      barcol = mcol.PolyCollection(
          barareas,
          facecolors=colors,
          edgecolors=edgecolors,
          antialiaseds=useaa,
          linewidths=lw,
          label=label,
          **kwargs,
      )
  
      # LineCollections have a higher zorder than PolyCollections
      # to ensure the edges of the bars are not overwriten by the Lines
      # we need to put the bars slightly over the LineCollections
      kwargs["zorder"] = barcol.get_zorder() * 0.9999
  
      # Up/down ticks from the body
      tickcol = mcol.LineCollection(
          tickrangesup + tickrangesdown,
          colors=tickcolors,
          linewidths=tlw,
          antialiaseds=useaa,
          **kwargs,
      )
  
      # return barcol, tickcol
      return barcol, tickcol
  
imports: from __future__ import absolute_import, division, print_function, unicode_literals
  from ..utils.py3 import range, zip
  import matplotlib.collections
  import matplotlib.colors
  import matplotlib.legend
  import matplotlib.lines
  from .utils import shade_color
label_desc: Use image node_id 3 for calling the CandlestickPlotHandler obj's underlying member method code with example usage: obj.barcollection(xs, opens, highs, lows, closes, width, tickwidth, edgeadjust, label, scaling, bot, fillup, filldown) and returns: barcol,  tickcol, left,  open,  left,  close,  right,  close,  right,  open, i,  high,  i,  max, i,  low,  i,  min