public TranscriptRecord parseLine(String line) throws GTFParseException {
        String[] fields = line.split("\t");
        TranscriptRecord record = TranscriptRecord.fromRefFlat(fields);
        
        //XXX skip the haplotypes and unassembled chroms
        if(record.getChrom().contains("_")) return null;

        if(record.getExonBases() == 0) return null;

        if(cdsOnly && record.getCdsExonBases() == 0) return null;

        if(keepExonBoundries && record.getValidExonBoundryBreaks(cdsOnly).size() == 0) {
            return null;
        }

        if(limit != null && 
          !limit.containsKey(record.getGeneId()) &&
          !limit.containsKey(record.getTranscriptId())) return null;

        return record;
    }