public Record next()
    {
        Record rec = reader.next();
        Leader l = rec.getLeader();
        boolean is_utf_8 = false;
        if (l.getCharCodingScheme() == 'a') is_utf_8 = true;
        if (is_utf_8 && unicodeNormalize == Normalizer.NONE) return(rec);
        List<VariableField> fields = rec.getVariableFields();
        for (VariableField f : fields)
        {
            if (!(f instanceof DataField)) continue;
            DataField field = (DataField)f;
            List<Subfield> subfields = field.getSubfields();
            for (Subfield sf : subfields)
            {
                String oldData = sf.getData();
                String newData = oldData;
                if (!is_utf_8) newData = convert.convert(newData);
                if (unicodeNormalize != Normalizer.NONE) 
                {
                    newData = Normalizer.normalize(newData, unicodeNormalize);
                }
                if (!oldData.equals(newData))
                {
                    sf.setData(newData);
                }
            }
        }
        l.setCharCodingScheme('a');
        rec.setLeader(l);
        return rec;
    }