@Override
  public void before() {
    try {
      restore.before();
    } catch (Throwable throwable) {
      throw new RuntimeException(throwable.getMessage(), throwable);
    }
    normalizeProperties();
    if (httpPort < 0) {
      // at this point, httpPort is not being configured by api, we assume they do not
      // want to start the http service.
      // use putIfAbsent if it was configured using withProperty
      properties.putIfAbsent(HTTP_SERVICE_PORT, "0");
    }
    firstLevelChildrenFile = Arrays.asList(getWorkingDir().listFiles());

    for (String key : systemProperties.stringPropertyNames()) {
      System.setProperty(key, systemProperties.getProperty(key));
    }
  }
the abstract class that's used by LocatorStarterRule and ServerStarterRule to avoid code
duplication.

The rule will try to clean up the working dir as best as it can. Any first level children
created in the test will be cleaned up after the test.
geode-dunit/src/main/java/org/apache/geode/test/junit/rules/MemberStarterRule.java