class_docstr: A class of the plot layer object.
  
  Do not use this class explicitly.
  
  Instead, you should construct its objects with functions `geom_point()`,
  `geom_contour()`, `geom_boxplot()`, `geom_text()` etc.
class_docstr_tok: ["A","class","of","the","plot","layer","object",".","Do","not","use","this","class","explicitly",".","Instead",",","you","should","construct","its","objects","with","functions","`","geom_point","(",")","`",",","`","geom_contour","(",")","`",",","`","geom_boxplot","(",")","`",",","`","geom_text","(",")","`","etc","."]
code: def __add__(self, other):
      if isinstance(other, DummySpec):
          # nothing
          return self
  
      """
              layer + own_feature -> layer[feature] = feature
              layer + other -> default
          """
      if isinstance(other, FeatureSpec):
          if other.kind in LayerSpec.__own_features:
              l = LayerSpec.duplicate(self)
              l.props()[other.kind] = other
              return l
  
      return super().__add__(other)
  
imports: import io
  import json
  import os
  from typing import Union
  from lets_plot._global_settings import get_global_bool, has_global_value, FRAGMENTS_ENABLED
label_desc: Use image node_id 5 for calling the LayerSpec obj's underlying member method code with example usage: obj.__add__(other) and returns: super, self, l