public static void updateDescriptors(ArrayList<PathDescriptor> currentDescriptors, ArrayList<PathDescriptor> newDescriptors) {
        System.out.println("Before Update");
        System.out.println(currentDescriptors.toString());
        int currentSize = currentDescriptors.size();
        for (int i = 0; i < currentSize; ++i) {
            PathDescriptor current = currentDescriptors.get(i);
            PathDescriptor newDescriptor = PathDescriptor.FindIfEqualRelativePath(newDescriptors, current);
            if (newDescriptor == null) {
                switch(current.status) {
                    case Deleted:
                        break;
                    case Modified:
                        current.status = PathDescriptor.Status.Deleted;
                        current.statusTimePoint = new Date();
                        break;
                }
            } else {
                switch(current.status) {
                    case Deleted:
                        current.lastCreationTime = new Date();
                    case Modified:
                        current.status = PathDescriptor.Status.Modified;
                        current.statusTimePoint = newDescriptor.statusTimePoint;
                        current.lastModified = newDescriptor.lastModified;
                        break;
                }
            }
        }
        
        int newSize = newDescriptors.size();
        for (int i = 0; i < newSize; ++i) {
            PathDescriptor newDescriptor = newDescriptors.get(i);
            PathDescriptor current = PathDescriptor.FindIfEqualRelativePath(currentDescriptors, newDescriptor);
            if (current == null) {
                newDescriptor.statusTimePoint = new Date();
                currentDescriptors.add(newDescriptor);
            }
        }
        
        System.out.println("After Update");
        System.out.println(currentDescriptors.toString());
    }