Properties to restore can be defined during test.

Makes it possible to restore different properties by different test:

    @Test
    public void aTest() {
      restoreSystemProperties.add("MyProperty");
      ...
    }
Properties to clear can be defined during test.

Makes it possible to clear different properties for different tests:

    @Test
    public void aTest() {
      clearSystemProperties.clear("MyProperty");
      ...
    }