docs: private void print(FileChannel fc, int level, long start, long end) throws IOException {
          fc.position(start);
          if(end <= 0) {
              end = start + fc.size();
              System.out.println("Setting END to " + end);
          }
          while (end - fc.position() > 8) {
              long begin = fc.position();
              ByteBuffer bb = ByteBuffer.allocate(8);
              fc.read(bb);
              bb.rewind();
              long size = IsoTypeReader.readUInt32(bb);
              String type = IsoTypeReader.read4cc(bb);
              long fin = begin + size;
              // indent by the required number of spaces
              for (int i = 0; i < level; i++) {
                  System.out.print(" ");
              }
  
              System.out.println(type + "@" + (begin) + " size: " + size);
              if (containers.contains(type)) {
                  print(fc, level + 1, begin + 8, fin);
                  if(fc.position() != fin) {
                      System.out.println("End of container contents at " + fc.position());
                      System.out.println("  FIN = " + fin);
                  }
              }
  
              fc.position(fin);
  
          }
      }