public void run(String fileName) {
    this.fileName = fileName;

    tree = new TreeSet<Range>(new RangeComparator());

    try {
      BufferedReader bis = new BufferedReader(new FileReader(fileName));

      String line;

      while ((line = bis.readLine()) != null) {
        processLine(line);
      }

      System.out.println("-----");

      for (Range r : tree) {
        System.out.println(r.toString());
      }
    } catch (FileNotFoundException ex) {
      System.err.println(ex.toString());
    } catch (IOException ex) {
      System.err.println(ex.toString());
    }
  }
 protected void processRange(TreeSet<Range> tree, Range treeRange, Range newRange) {
   if (treeRange.getLeft() >= newRange.getRight()) {
     tree.add(newRange);
   } else if (treeRange.getRight() >= newRange.getLeft()) {
     tree.add(newRange);
   } else {
     System.out.println("Oops" + treeRange.toString() + newRange.toString());
   }
 }