code: def clone(self, **kwargs):
          
          cloneValueFlag = kwargs.pop('cloneValueFlag', False)
  
          initializers = self.readOnly.copy()
          initializers.update(kwargs)
  
          clone = self.__class__(**initializers)
  
          if cloneValueFlag:
              self._cloneComponentValues(clone, cloneValueFlag)
  
          return clone
docs: Create a modified version of |ASN.1| schema object.
  
          The `clone()` method accepts the same set arguments as |ASN.1|
          class takes on instantiation except that all arguments
          of the `clone()` method are optional.
  
          Whatever arguments are supplied, they are used to create a copy
          of `self` taking precedence over the ones used to instantiate `self`.
  
          Possible values of `self` are never copied over thus `clone()` can
          only create a new schema object.
  
          Returns
          -------
          :
              new instance of |ASN.1| type/value
  
          Note
          ----
          Due to the mutable nature of the |ASN.1| object, even if no arguments
          are supplied, new |ASN.1| object will always be created as a shallow
          copy of `self`.