def clone(self, value=noValue, **kwargs):
if value is noValue:<EOL><INDENT>if not kwargs:<EOL><INDENT>return self<EOL><DEDENT>value = self._value<EOL><DEDENT>initializers = self.readOnly.copy()<EOL>initializers.update(kwargs)<EOL>return self.__class__(value, **initializers)<EOL>
Create a modified version of |ASN.1| schema or value 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`.

        Note
        ----
        Due to the immutable nature of the |ASN.1| object, if no arguments
        are supplied, no new |ASN.1| object will be created and `self` will
        be returned instead.