The decoder for this schema.
        Tries each decoder in order of the types specified for this schema.

def decode(self, value):
        """The decoder for this schema.
        Tries each decoder in order of the types specified for this schema.
        """
        # Use the default value unless the field accepts None types
        has_null_encoder = bool(encode_decode_null in self._decoders)

        if value is None and self._default is not None and not has_null_encoder:
            value = self._default

        for decoder in self._decoders:
            try:
                return decoder(value)
            except ValueError as ex:
                pass

        raise ValueError('Value \'{}\' is invalid. {}'
                         .format(value, ex.message))