Introduce `@ToBeImplemented` (#2643) The `@ToBeImplemented` annotation replaces Groovy's `@NotYetImplemented`.
The problem with `NotYetImplemented` is that tests marked with it succeed no matter what causes the test to fail. Marked tests can pass because the expected failure is still present (which is the purpose of the test), or if the expected failure is replaced by some other failure.
It's better to write a test that explicitly tests for the expected failure, so when it fails for some other reason, it becomes noticeable. The purpose of the `@ToBeImplemented` annotation is to keep such tests easy to find in the code.
Simplify output file detection if there are no overlapping outputs (#2490) If there are no overlapping outputs, we can just use all the declared outputs as output files and do not need to filter since the task under question has exclusive access to the directory/files. We now ignore missing files in output properties, for these two ways of snapshotting a directory (output file detection and regular snapshotting) to be identical.