def __init__(self, value=None, data=None):
        self.value = value

        if data is None:
            self.data = None
        elif isinstance(data, dict):
            self.data = data.copy()
        elif isinstance(data, list):
            self.data = data[:]
        else:
            self.data = data