def METHOD_NAME(self, input, errors, final):
    if self.decoder is None:
        (output, consumed, byteorder) = \
            codecs.utf_16_ex_decode(input, errors, 0, final)
        if byteorder == -1:
            self.decoder = codecs.utf_16_le_decode
        elif byteorder == 1:
            self.decoder = codecs.utf_16_be_decode
        elif consumed >= 2:
            raise UnicodeError("UTF-16 stream does not start with BOM")
        return (output, consumed)
    return self.decoder(input, self.errors, final)