While gwt-core and the other refactored modules are intended to be
both gwt-compatible and j2cl-compatible, there are a small handful of
classes and methods in those refactored modules that, in their original
form, were somehow specific to the GWT compiler itself.
The
com.google.gwt.core.client.GWT class is one such class that mostly
consists of "magic", where there is no java or js implementation of many
of its members, but those members exist to allow the compiler to
rewrite certain calls with specific behavior. As such,
org.gwtproject.core.client.GWT cannot correctly implement all of those
methods, and throws exceptions where it must fail.
In
a case like this, you must call the original method on the
com.google.gwt class while you still use GWT. If you migrate to j2cl and
closure, you must find another solution there - j2cl has no split
points, and closure-compiler doesn't even think of split points in the
same way that GWT does. So, as long as you continue to use GWT 2, call the
runAsync() method on the com.google.gwt.core.client.GWT class, and refer to
https://www.gwtproject.org/doc/latest/DevGuideCodeSplitting.html for more guidance.