!7

import x30_pkg.x30_util;
import static x30_pkg.x30_util.rethrow;
import static x30_pkg.x30_util.fail;
import static x30_pkg.x30_util.multiMapPut;
import static x30_pkg.x30_util.getExceptionCause;
import static x30_pkg.x30_util.print_append;
import static x30_pkg.x30_util.newWeakHashMap;
import static x30_pkg.x30_util.fixNewLines;
import static x30_pkg.x30_util.join;
import static x30_pkg.x30_util.joinWithSpace;
import static x30_pkg.x30_util.isHeadless;
import static x30_pkg.x30_util.isAndroid;
import static x30_pkg.x30_util.call_checkArgs;
import static x30_pkg.x30_util._handleError;
import static x30_pkg.x30_util.endsWithLetterOrDigit;
import static x30_pkg.x30_util.isAWTThread;

static O callF(O f, O... args) ctex {
  if (f instanceof S)
    ret callMC((S) f, args);
  ifclass DynamicCallable
    if (f instanceof DynamicCallable)
      ret f/DynamicCallable._dyn(args);
  endif
  ret x30_util.callF(f, args);
}

static callMC(S method, O... args) {
  ret call(mc(), method, args);
}

static O call(O o) {
  ret callF(o);
}

static O call(O o, S method, O... args) {
  ret x30_util.call(o, method, args);
}

p {
  print("Hello world!");
}