code: @Override
  	public boolean hasNext() {
  		if (isLoopExitCondition()) {
  			return false;
  		}
  		for (;;) {
  			if (workingDirectory.files.length == 0) {
  				pop();
  			}
  			if (isLoopExitCondition()) {
  				return false;
  			}
  			workingDirectory.currentFile = workingDirectory.files[workingDirectory.index++];
  			if (!workingDirectory.currentFile.isDirectory()) {
  				break;
  			}
  			push(workingDirectory.currentFile);
  		}
  		return true;
  	}
docs: Return true if files iterator instance has at least one file not yet exposed. If this predicate returns true, next call
  of {@link #next()} method is guaranteed to return a valid file.
  
  @return true if there is at least one file usable by {@link #next()}.