'Create a copy of a |ASN.1| type or object.
Any parameters to the *subtype()* method will be added to the corresponding
properties of the |ASN.1| object.
Parameters
value : :class:`str`, :class:`bytes` or |ASN.1| object
Initialization value to pass to new ASN.1 object instead of
inheriting one from the caller.
implicitTag: :py:class:`~pyasn1.type.tag.Tag`
Implicitly apply given ASN.1 tag object to |ASN.1| object tag set
:py:class:`~pyasn1.type.tag.TagSet`, then use the result as
new object\'s ASN.1 tag(s).
explicitTag: :py:class:`~pyasn1.type.tag.Tag`
Explicitly apply given ASN.1 tag object to |ASN.1| object tag set
:py:class:`~pyasn1.type.tag.TagSet`, then use the result as
new object\'s ASN.1 tag(s).
subtypeSpec: :py:class:`~pyasn1.type.constraint.ConstraintsIntersection`
Add ASN.1 constraints object to one of the caller, then
use the result as new object\'s ASN.1 constraints.
encoding: :py:class:`str`
Unicode codec ID to encode/decode :class:`unicode` (Python 2)
or :class:`str` (Python 3) the payload when *OctetString*
object is used in string context.
binValue: :py:class:`str`
Binary string initializer. Example: \'10110011\'.
hexValue: :py:class:`str`
Hexadecimal string initializer. Example: \'DEADBEEF\'.
Returns
new instance of |ASN.1| type/value'

def subtype(self, value=noValue, implicitTag=None, explicitTag=None, subtypeSpec=None, encoding=None, binValue=noValue, hexValue=noValue):

    isModified = False
    if (((value is None) or (value is noValue)) and (binValue is noValue) and (hexValue is noValue)):
        value = self._value
    else:
        isModified = True
    if ((implicitTag is not None) and (implicitTag is not noValue)):
        tagSet = self._tagSet.tagImplicitly(implicitTag)
        isModified = True
    elif ((explicitTag is not None) and (explicitTag is not noValue)):
        tagSet = self._tagSet.tagExplicitly(explicitTag)
        isModified = True
    else:
        tagSet = self._tagSet
    if ((subtypeSpec is None) or (subtypeSpec is noValue)):
        subtypeSpec = self._subtypeSpec
    else:
        subtypeSpec = (self._subtypeSpec + subtypeSpec)
        isModified = True
    if ((encoding is None) or (encoding is noValue)):
        encoding = self._encoding
    else:
        isModified = True
    if isModified:
        return self.__class__(value, tagSet, subtypeSpec, encoding, binValue, hexValue)
    else:
        return self
