docstr: Restore Dock configuration as generated by saveState.
  
  This function does not create any Docks--it will only 
  restore the arrangement of an existing set of Docks.
  
  By default, docks that are described in *state* but do not exist
  in the dock area will cause an exception to be raised. This behavior
  can be changed by setting *missing* to 'ignore' or 'create'.
  
  Extra docks that are in the dockarea but that are not mentioned in
  *state* will be added to the bottom of the dockarea, unless otherwise
  specified by the *extra* argument.
code: def restoreState(self, state, missing="error", extra="bottom"):
      """
      Restore Dock configuration as generated by saveState.
  
      This function does not create any Docks--it will only
      restore the arrangement of an existing set of Docks.
  
      By default, docks that are described in *state* but do not exist
      in the dock area will cause an exception to be raised. This behavior
      can be changed by setting *missing* to 'ignore' or 'create'.
  
      Extra docks that are in the dockarea but that are not mentioned in
      *state* will be added to the bottom of the dockarea, unless otherwise
      specified by the *extra* argument.
      """
  
      ## 1) make dict of all docks and list of existing containers
      containers, docks = self.findAll()
      oldTemps = self.tempAreas[:]
      # print "found docks:", docks
  
      ## 2) create container structure, move docks into new containers
      if state["main"] is not None:
          self.buildFromState(
              state["main"], docks, self, missing=missing
          )
  
      ## 3) create floating areas, populate
      for s in state["float"]:
          a = self.addTempArea()
          a.buildFromState(s[0]["main"], docks, a, missing=missing)
          a.win.setGeometry(*s[1])
          a.apoptose()  # ask temp area to close itself if it is empty
  
      ## 4) Add any remaining docks to a float
      for d in docks.values():
          if extra == "float":
              a = self.addTempArea()
              a.addDock(d, "below")
          else:
              self.moveDock(d, extra, None)
  
      # print "\nKill old containers:"
      ## 5) kill old containers
      for c in containers:
          c.close()
      for a in oldTemps:
          a.apoptose()
  
imports: import weakref
  from ..Qt import QtWidgets
  from .Container import Container, HContainer, TContainer, VContainer
  from .Dock import Dock
  from .DockDrop import DockDrop
label_desc: Use image node_id 16 for calling the DockArea obj's underlying member method code with example usage: obj.restoreState(state, missing, extra) without return types