@Override
    public void extract() throws XMLStreamException, FileNotFoundException
    {
        FileInfo ulic = this.bfis.get(Parser.Types.ULIC.toString());

        this.factory     = XMLInputFactory.newInstance();
        this.readerRaw   = factory.createXMLStreamReader(new BufferedInputStream(new FileInputStream(ulic.getFile())));
        this.reader      = factory.createFilteredReader(readerRaw, this.newLineFilter);
        
        while(reader.hasNext()) 
        {
            int next = reader.next();

            switch (next)
            {
                case XMLStreamConstants.START_ELEMENT:
                    this.newElement(reader.getLocalName());
                    break;

                case XMLStreamConstants.CHARACTERS:
                    tagContent = reader.getText().trim();
                    break;

                case XMLStreamConstants.END_ELEMENT:
                    this.endElement(reader.getLocalName());
                    break;
            }

            if(streets.size() >= 1000)
            {
                this.save();
            }

            parserMessages.sendProgress(reader.getLocation().getLineNumber(), ulic.getLines());
        }

        this.save();
    }