class_docstr: An Overlay consists of multiple Elements (potentially of
  heterogeneous type) presented one on top each other with a
  particular z-ordering.
  
  Overlays along with elements constitute the only valid leaf types of
  a Layout and in fact extend the Layout structure. Overlays are
  constructed using the * operator (building an identical structure
  to the + operator).
docstr: Allows transparently slicing the Elements in the Overlay
  to select specific layers in an Overlay use the .get method.
docstr_tok: ["Allows","transparently","slicing","the","Elements","in","the","Overlay","to","select","specific","layers","in","an","Overlay","use","the",".get","method","."]
code: def __getitem__(self, key):
      """
      Allows transparently slicing the Elements in the Overlay
      to select specific layers in an Overlay use the .get method.
      """
      return Overlay([(k, v[key]) for k, v in self.items()])
  
imports: from functools import reduce
  import numpy
  import param
  from .dimension import Dimension, Dimensioned, ViewableElement, ViewableTree
  from .layout import AdjointLayout, Composable, Layout, Layoutable
  from .ndmapping import UniformNdMapping
  from .util import dimensioned_streams, sanitize_identifier, unique_array
label_desc: Use image node_id 2 for calling the Overlay obj's underlying member method code with example usage: obj.__getitem__(key) and returns: Overlay