code: def create(*context, **kwargs):
          
          items = context
  
          context = ContextStack()
  
          for item in items:
              if item is None:
                  continue
              if isinstance(item, ContextStack):
                  context._stack.extend(item._stack)
              else:
                  context.push(item)
  
          if kwargs:
              context.push(kwargs)
  
          return context
docs: Build a ContextStack instance from a sequence of context-like items.
  
          This factory-style method is more general than the ContextStack class's
          constructor in that, unlike the constructor, the argument list
          can itself contain ContextStack instances.
  
          Here is an example illustrating various aspects of this method:
  
          >>> obj1 = {'animal': 'cat', 'vegetable': 'carrot', 'mineral': 'copper'}
          >>> obj2 = ContextStack({'vegetable': 'spinach', 'mineral': 'silver'})
          >>>
          >>> context = ContextStack.create(obj1, None, obj2, mineral='gold')
          >>>
          >>> context.get('animal')
          'cat'
          >>> context.get('vegetable')
          'spinach'
          >>> context.get('mineral')
          'gold'
  
          Arguments:
  
            *context: zero or more dictionaries, ContextStack instances, or objects
              with which to populate the initial context stack.  None
              arguments will be skipped.  Items in the *context list are
              added to the stack in order so that later items in the argument
              list take precedence over earlier items.  This behavior is the
              same as the constructor's.
  
            **kwargs: additional key-value data to add to the context stack.
              As these arguments appear after all items in the *context list,
              in the case of key conflicts these values take precedence over
              all items in the *context list.  This behavior is the same as
              the constructor's.