With Java 8's "default method" feature, any abstract class without direct or inherited field should be converted into an interface.
public abstract class Car {
public abstract void start(Environment c);
public void stop(Environment c) {
c.freeze(this);
}
}
public interface Car {
public void start(Environment c);
public default void stop(Environment c) {
c.freeze(this);
}
}