BigInteger total;
    public void calculate() {        _calculating = true;         int size = _lm.size();        SessionID sessid;        String value;        BigInteger total;        int length;        for (int position=_lastCalculation+1; position<size; position++) {            sessid = (SessionID) _lm.get(position);            value = sessid.getValue();            length = value.length();            if (length>_maxlength) {                _maxlength = length;            }            if (updateCharset(value)) {                _lastCalculation = -1;            }        }        // convert each position's character set into a string for easier manipulation        for (int i=0; i<_maxlength; i++) {            StringBuffer buff = new StringBuffer();            for (char ch=32; ch<128; ch++) {                if (_charset[i][ch]>0) {                    buff.append(ch);                }            }            _chars[i]=buff.toString();        }        System.err.println("Starting calculations at " + _lastCalculation);        for (int position=_lastCalculation+1; position<size; position++) {            sessid = (SessionID) _lm.get(position);            value = sessid.getValue();            length = value.length();            sessid.setIntValue(convertStringToBigInt(value));        }        _lm.contentsChanged();        _lastCalculation = size-1;        System.err.println("Finishing calculations at " + _lastCalculation);        _calculating = false;    }