code: def donew(cls, *args, **kwargs):
      _obj, args, kwargs = super(MetaLineIterator, cls).donew(
          *args, **kwargs
      )
  
      # Prepare to hold children that need to be calculated and
      # influence minperiod - Moved here to support LineNum below
      _obj._lineiterators = collections.defaultdict(list)
  
      # Scan args for datas ... if none are found,
      # use the _owner (to have a clock)
      mindatas = _obj._mindatas
      lastarg = 0
      _obj.datas = []
      for arg in args:
          if isinstance(arg, LineRoot):
              _obj.datas.append(LineSeriesMaker(arg))
  
          elif not mindatas:
              break  # found not data and must not be collected
          else:
              try:
                  _obj.datas.append(LineSeriesMaker(LineNum(arg)))
              except:
                  # Not a LineNum and is not a LineSeries - bail out
                  break
  
          mindatas = max(0, mindatas - 1)
          lastarg += 1
  
      newargs = args[lastarg:]
  
      # If no datas have been passed to an indicator ... use the
      # main datas of the owner, easing up adding "self.data" ...
      if not _obj.datas and isinstance(
          _obj, (IndicatorBase, ObserverBase)
      ):
          _obj.datas = _obj._owner.datas[0:mindatas]
  
      # Create a dictionary to be able to check for presence
      # lists in python use "==" operator when testing for presence with "in"
      # which doesn't really check for presence but for equality
      _obj.ddatas = {x: None for x in _obj.datas}
  
      # For each found data add access member -
      # for the first data 2 (data and data0)
      if _obj.datas:
          _obj.data = data = _obj.datas[0]
  
          for l, line in enumerate(data.lines):
              linealias = data._getlinealias(l)
              if linealias:
                  setattr(_obj, "data_%s" % linealias, line)
              setattr(_obj, "data_%d" % l, line)
  
          for d, data in enumerate(_obj.datas):
              setattr(_obj, "data%d" % d, data)
  
              for l, line in enumerate(data.lines):
                  linealias = data._getlinealias(l)
                  if linealias:
                      setattr(_obj, "data%d_%s" % (d, linealias), line)
                  setattr(_obj, "data%d_%d" % (d, l), line)
  
      # Parameter values have now been set before __init__
      _obj.dnames = DotDict(
          [(d._name, d) for d in _obj.datas if getattr(d, "_name", "")]
      )
  
      return _obj, newargs, kwargs
  
imports: from __future__ import absolute_import, division, print_function, unicode_literals
  import collections
  import operator
  import sys
  from .utils.py3 import map, range, zip, with_metaclass, string_types
  from .utils import DotDict
  from .lineroot import LineRoot, LineSingle
  from .linebuffer import LineActions, LineNum
  from .lineseries import LineSeries, LineSeriesMaker
  from .dataseries import DataSeries
  from .None import metabase
label_desc: Use image node_id 1 for calling the MetaLineIterator obj's underlying member method code with example usage: obj.donew(cls) and returns: _obj,  newargs,  kwargs