diff --git a/build.sbt b/build.sbt index e13b2b32d9f0..6bb3f19b6a48 100644 --- a/build.sbt +++ b/build.sbt @@ -2283,12 +2283,13 @@ lazy val `language-server` = (project in file("engine/language-server")) javaModuleName := "org.enso.language.server", Compile / moduleDependencies ++= Seq( - "org.graalvm.polyglot" % "polyglot" % graalMavenPackagesVersion, - "org.slf4j" % "slf4j-api" % slf4jVersion, - "commons-cli" % "commons-cli" % commonsCliVersion, - "commons-io" % "commons-io" % commonsIoVersion, - "com.google.flatbuffers" % "flatbuffers-java" % flatbuffersVersion, - "org.eclipse.jgit" % "org.eclipse.jgit" % jgitVersion + "org.graalvm.polyglot" % "polyglot" % graalMavenPackagesVersion, + "org.slf4j" % "slf4j-api" % slf4jVersion, + "commons-cli" % "commons-cli" % commonsCliVersion, + "commons-io" % "commons-io" % commonsIoVersion, + "com.google.flatbuffers" % "flatbuffers-java" % flatbuffersVersion, + "org.eclipse.jgit" % "org.eclipse.jgit" % jgitVersion, + "org.netbeans.api" % "org-openide-util-lookup" % netbeansApiVersion ), Compile / internalModuleDependencies := Seq( (`akka-wrapper` / Compile / exportedModule).value, @@ -3614,6 +3615,9 @@ lazy val `engine-runner` = project val epbLang = (`runtime-language-epb` / Compile / fullClasspath).value .map(_.data.getAbsolutePath) + val langServer = + (`language-server` / Compile / fullClasspath).value + .map(_.data.getAbsolutePath) val core = ( runnerDeps ++ runtimeDeps ++ @@ -3621,6 +3625,7 @@ lazy val `engine-runner` = project replDebugInstr ++ runtimeServerInstr ++ idExecInstr ++ + langServer ++ epbLang ).distinct val stdLibsJars = @@ -3722,6 +3727,7 @@ lazy val `engine-runner` = project "org.jline", "io.methvin.watchservice", "zio.internal", + "zio", "org.enso.runner", "sun.awt", "sun.java2d", @@ -3733,7 +3739,8 @@ lazy val `engine-runner` = project "akka.http", "org.enso.base", "org.enso.image", - "org.enso.table" + "org.enso.table", + "org.eclipse.jgit" ) ) } diff --git a/engine/common/src/main/java/org/enso/common/ContextFactory.java b/engine/common/src/main/java/org/enso/common/ContextFactory.java index 79c1e5a9ee47..efc33cade708 100644 --- a/engine/common/src/main/java/org/enso/common/ContextFactory.java +++ b/engine/common/src/main/java/org/enso/common/ContextFactory.java @@ -9,6 +9,7 @@ import org.enso.logger.JulHandler; import org.enso.logging.config.LoggerSetup; import org.graalvm.polyglot.Context; +import org.graalvm.polyglot.Engine; import org.graalvm.polyglot.HostAccess; import org.graalvm.polyglot.io.MessageTransport; import org.slf4j.event.Level; @@ -52,6 +53,7 @@ public final class ContextFactory { private String checkForWarnings; private int warningsLimit = 100; private java.util.Map options = new HashMap<>(); + private String runtimerServerKey; private boolean enableDebugServer; private ContextFactory() {} @@ -145,6 +147,11 @@ public ContextFactory options(Map options) { return this; } + public ContextFactory enableRuntimeServerInfoKey(String keyName) { + this.runtimerServerKey = keyName; + return this; + } + public ContextFactory checkForWarnings(String fqnOfMethod) { this.checkForWarnings = fqnOfMethod; return this; @@ -161,6 +168,16 @@ public Context build() { } var julLogLevel = Converter.toJavaLevel(logLevel); var logLevelName = julLogLevel.getName(); + var inAOTMode = java.lang.Boolean.getBoolean("com.oracle.graalvm.isaot"); + java.util.Map engineOptions = null; + if (runtimerServerKey != null) { + if (!inAOTMode) { + options.put(runtimerServerKey, "true"); + } else { + engineOptions = new java.util.HashMap<>(); + engineOptions.put(runtimerServerKey, "true"); + } + } var builder = Context.newBuilder() .allowExperimentalOptions(true) @@ -189,9 +206,6 @@ public Context build() { if (enableDebugServer) { builder.option(DebugServerInfo.ENABLE_OPTION, "true"); } - if (messageTransport != null) { - builder.serverTransport(messageTransport); - } builder.option(RuntimeOptions.LOG_LEVEL, logLevelName); var logHandler = JulHandler.get(); var logLevels = LoggerSetup.get().getConfig().getLoggers(); @@ -228,6 +242,18 @@ public Context build() { .allowCreateThread(true); } + if (inAOTMode) { + // In AOT mode one must not use a shared engine; the latter causes issues when initializing + // message transport - it is set to `null`. + var eng = Engine.newBuilder().allowExperimentalOptions(true).options(engineOptions); + if (messageTransport != null) { + eng.serverTransport(messageTransport); + } + builder.engine(eng.build()); + } else if (messageTransport != null) { + builder.serverTransport(messageTransport); + } + var ctx = builder.build(); ContextInsightSetup.configureContext(ctx); return ctx; diff --git a/engine/language-server/src/main/java/module-info.java b/engine/language-server/src/main/java/module-info.java index 6af1ceab6c0c..e288913bc7ca 100644 --- a/engine/language-server/src/main/java/module-info.java +++ b/engine/language-server/src/main/java/module-info.java @@ -38,7 +38,6 @@ requires org.enso.task.progress.notifications; requires org.enso.ydoc.polyfill; - exports org.enso.languageserver.boot; exports org.enso.languageserver.filemanager to scala.library; exports org.enso.languageserver.runtime to scala.library; exports org.enso.languageserver.search to scala.library; diff --git a/engine/language-server/src/main/java/org/enso/languageserver/boot/LanguageServerRunner.java b/engine/language-server/src/main/java/org/enso/languageserver/boot/LanguageServerRunner.java index cf3d8964c186..eb3afde3f0f8 100644 --- a/engine/language-server/src/main/java/org/enso/languageserver/boot/LanguageServerRunner.java +++ b/engine/language-server/src/main/java/org/enso/languageserver/boot/LanguageServerRunner.java @@ -8,6 +8,7 @@ import org.slf4j.event.Level; import scala.concurrent.ExecutionContext; +@org.openide.util.lookup.ServiceProvider(service = LanguageServerApi.class) public final class LanguageServerRunner extends LanguageServerApi { public LanguageServerRunner() {} diff --git a/engine/language-server/src/main/java/org/enso/languageserver/boot/resource/RepoInitialization.java b/engine/language-server/src/main/java/org/enso/languageserver/boot/resource/RepoInitialization.java index b69b28a49263..a606b39dcdc6 100644 --- a/engine/language-server/src/main/java/org/enso/languageserver/boot/resource/RepoInitialization.java +++ b/engine/language-server/src/main/java/org/enso/languageserver/boot/resource/RepoInitialization.java @@ -1,15 +1,12 @@ package org.enso.languageserver.boot.resource; import akka.event.EventStream; -import java.io.IOException; -import java.nio.file.FileSystemException; -import java.nio.file.Files; -import java.nio.file.NoSuchFileException; -import java.util.concurrent.*; -import org.apache.commons.io.FileUtils; +import java.util.concurrent.CompletableFuture; +import java.util.concurrent.CompletionStage; +import java.util.concurrent.Executor; +import java.util.concurrent.Semaphore; import org.enso.languageserver.data.ProjectDirectoriesConfig; import org.enso.languageserver.event.InitializedEvent; -import org.enso.logger.masking.MaskedPath; import org.enso.searcher.memory.InMemorySuggestionsRepo; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -72,14 +69,18 @@ public CompletableFuture init() { } private CompletableFuture initSuggestionsRepo() { - return CompletableFuture.runAsync( - () -> logger.debug("Initializing suggestions repo [{}]...", suggestionsRepo), executor) - .thenComposeAsync( - v -> { - if (!isInitialized) - return doInitSuggestionsRepo() - .exceptionallyComposeAsync(this::recoverInitializationError, executor); - else return CompletableFuture.completedFuture(v); + return CompletableFuture.supplyAsync( + () -> { + logger.debug("Initializing Suggestions repo [{}]...", suggestionsRepo); + try { + lock.acquire(); + if (!isInitialized) + return doInitSuggestionsRepo() + .exceptionallyComposeAsync(this::recoverInitializationError, executor); + else return CompletableFuture.completedFuture(null); + } catch (InterruptedException e) { + throw new RuntimeException(e); + } }, executor) .thenRunAsync( @@ -105,60 +106,6 @@ private CompletableFuture recoverInitializationError(Throwable error) { .thenComposeAsync(v -> doInitSuggestionsRepo(), executor); } - private CompletableFuture clearDatabaseFile(int retries) { - return CompletableFuture.runAsync( - () -> { - if (!isInitialized) { - logger.debug("Clear database file. Attempt #{}", retries + 1); - try { - Files.delete(projectDirectoriesConfig.suggestionsDatabaseFile().toPath()); - } catch (IOException e) { - throw new CompletionException(e); - } - } - }, - executor) - .exceptionallyComposeAsync(error -> recoverClearDatabaseFile(error, retries), executor); - } - - private CompletableFuture recoverClearDatabaseFile(Throwable error, int retries) { - if (error instanceof CompletionException) { - return recoverClearDatabaseFile(error.getCause(), retries); - } else if (error instanceof NoSuchFileException) { - logger.warn( - "Failed to delete the database file. Attempt #{}. File does not exist [{}]", - retries + 1, - new MaskedPath(projectDirectoriesConfig.suggestionsDatabaseFile().toPath())); - return CompletableFuture.completedFuture(null); - } else if (error instanceof FileSystemException) { - logger.error( - "Failed to delete the database file. Attempt #{}. The file will be removed during the" - + " shutdown", - retries + 1, - error); - Runtime.getRuntime() - .addShutdownHook( - new Thread( - () -> - FileUtils.deleteQuietly(projectDirectoriesConfig.suggestionsDatabaseFile()))); - return CompletableFuture.failedFuture(error); - } else if (error instanceof IOException) { - logger.error("Failed to delete the database file. Attempt #{}", retries + 1, error); - if (retries < MAX_RETRIES) { - try { - Thread.sleep(RETRY_DELAY_MILLIS); - } catch (InterruptedException e) { - throw new CompletionException(e); - } - return clearDatabaseFile(retries + 1); - } else { - return CompletableFuture.failedFuture(error); - } - } - - return CompletableFuture.completedFuture(null); - } - private CompletionStage doInitSuggestionsRepo() { return FutureConverters.asJava(suggestionsRepo.init()).thenAcceptAsync(res -> {}, executor); } diff --git a/engine/language-server/src/main/resources/META-INF/native-image/org/enso/languageserver/reflect-config.json b/engine/language-server/src/main/resources/META-INF/native-image/org/enso/languageserver/reflect-config.json new file mode 100644 index 000000000000..306a5bab286c --- /dev/null +++ b/engine/language-server/src/main/resources/META-INF/native-image/org/enso/languageserver/reflect-config.json @@ -0,0 +1,3892 @@ +[ +{ + "name":"[B" +}, +{ + "name":"[C" +}, +{ + "name":"[D" +}, +{ + "name":"[F" +}, +{ + "name":"[I" +}, +{ + "name":"[J" +}, +{ + "name":"[Ljava.lang.Object;" +}, +{ + "name":"[Ljava.lang.String;" +}, +{ + "name":"[Ljava.nio.file.Path;" +}, +{ + "name":"[Ljava.util.concurrent.CompletableFuture;" +}, +{ + "name":"[Ljavax.management.openmbean.CompositeData;" +}, +{ + "name":"[Lorg.enso.interpreter.node.ExpressionNode;" +}, +{ + "name":"[Lorg.enso.interpreter.node.controlflow.caseexpr.BranchNode;" +}, +{ + "name":"[Lorg.enso.interpreter.runtime.callable.Annotation;" +}, +{ + "name":"[Lorg.enso.interpreter.runtime.callable.argument.CallArgument;" +}, +{ + "name":"[Lorg.enso.text.buffer.Node;" +}, +{ + "name":"[Lscala.Tuple2;" +}, +{ + "name":"[Lsun.security.pkcs.SignerInfo;" +}, +{ + "name":"[S" +}, +{ + "name":"[Z" +}, +{ + "name":"ch.qos.logback.classic.encoder.PatternLayoutEncoder", + "queryAllPublicMethods":true, + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"ch.qos.logback.classic.pattern.DateConverter", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"ch.qos.logback.classic.pattern.LevelConverter", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"ch.qos.logback.classic.pattern.LineSeparatorConverter", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"ch.qos.logback.classic.pattern.LoggerConverter", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"ch.qos.logback.classic.pattern.MessageConverter", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"ch.qos.logback.classic.pattern.NopThrowableInformationConverter", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"ch.qos.logback.classic.pattern.ThreadConverter", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"ch.qos.logback.core.ConsoleAppender", + "queryAllPublicMethods":true, + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"ch.qos.logback.core.OutputStreamAppender", + "methods":[{"name":"setEncoder","parameterTypes":["ch.qos.logback.core.encoder.Encoder"] }] +}, +{ + "name":"ch.qos.logback.core.encoder.Encoder", + "methods":[{"name":"valueOf","parameterTypes":["java.lang.String"] }] +}, +{ + "name":"ch.qos.logback.core.encoder.LayoutWrappingEncoder", + "methods":[{"name":"setParent","parameterTypes":["ch.qos.logback.core.spi.ContextAware"] }] +}, +{ + "name":"ch.qos.logback.core.pattern.PatternLayoutEncoderBase", + "methods":[{"name":"setPattern","parameterTypes":["java.lang.String"] }] +}, +{ + "name":"ch.qos.logback.core.rolling.helper.DateTokenConverter", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"ch.qos.logback.core.rolling.helper.IntegerTokenConverter", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"ch.qos.logback.core.spi.ContextAware", + "methods":[{"name":"valueOf","parameterTypes":["java.lang.String"] }] +}, +{ + "name":"com.fasterxml.jackson.core.JsonProcessingException" +}, +{ + "name":"com.fasterxml.jackson.databind.JsonNode" +}, +{ + "name":"com.fasterxml.jackson.databind.ObjectMapper" +}, +{ + "name":"com.fasterxml.jackson.databind.ext.Java7SupportImpl", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"com.fasterxml.jackson.databind.node.ArrayNode" +}, +{ + "name":"com.fasterxml.jackson.databind.node.BooleanNode" +}, +{ + "name":"com.fasterxml.jackson.databind.node.DoubleNode" +}, +{ + "name":"com.fasterxml.jackson.databind.node.JsonNodeFactory" +}, +{ + "name":"com.fasterxml.jackson.databind.node.JsonNodeType" +}, +{ + "name":"com.fasterxml.jackson.databind.node.LongNode" +}, +{ + "name":"com.fasterxml.jackson.databind.node.NullNode" +}, +{ + "name":"com.fasterxml.jackson.databind.node.ObjectNode" +}, +{ + "name":"com.fasterxml.jackson.databind.node.TextNode" +}, +{ + "name":"com.ibm.icu.lang.UCharacter" +}, +{ + "name":"com.ibm.icu.text.BreakIterator" +}, +{ + "name":"com.ibm.icu.text.BreakIteratorFactory", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"com.ibm.icu.text.CollatorServiceShim", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"com.ibm.icu.text.Normalizer2" +}, +{ + "name":"com.ibm.icu.text.Normalizer2$Mode" +}, +{ + "name":"com.ibm.icu.text.Normalizer2.Mode" +}, +{ + "name":"com.sun.crypto.provider.AESCipher$General", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"com.sun.crypto.provider.ARCFOURCipher", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"com.sun.crypto.provider.ChaCha20Cipher$ChaCha20Poly1305", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"com.sun.crypto.provider.DESCipher", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"com.sun.crypto.provider.DESedeCipher", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"com.sun.crypto.provider.DHParameters", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"com.sun.crypto.provider.GaloisCounterMode$AESGCM", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"com.sun.crypto.provider.HmacCore$HmacSHA256", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"com.sun.crypto.provider.TlsKeyMaterialGenerator", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"com.sun.crypto.provider.TlsMasterSecretGenerator", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"com.sun.crypto.provider.TlsPrfGenerator$V12", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"com.sun.jna.CallbackProxy", + "methods":[{"name":"callback","parameterTypes":["java.lang.Object[]"] }] +}, +{ + "name":"com.sun.management.GarbageCollectorMXBean", + "queryAllPublicMethods":true +}, +{ + "name":"com.sun.management.GcInfo", + "queryAllPublicMethods":true +}, +{ + "name":"com.sun.management.HotSpotDiagnosticMXBean", + "queryAllPublicMethods":true +}, +{ + "name":"com.sun.management.ThreadMXBean", + "queryAllPublicMethods":true +}, +{ + "name":"com.sun.management.UnixOperatingSystemMXBean", + "queryAllPublicMethods":true +}, +{ + "name":"com.sun.management.VMOption", + "queryAllPublicMethods":true +}, +{ + "name":"com.sun.management.internal.GarbageCollectorExtImpl", + "queryAllPublicConstructors":true +}, +{ + "name":"com.sun.management.internal.HotSpotDiagnostic", + "queryAllPublicConstructors":true +}, +{ + "name":"com.sun.management.internal.HotSpotThreadImpl", + "queryAllPublicConstructors":true +}, +{ + "name":"com.sun.management.internal.OperatingSystemImpl", + "queryAllPublicConstructors":true +}, +{ + "name":"com.sun.org.apache.xerces.internal.dom.DOMXSImplementationSourceImpl", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"com.sun.org.apache.xerces.internal.jaxp.DocumentBuilderFactoryImpl", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"com.sun.org.apache.xerces.internal.jaxp.SAXParserFactoryImpl", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"com.typesafe.sslconfig.ssl.NoopHostnameVerifier", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"com.univocity.parsers.common.TextParsingException" +}, +{ + "name":"java.beans.Introspector" +}, +{ + "name":"java.io.BufferedInputStream" +}, +{ + "name":"java.io.ByteArrayInputStream" +}, +{ + "name":"java.io.ByteArrayOutputStream" +}, +{ + "name":"java.io.File" +}, +{ + "name":"java.io.FileInputStream" +}, +{ + "name":"java.io.FileNotFoundException" +}, +{ + "name":"java.io.FilePermission" +}, +{ + "name":"java.io.IOException" +}, +{ + "name":"java.io.InputStream" +}, +{ + "name":"java.io.OutputStream" +}, +{ + "name":"java.io.PrintWriter" +}, +{ + "name":"java.io.Reader" +}, +{ + "name":"java.io.Serializable" +}, +{ + "name":"java.io.StringReader" +}, +{ + "name":"java.io.StringWriter" +}, +{ + "name":"java.io.UncheckedIOException" +}, +{ + "name":"java.io.Writer" +}, +{ + "name":"java.lang.ArithmeticException" +}, +{ + "name":"java.lang.Boolean", + "fields":[{"name":"TYPE"}] +}, +{ + "name":"java.lang.Byte", + "fields":[{"name":"TYPE"}] +}, +{ + "name":"java.lang.Character", + "fields":[{"name":"TYPE"}] +}, +{ + "name":"java.lang.Class", + "methods":[{"name":"getModule","parameterTypes":[] }] +}, +{ + "name":"java.lang.ClassCastException" +}, +{ + "name":"java.lang.ClassValue" +}, +{ + "name":"java.lang.Class[]" +}, +{ + "name":"java.lang.Deprecated", + "queryAllPublicMethods":true +}, +{ + "name":"java.lang.Double", + "fields":[{"name":"TYPE"}] +}, +{ + "name":"java.lang.Enum", + "methods":[{"name":"name","parameterTypes":[] }] +}, +{ + "name":"java.lang.Exception" +}, +{ + "name":"java.lang.Float", + "fields":[{"name":"TYPE"}] +}, +{ + "name":"java.lang.IllegalArgumentException" +}, +{ + "name":"java.lang.IllegalStateException" +}, +{ + "name":"java.lang.IndexOutOfBoundsException" +}, +{ + "name":"java.lang.Integer", + "fields":[{"name":"TYPE"}] +}, +{ + "name":"java.lang.Long", + "fields":[{"name":"TYPE"}] +}, +{ + "name":"java.lang.Math" +}, +{ + "name":"java.lang.Module", + "methods":[{"name":"getDescriptor","parameterTypes":[] }] +}, +{ + "name":"java.lang.NullPointerException" +}, +{ + "name":"java.lang.NumberFormatException" +}, +{ + "name":"java.lang.Object", + "methods":[ + {"name":"", "parameterTypes":[]}, + {"name":"equals","parameterTypes":["java.lang.Object"] }, {"name":"hashCode","parameterTypes":[] }, {"name":"toString","parameterTypes":[] } + ] +}, +{ + "name":"java.lang.OutOfMemoryError" +}, +{ + "name":"java.lang.RuntimePermission" +}, +{ + "name":"java.lang.Short", + "fields":[{"name":"TYPE"}] +}, +{ + "name":"java.lang.StackTraceElement", + "queryAllPublicMethods":true +}, +{ + "name":"java.lang.String", + "fields":[{"name":"TYPE"}, {"name":"CASE_INSENSITIVE_ORDER"}, {"name":"value"}], + "methods":[ + {"name":"","parameterTypes":["java.lang.String"]}, + {"name":"format","parameterTypes":["java.lang.String", "java.lang.Object[]"]} + ] +}, +{ + "name":"java.lang.StringBuilder" +}, +{ + "name":"java.lang.String[]" +}, +{ + "name":"java.lang.System" +}, +{ + "name":"java.lang.Thread", + "fields":[{"name":"threadLocalRandomProbe"}] +}, +{ + "name":"java.lang.Thread$State" +}, +{ + "name":"java.lang.Thread.State" +}, +{ + "name":"java.lang.Throwable", + "methods":[{"name":"addSuppressed","parameterTypes":["java.lang.Throwable"] }] +}, +{ + "name":"java.lang.UnsupportedOperationException" +}, +{ + "name":"java.lang.Void", + "fields":[{"name":"TYPE"}] +}, +{ + "name":"java.lang.invoke.MethodHandle", + "methods":[{"name":"bindTo","parameterTypes":["java.lang.Object"] }, {"name":"invokeWithArguments","parameterTypes":["java.lang.Object[]"] }] +}, +{ + "name":"java.lang.invoke.MethodHandles", + "methods":[{"name":"lookup","parameterTypes":[] }, {"name":"privateLookupIn","parameterTypes":["java.lang.Class","java.lang.invoke.MethodHandles$Lookup"] }] +}, +{ + "name":"java.lang.invoke.MethodHandles$Lookup", + "methods":[{"name":"findSpecial","parameterTypes":["java.lang.Class","java.lang.String","java.lang.invoke.MethodType","java.lang.Class"] }, {"name":"in","parameterTypes":["java.lang.Class"] }, {"name":"unreflectSpecial","parameterTypes":["java.lang.reflect.Method","java.lang.Class"] }] +}, +{ + "name":"java.lang.invoke.MethodType", + "methods":[{"name":"methodType","parameterTypes":["java.lang.Class","java.lang.Class[]"] }] +}, +{ + "name":"java.lang.invoke.VarHandle", + "methods":[{"name":"releaseFence","parameterTypes":[] }] +}, +{ + "name":"java.lang.management.BufferPoolMXBean", + "queryAllPublicMethods":true +}, +{ + "name":"java.lang.management.ClassLoadingMXBean", + "queryAllPublicMethods":true +}, +{ + "name":"java.lang.management.CompilationMXBean", + "queryAllPublicMethods":true +}, +{ + "name":"java.lang.management.LockInfo", + "queryAllPublicMethods":true +}, +{ + "name":"java.lang.management.ManagementPermission", + "methods":[{"name":"","parameterTypes":["java.lang.String"] }] +}, +{ + "name":"java.lang.management.MemoryMXBean", + "queryAllPublicMethods":true +}, +{ + "name":"java.lang.management.MemoryManagerMXBean", + "queryAllPublicMethods":true +}, +{ + "name":"java.lang.management.MemoryPoolMXBean", + "queryAllPublicMethods":true +}, +{ + "name":"java.lang.management.MemoryUsage", + "queryAllPublicMethods":true +}, +{ + "name":"java.lang.management.MonitorInfo", + "queryAllPublicMethods":true +}, +{ + "name":"java.lang.management.PlatformLoggingMXBean", + "queryAllPublicMethods":true, + "methods":[{"name":"getLoggerLevel","parameterTypes":["java.lang.String"] }, {"name":"getLoggerNames","parameterTypes":[] }, {"name":"getParentLoggerName","parameterTypes":["java.lang.String"] }, {"name":"setLoggerLevel","parameterTypes":["java.lang.String","java.lang.String"] }] +}, +{ + "name":"java.lang.management.RuntimeMXBean", + "queryAllPublicMethods":true +}, +{ + "name":"java.lang.management.ThreadInfo", + "queryAllPublicMethods":true +}, +{ + "name":"java.lang.module.ModuleDescriptor", + "methods":[{"name":"rawVersion","parameterTypes":[] }] +}, +{ + "name":"java.lang.reflect.Method", + "methods":[{"name":"isDefault","parameterTypes":[] }, {"name":"isVarArgs","parameterTypes":[] }] +}, +{ + "name":"java.math.BigDecimal" +}, +{ + "name":"java.math.BigInteger" +}, +{ + "name":"java.math.MathContext" +}, +{ + "name":"java.math.RoundingMode" +}, +{ + "name":"java.net.InetSocketAddress" +}, +{ + "name":"java.net.NetPermission" +}, +{ + "name":"java.net.ProxySelector" +}, +{ + "name":"java.net.SocketPermission" +}, +{ + "name":"java.net.URI" +}, +{ + "name":"java.net.URISyntaxException" +}, +{ + "name":"java.net.URLEncoder" +}, +{ + "name":"java.net.URLPermission", + "methods":[{"name":"","parameterTypes":["java.lang.String","java.lang.String"] }] +}, +{ + "name":"java.net.http.HttpClient" +}, +{ + "name":"java.net.http.HttpClient$Builder" +}, +{ + "name":"java.net.http.HttpClient$Redirect" +}, +{ + "name":"java.net.http.HttpClient.Builder" +}, +{ + "name":"java.net.http.HttpClient.Redirect" +}, +{ + "name":"java.net.http.HttpRequest" +}, +{ + "name":"java.net.http.HttpRequest$BodyPublisher" +}, +{ + "name":"java.net.http.HttpRequest$BodyPublishers" +}, +{ + "name":"java.net.http.HttpRequest$Builder" +}, +{ + "name":"java.net.http.HttpRequest.BodyPublisher" +}, +{ + "name":"java.net.http.HttpRequest.BodyPublishers" +}, +{ + "name":"java.net.http.HttpRequest.Builder" +}, +{ + "name":"java.nio.Buffer" +}, +{ + "name":"java.nio.CharBuffer" +}, +{ + "name":"java.nio.charset.Charset" +}, +{ + "name":"java.nio.charset.UnsupportedCharsetException" +}, +{ + "name":"java.nio.file.AccessDeniedException" +}, +{ + "name":"java.nio.file.DirectoryNotEmptyException" +}, +{ + "name":"java.nio.file.FileAlreadyExistsException" +}, +{ + "name":"java.nio.file.FileSystemException" +}, +{ + "name":"java.nio.file.FileSystems" +}, +{ + "name":"java.nio.file.NoSuchFileException" +}, +{ + "name":"java.nio.file.NotDirectoryException" +}, +{ + "name":"java.nio.file.Path" +}, +{ + "name":"java.nio.file.WatchEvent$Modifier" +}, +{ + "name":"java.nio.file.Path[]" +}, +{ + "name":"java.nio.file.StandardCopyOption" +}, +{ + "name":"java.nio.file.StandardOpenOption" +}, +{ + "name":"java.nio.file.attribute.PosixFilePermission" +}, +{ + "name":"java.nio.file.attribute.PosixFilePermissions" +}, +{ + "name":"java.security.AlgorithmParametersSpi" +}, +{ + "name":"java.security.AllPermission" +}, +{ + "name":"java.security.KeyStore" +}, +{ + "name":"java.security.KeyStoreSpi" +}, +{ + "name":"java.security.MessageDigestSpi" +}, +{ + "name":"java.security.SecureRandomParameters" +}, +{ + "name":"java.security.SecurityPermission" +}, +{ + "name":"java.security.cert.PKIXRevocationChecker" +}, +{ + "name":"java.security.interfaces.ECPrivateKey" +}, +{ + "name":"java.security.interfaces.ECPublicKey" +}, +{ + "name":"java.security.interfaces.RSAPrivateKey" +}, +{ + "name":"java.security.interfaces.RSAPublicKey" +}, +{ + "name":"java.security.spec.DSAParameterSpec" +}, +{ + "name":"java.sql.Connection" +}, +{ + "name":"java.sql.DatabaseMetaData" +}, +{ + "name":"java.sql.Date" +}, +{ + "name":"java.sql.JDBCType" +}, +{ + "name":"java.sql.PreparedStatement" +}, +{ + "name":"java.sql.ResultSet" +}, +{ + "name":"java.sql.ResultSetMetaData" +}, +{ + "name":"java.sql.SQLException" +}, +{ + "name":"java.sql.SQLTimeoutException" +}, +{ + "name":"java.sql.Timestamp" +}, +{ + "name":"java.sql.Types" +}, +{ + "name":"java.text.DecimalFormat" +}, +{ + "name":"java.text.DecimalFormatSymbols" +}, +{ + "name":"java.text.NumberFormat" +}, +{ + "name":"java.text.ParseException" +}, +{ + "name":"java.time.DateTimeException" +}, +{ + "name":"java.time.DayOfWeek" +}, +{ + "name":"java.time.Duration" +}, +{ + "name":"java.time.Instant" +}, +{ + "name":"java.time.LocalDate" +}, +{ + "name":"java.time.LocalDateTime" +}, +{ + "name":"java.time.LocalTime" +}, +{ + "name":"java.time.Period" +}, +{ + "name":"java.time.ZoneId" +}, +{ + "name":"java.time.ZoneOffset" +}, +{ + "name":"java.time.ZonedDateTime" +}, +{ + "name":"java.time.chrono.ChronoPeriod" +}, +{ + "name":"java.time.format.DateTimeFormatter" +}, +{ + "name":"java.time.format.DateTimeFormatterBuilder" +}, +{ + "name":"java.time.format.SignStyle" +}, +{ + "name":"java.time.format.TextStyle" +}, +{ + "name":"java.time.temporal.ChronoField" +}, +{ + "name":"java.time.temporal.ChronoUnit" +}, +{ + "name":"java.time.temporal.IsoFields" +}, +{ + "name":"java.time.temporal.TemporalAdjuster" +}, +{ + "name":"java.time.temporal.TemporalAdjusters" +}, +{ + "name":"java.time.temporal.TemporalAmount" +}, +{ + "name":"java.time.temporal.TemporalUnit" +}, +{ + "name":"java.time.temporal.UnsupportedTemporalTypeException" +}, +{ + "name":"java.util.AbstractList" +}, +{ + "name":"java.util.ArrayList" +}, +{ + "name":"java.util.Base64" +}, +{ + "name":"java.util.Base64$Decoder" +}, +{ + "name":"java.util.Base64$Encoder" +}, +{ + "name":"java.util.Base64.Decoder" +}, +{ + "name":"java.util.Base64.Encoder" +}, +{ + "name":"java.util.Collection", + "methods": [ + { + "name":"contains", + "parameterTypes":["java.lang.Object"] + } + ] +}, +{ + "name":"java.util.Date" +}, +{ + "name":"java.util.HashSet" +}, +{ + "name":"java.util.Iterator" +}, +{ + "name":"java.util.List" +}, +{ + "name":"java.util.Locale", + "allDeclaredClasses":true, + "methods":[{"name":"getDefault","parameterTypes":["java.util.Locale$Category"] }, {"name":"setDefault","parameterTypes":["java.util.Locale$Category","java.util.Locale"] }] +}, +{ + "name":"java.util.Locale$Category" +}, +{ + "name":"java.util.Map" +}, +{ + "name":"java.util.Objects" +}, +{ + "name":"java.util.PropertyPermission", + "methods":[{"name":"","parameterTypes":["java.lang.String","java.lang.String"] }] +}, +{ + "name":"java.util.Random" +}, +{ + "name":"java.util.Set" +}, +{ + "name":"java.util.UUID" +}, +{ + "name":"java.util.concurrent.ForkJoinTask", + "fields":[{"name":"aux"}, {"name":"status"}] +}, +{ + "name":"java.util.concurrent.atomic.AtomicBoolean", + "fields":[{"name":"value"}] +}, +{ + "name":"java.util.concurrent.atomic.AtomicMarkableReference", + "fields":[{"name":"pair"}] +}, +{ + "name":"java.util.concurrent.atomic.AtomicReference", + "fields":[{"name":"value"}] +}, +{ + "name":"java.util.concurrent.atomic.Striped64", + "fields":[{"name":"base"}, {"name":"cellsBusy"}] +}, +{ + "name":"java.util.function.Function" +}, +{ + "name":"java.util.logging.LogManager", + "methods":[{"name":"getLoggingMXBean","parameterTypes":[] }] +}, +{ + "name":"java.util.logging.Logger" +}, +{ + "name":"org.slf4j.Logger", + "methods": [{"name":"getLogger", "parameterTypes":["java.lang.Class"]}] +}, +{"name": "ch.qos.logback.core.status.InfoStatus"}, +{ + "name":"[Lakka.actor.LightArrayRevolverScheduler$TaskQueue;" +}, +{ + "name":"akka.event.DefaultLoggingFilter", + "methods":[{"name":"","parameterTypes":["akka.actor.ActorSystem$Settings", "akka.event.EventStream"] }] +}, +{ + "name":"akka.actor.ActorCell", + "fields":[{"name":"akka$actor$dungeon$Children$$_childrenRefsDoNotCallMeDirectly"}, {"name":"akka$actor$dungeon$Children$$_functionRefsDoNotCallMeDirectly"}, {"name":"akka$actor$dungeon$Children$$_nextNameDoNotCallMeDirectly"}, {"name":"akka$actor$dungeon$Dispatch$$_mailboxDoNotCallMeDirectly"}] +}, +{ + "name":"akka.actor.DefaultSupervisorStrategy", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"akka.actor.LightArrayRevolverScheduler", + "methods":[{"name":"","parameterTypes":["com.typesafe.config.Config","akka.event.LoggingAdapter","java.util.concurrent.ThreadFactory"] }] +}, +{ + "name":"akka.actor.LightArrayRevolverScheduler$TaskHolder", + "fields":[{"name":"task"}] +}, +{ + "name":"akka.actor.LocalActorRefProvider", + "methods":[{"name":"","parameterTypes":["java.lang.String","akka.actor.ActorSystem$Settings","akka.event.EventStream","akka.actor.DynamicAccess"] }] +}, +{ + "name":"akka.actor.LocalActorRefProvider$Guardian", + "queryAllDeclaredConstructors":true, + "methods":[{"name":"","parameterTypes":["akka.actor.SupervisorStrategy"] }] +}, +{ + "name":"akka.actor.LocalActorRefProvider$SystemGuardian", + "queryAllDeclaredConstructors":true, + "methods":[{"name":"","parameterTypes":["akka.actor.SupervisorStrategy","akka.actor.ActorRef"] }] +}, +{ + "name":"akka.actor.Props$EmptyActor", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"akka.actor.RepointableActorRef", + "fields":[{"name":"_cellDoNotCallMeDirectly"}, {"name":"_lookupDoNotCallMeDirectly"}] +}, +{ + "name":"akka.dispatch.AbstractNodeQueue", + "fields":[{"name":"_tailDoNotCallMeDirectly"}] +}, +{ + "name":"akka.dispatch.AbstractNodeQueue$Node", + "fields":[{"name":"_nextDoNotCallMeDirectly"}] +}, +{ + "name":"akka.dispatch.BoundedControlAwareMessageQueueSemantics" +}, +{ + "name":"akka.dispatch.BoundedDequeBasedMessageQueueSemantics" +}, +{ + "name":"akka.dispatch.BoundedMessageQueueSemantics" +}, +{ + "name":"akka.dispatch.ControlAwareMessageQueueSemantics" +}, +{ + "name":"akka.dispatch.DequeBasedMessageQueueSemantics" +}, +{ + "name":"akka.dispatch.Dispatcher", + "fields":[{"name":"executorServiceDelegate"}] +}, +{ + "name":"akka.dispatch.Mailbox", + "fields":[{"name":"_statusDoNotCallMeDirectly"}, {"name":"_systemQueueDoNotCallMeDirectly"}] +}, +{ + "name":"akka.dispatch.MessageDispatcher", + "fields":[{"name":"_inhabitantsDoNotCallMeDirectly"}, {"name":"_shutdownScheduleDoNotCallMeDirectly"}] +}, +{ + "name":"akka.dispatch.MultipleConsumerSemantics" +}, +{ + "name":"akka.dispatch.UnboundedControlAwareMessageQueueSemantics" +}, +{ + "name":"akka.dispatch.UnboundedDequeBasedMailbox", + "methods":[{"name":"","parameterTypes":["akka.actor.ActorSystem$Settings","com.typesafe.config.Config"] }] +}, +{ + "name":"akka.dispatch.UnboundedDequeBasedMessageQueueSemantics" +}, +{ + "name":"akka.dispatch.UnboundedMailbox", + "methods":[{"name":"","parameterTypes":["akka.actor.ActorSystem$Settings","com.typesafe.config.Config"] }] +}, +{ + "name":"akka.dispatch.UnboundedMessageQueueSemantics" +}, +{ + "name":"akka.event.DeadLetterListener", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name": "akka.event.DefaultLoggingFilter", + "methods": [{"name":"", "parameterTypes": ["akka.actor.ActorSystem$Settings", "akka.event.EventStream"]}] +}, +{ + "name":"akka.event.EventStreamUnsubscriber", + "queryAllDeclaredConstructors":true, + "methods":[{"name":"","parameterTypes":["akka.event.EventStream","boolean"] }] +}, +{ + "name":"akka.event.LoggerMailboxType", + "methods":[{"name":"","parameterTypes":["akka.actor.ActorSystem$Settings","com.typesafe.config.Config"] }] +}, +{ + "name":"akka.event.LoggerMessageQueueSemantics" +}, +{ + "name":"akka.event.slf4j.Slf4jLogger", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"akka.event.slf4j.Slf4jLoggingFilter", + "methods":[{"name":"","parameterTypes":["akka.actor.ActorSystem$Settings","akka.event.EventStream"] }] +}, +{ + "name":"akka.http.DefaultParsingErrorHandler$", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"akka.http.impl.engine.client.PoolMasterActor", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"akka.io.SelectionHandler", + "queryAllDeclaredConstructors":true, + "methods":[{"name":"","parameterTypes":["akka.io.SelectionHandlerSettings"] }] +}, +{ + "name":"akka.io.TcpIncomingConnection", + "queryAllDeclaredConstructors":true, + "methods":[{"name":"","parameterTypes":["akka.io.TcpExt","java.nio.channels.SocketChannel","akka.io.ChannelRegistry","akka.actor.ActorRef","scala.collection.immutable.Iterable","boolean"] }] +}, +{ + "name":"akka.io.TcpListener", + "queryAllDeclaredConstructors":true, + "methods":[{"name":"","parameterTypes":["akka.actor.ActorRef","akka.io.TcpExt","akka.io.ChannelRegistry","akka.actor.ActorRef","akka.io.Tcp$Bind"] }] +}, +{ + "name":"akka.io.TcpManager", + "queryAllDeclaredConstructors":true, + "methods":[{"name":"","parameterTypes":["akka.io.TcpExt"] }] +}, +{ + "name":"akka.pattern.PromiseActorRef", + "fields":[{"name":"_stateDoNotCallMeDirectly"}, {"name":"_watchedByDoNotCallMeDirectly"}] +}, +{ + "name":"akka.routing.ConsistentHashingPool", + "methods":[{"name":"","parameterTypes":["com.typesafe.config.Config"] }] +}, +{ + "name":"akka.routing.RoundRobinPool", + "methods":[{"name":"","parameterTypes":["com.typesafe.config.Config"] }] +}, +{ + "name":"akka.routing.RoutedActorCell$RouterActorCreator", + "queryAllDeclaredConstructors":true, + "methods":[{"name":"","parameterTypes":["akka.routing.RouterConfig"] }] +}, +{ + "name":"akka.stream.SystemMaterializer$", + "fields":[{"name":"MODULE$"}] +}, +{ + "name":"java.util.logging.LoggingMXBean", + "queryAllPublicMethods":true +}, +{ + "name":"java.util.regex.Pattern" +}, +{ + "name":"javax.management.MBeanOperationInfo", + "queryAllPublicMethods":true, + "methods":[{"name":"getSignature","parameterTypes":[] }] +}, +{ + "name":"javax.management.MBeanServerBuilder", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"javax.management.ObjectName" +}, +{ + "name":"javax.management.StandardEmitterMBean", + "methods":[{"name":"cacheMBeanInfo","parameterTypes":["javax.management.MBeanInfo"] }, {"name":"getCachedMBeanInfo","parameterTypes":[] }, {"name":"getMBeanInfo","parameterTypes":[] }] +}, +{ + "name":"javax.management.openmbean.CompositeData" +}, +{ + "name":"javax.management.openmbean.OpenMBeanOperationInfoSupport" +}, +{ + "name":"javax.management.openmbean.TabularData" +}, +{ + "name":"javax.net.ssl.KeyManager[]" +}, +{ + "name":"javax.net.ssl.SSLContext" +}, +{ + "name":"javax.net.ssl.TrustManagerFactory" +}, +{ + "name":"javax.net.ssl.TrustManager[]" +}, +{ + "name":"javax.security.auth.x500.X500Principal", + "fields":[{"name":"thisX500Name"}], + "methods":[{"name":"","parameterTypes":["sun.security.x509.X500Name"] }] +}, +{ + "name":"javax.smartcardio.CardPermission" +}, +{ + "name":"javax.xml.parsers.DocumentBuilder" +}, +{ + "name":"javax.xml.parsers.DocumentBuilderFactory" +}, +{ + "name":"javax.xml.xpath.XPath" +}, +{ + "name":"javax.xml.xpath.XPathConstants" +}, +{ + "name":"javax.xml.xpath.XPathFactory" +}, +{ + "name":"jdk.internal.misc.Unsafe" +}, +{ + "name":"jdk.management.jfr.ConfigurationInfo", + "queryAllPublicMethods":true +}, +{ + "name":"jdk.management.jfr.EventTypeInfo", + "queryAllPublicMethods":true +}, +{ + "name":"jdk.management.jfr.FlightRecorderMXBean", + "queryAllPublicMethods":true +}, +{ + "name":"jdk.management.jfr.FlightRecorderMXBeanImpl", + "queryAllPublicConstructors":true, + "methods":[{"name":"cacheMBeanInfo","parameterTypes":["javax.management.MBeanInfo"] }, {"name":"getCachedMBeanInfo","parameterTypes":[] }, {"name":"getMBeanInfo","parameterTypes":[] }, {"name":"getNotificationInfo","parameterTypes":[] }] +}, +{ + "name":"jdk.management.jfr.RecordingInfo", + "queryAllPublicMethods":true +}, +{ + "name":"jdk.management.jfr.SettingDescriptorInfo", + "queryAllPublicMethods":true +}, +{ + "name":"org.apache.commons.compress.archivers.zip.AsiExtraField", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.apache.commons.compress.archivers.zip.JarMarker", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.apache.commons.compress.archivers.zip.ResourceAlignmentExtraField", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.apache.commons.compress.archivers.zip.UnicodeCommentExtraField", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.apache.commons.compress.archivers.zip.UnicodePathExtraField", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.apache.commons.compress.archivers.zip.X000A_NTFS", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.apache.commons.compress.archivers.zip.X0014_X509Certificates", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.apache.commons.compress.archivers.zip.X0015_CertificateIdForFile", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.apache.commons.compress.archivers.zip.X0016_CertificateIdForCentralDirectory", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.apache.commons.compress.archivers.zip.X0017_StrongEncryptionHeader", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.apache.commons.compress.archivers.zip.X0019_EncryptionRecipientCertificateList", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.apache.commons.compress.archivers.zip.X5455_ExtendedTimestamp", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.apache.commons.compress.archivers.zip.X7875_NewUnix", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.apache.commons.compress.archivers.zip.Zip64ExtendedInformationExtraField", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.apache.poi.UnsupportedFileFormatException" +}, +{ + "name":"org.apache.poi.poifs.filesystem.NotOLE2FileException" +}, +{ + "name":"org.apache.poi.ss.usermodel.Workbook" +}, +{ + "name":"org.bouncycastle.jcajce.provider.asymmetric.COMPOSITE$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.asymmetric.DH$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.asymmetric.DSA$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.asymmetric.DSTU4145$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.asymmetric.Dilithium$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.asymmetric.EC$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.asymmetric.ECGOST$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.asymmetric.EXTERNAL$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.asymmetric.EdEC$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.asymmetric.ElGamal$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.asymmetric.Falcon$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.asymmetric.GM$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.asymmetric.GOST$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.asymmetric.IES$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.asymmetric.LMS$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.asymmetric.NTRU$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.asymmetric.RSA$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.asymmetric.SPHINCSPlus$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.asymmetric.X509$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.digest.Blake2b$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.digest.Blake2s$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.digest.Blake3$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.digest.DSTU7564$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.digest.GOST3411$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.digest.Haraka$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.digest.Keccak$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.digest.MD2$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.digest.MD4$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.digest.MD5$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.digest.RIPEMD128$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.digest.RIPEMD160$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.digest.RIPEMD256$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.digest.RIPEMD320$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.digest.SHA1$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.digest.SHA224$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.digest.SHA256$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.digest.SHA3$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.digest.SHA384$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.digest.SHA512$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.digest.SM3$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.digest.Skein$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.digest.Tiger$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.digest.Whirlpool$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.drbg.DRBG$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.keystore.BC$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.keystore.BCFKS$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.keystore.PKCS12$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.symmetric.AES$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.symmetric.ARC4$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.symmetric.ARIA$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.symmetric.Blowfish$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.symmetric.CAST5$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.symmetric.CAST6$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.symmetric.Camellia$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.symmetric.ChaCha$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.symmetric.DES$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.symmetric.DESede$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.symmetric.DSTU7624$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.symmetric.GOST28147$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.symmetric.GOST3412_2015$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.symmetric.Grain128$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.symmetric.Grainv1$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.symmetric.HC128$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.symmetric.HC256$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.symmetric.IDEA$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.symmetric.Noekeon$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.symmetric.OpenSSLPBKDF$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.symmetric.PBEPBKDF1$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.symmetric.PBEPBKDF2$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.symmetric.PBEPKCS12$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.symmetric.Poly1305$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.symmetric.RC2$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.symmetric.RC5$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.symmetric.RC6$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.symmetric.Rijndael$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.symmetric.SCRYPT$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.symmetric.SEED$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.symmetric.SM4$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.symmetric.Salsa20$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.symmetric.Serpent$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.symmetric.Shacal2$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.symmetric.SipHash$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.symmetric.SipHash128$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.symmetric.Skipjack$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.symmetric.TEA$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.symmetric.TLSKDF$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.symmetric.Threefish$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.symmetric.Twofish$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.symmetric.VMPC$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.symmetric.VMPCKSA3$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.symmetric.XSalsa20$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.symmetric.XTEA$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.jcajce.provider.symmetric.Zuc$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.pqc.jcajce.provider.BIKE$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.pqc.jcajce.provider.CMCE$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.pqc.jcajce.provider.Dilithium$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.pqc.jcajce.provider.Falcon$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.pqc.jcajce.provider.Frodo$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.pqc.jcajce.provider.HQC$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.pqc.jcajce.provider.Kyber$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.pqc.jcajce.provider.LMS$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.pqc.jcajce.provider.NH$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.pqc.jcajce.provider.NTRU$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.pqc.jcajce.provider.NTRUPrime$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.pqc.jcajce.provider.Picnic$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.pqc.jcajce.provider.Rainbow$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.pqc.jcajce.provider.SABER$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.pqc.jcajce.provider.SPHINCS$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.pqc.jcajce.provider.SPHINCSPlus$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.bouncycastle.pqc.jcajce.provider.XMSS$Mappings", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.enso.base.Array_Utils" +}, +{ + "name":"org.enso.base.CompareException" +}, +{ + "name":"org.enso.base.DryRunFileManager" +}, +{ + "name":"org.enso.base.Encoding_Utils" +}, +{ + "name":"org.enso.base.Environment_Utils" +}, +{ + "name":"org.enso.base.FileLineReader" +}, +{ + "name":"org.enso.base.ObjectComparator" +}, +{ + "name":"org.enso.base.Regex_Utils" +}, +{ + "name":"org.enso.base.Stream_Utils" +}, +{ + "name":"org.enso.base.Stream_Utils$InputStreamLike" +}, +{ + "name":"org.enso.base.Stream_Utils$OutputStreamLike" +}, +{ + "name":"org.enso.base.Stream_Utils.InputStreamLike" +}, +{ + "name":"org.enso.base.Stream_Utils.OutputStreamLike" +}, +{ + "name":"org.enso.base.Text_Utils" +}, +{ + "name":"org.enso.base.Time_Utils" +}, +{ + "name":"org.enso.base.Time_Utils$AdjustOp" +}, +{ + "name":"org.enso.base.Time_Utils.AdjustOp" +}, +{ + "name":"org.enso.base.WithProblems" +}, +{ + "name":"org.enso.base.XML_Utils" +}, +{ + "name":"org.enso.base.arrays.LongArrayList" +}, +{ + "name":"org.enso.base.encoding.DecodingProblem" +}, +{ + "name":"org.enso.base.encoding.DecodingProblemAggregator" +}, +{ + "name":"org.enso.base.encoding.Encoding_Utils" +}, +{ + "name":"org.enso.base.encoding.NewlineDetector" +}, +{ + "name":"org.enso.base.encoding.ReportingStreamDecoder" +}, +{ + "name":"org.enso.base.encoding.ReportingStreamEncoder" +}, +{ + "name":"org.enso.base.enso_cloud.AuthenticationProvider" +}, +{ + "name":"org.enso.base.enso_cloud.CacheSettings" +}, +{ + "name":"org.enso.base.enso_cloud.CloudAPI" +}, +{ + "name":"org.enso.base.enso_cloud.CloudRequestCache" +}, +{ + "name":"org.enso.base.enso_cloud.DataLinkSPI" +}, +{ + "name":"org.enso.base.enso_cloud.EnsoSecretAccessDenied" +}, +{ + "name":"org.enso.base.enso_cloud.EnsoSecretHelper" +}, +{ + "name":"org.enso.base.enso_cloud.ExternalLibrarySecretHelper" +}, +{ + "name":"org.enso.base.enso_cloud.HideableValue" +}, +{ + "name":"org.enso.base.enso_cloud.HideableValue$Base64EncodeValue" +}, +{ + "name":"org.enso.base.enso_cloud.HideableValue$ConcatValues" +}, +{ + "name":"org.enso.base.enso_cloud.HideableValue$PlainValue" +}, +{ + "name":"org.enso.base.enso_cloud.HideableValue$SecretValue" +}, +{ + "name":"org.enso.base.enso_cloud.HideableValue.Base64EncodeValue" +}, +{ + "name":"org.enso.base.enso_cloud.HideableValue.ConcatValues" +}, +{ + "name":"org.enso.base.enso_cloud.HideableValue.PlainValue" +}, +{ + "name":"org.enso.base.enso_cloud.HideableValue.SecretValue" +}, +{ + "name":"org.enso.base.enso_cloud.audit.AuditLog" +}, +{ + "name":"org.enso.base.file_format.FileFormatSPI" +}, +{ + "name":"org.enso.base.file_system.FileSystemSPI" +}, +{ + "name":"org.enso.base.file_system.File_Utils" +}, +{ + "name":"org.enso.base.net.URITransformer" +}, +{ + "name":"org.enso.base.net.URIWithSecrets" +}, +{ + "name":"org.enso.base.net.http.MultipartBodyBuilder" +}, +{ + "name":"org.enso.base.net.http.UrlencodedBodyBuilder" +}, +{ + "name":"org.enso.base.numeric.ConversionResult" +}, +{ + "name":"org.enso.base.numeric.Decimal_Utils" +}, +{ + "name":"org.enso.base.polyglot.NumericConverter" +}, +{ + "name":"org.enso.base.polyglot.WrappedDataflowError" +}, +{ + "name":"org.enso.base.random.RandomInstanceHolder" +}, +{ + "name":"org.enso.base.random.Random_Utils" +}, +{ + "name":"org.enso.base.statistics.CorrelationStatistics" +}, +{ + "name":"org.enso.base.statistics.FitError" +}, +{ + "name":"org.enso.base.statistics.LinearModel" +}, +{ + "name":"org.enso.base.statistics.Moments" +}, +{ + "name":"org.enso.base.statistics.Rank" +}, +{ + "name":"org.enso.base.statistics.Rank$Method" +}, +{ + "name":"org.enso.base.statistics.Rank.Method" +}, +{ + "name":"org.enso.base.statistics.Regression" +}, +{ + "name":"org.enso.base.statistics.Statistic" +}, +{ + "name":"org.enso.base.text.CaseFoldedString" +}, +{ + "name":"org.enso.base.text.GraphemeSpan" +}, +{ + "name":"org.enso.base.text.Replacer_Cache" +}, +{ + "name":"org.enso.base.text.ResultWithWarnings" +}, +{ + "name":"org.enso.base.text.TextFoldingStrategy" +}, +{ + "name":"org.enso.base.text.Utf16Span" +}, +{ + "name":"org.enso.base.time.CustomTemporalUnits" +}, +{ + "name":"org.enso.base.time.Date_Period_Utils" +}, +{ + "name":"org.enso.base.time.Date_Time_Utils" +}, +{ + "name":"org.enso.base.time.Date_Utils" +}, +{ + "name":"org.enso.base.time.EnsoDateTimeFormatter" +}, +{ + "name":"org.enso.base.time.FormatterCache" +}, +{ + "name":"org.enso.base.time.FormatterCacheKey" +}, +{ + "name":"org.enso.base.time.FormatterKind" +}, +{ + "name":"org.enso.base.time.Time_Of_Day_Utils" +}, +{ + "name":"org.enso.base_test_helpers.CallbackHelper", + "methods":[{"name":"runCallbackInt","parameterTypes":["java.util.function.Function","int"] }] +}, +{ + "name":"org.enso.base_test_helpers.FileSystemHelper", + "methods":[{"name":"setWritable","parameterTypes":["java.lang.String","boolean"] }] +}, +{ + "name":"org.enso.base_test_helpers.IntHolder", + "methods":[{"name":"","parameterTypes":["int"] }], + "fields":[{"name":"value"}, {"name":"boxed"}] +}, +{ + "name":"org.enso.base_test_helpers.IntHolderEquals", + "methods":[{"name":"","parameterTypes":["int"] }] +}, +{ + "name":"org.enso.base_test_helpers.Number_Utils", + "methods":[{"name":"floatId","parameterTypes":["java.lang.Double"] }] +}, +{ + "name":"org.enso.base_test_helpers.RangeStream", + "methods":[{"name":"","parameterTypes":["int", "int"] }] +}, +{ + "name":"org.enso.database.DatabaseConnectionDetailsSPI" +}, +{ + "name":"org.enso.database.JDBCProxy" +}, +{ + "name":"org.enso.database.JDBCUtils" +}, +{ + "name":"org.enso.database.dryrun.HiddenTableReferenceCounter" +}, +{ + "name":"org.enso.database.dryrun.OperationSynchronizer" +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.Any", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.Boolean", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.CreateProcessSystemMethodGen", + "methods":[{"name":"makeFunction","parameterTypes":["org.enso.interpreter.EnsoLanguage","boolean"] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.EmptyMapMethodGen", + "methods":[{"name":"makeFunction","parameterTypes":["org.enso.interpreter.EnsoLanguage","boolean"] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.Error", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.ExitSystemMethodGen", + "methods":[{"name":"makeFunction","parameterTypes":["org.enso.interpreter.EnsoLanguage","boolean"] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.Is_normalizedTextMethodGen", + "methods":[{"name":"makeFunction","parameterTypes":["org.enso.interpreter.EnsoLanguage","boolean"] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.Is_unixSystemMethodGen", + "methods":[{"name":"makeFunction","parameterTypes":["org.enso.interpreter.EnsoLanguage","boolean"] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.LengthTextMethodGen", + "methods":[{"name":"makeFunction","parameterTypes":["org.enso.interpreter.EnsoLanguage","boolean"] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.Map", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.NanoTimeSystemMethodGen", + "methods":[{"name":"makeFunction","parameterTypes":["org.enso.interpreter.EnsoLanguage","boolean"] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.Nothing", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.OsSystemMethodGen", + "methods":[{"name":"makeFunction","parameterTypes":["org.enso.interpreter.EnsoLanguage","boolean"] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.Polyglot", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.bool.AndMethodGen", + "methods":[{"name":"makeFunction","parameterTypes":["org.enso.interpreter.EnsoLanguage","boolean"] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.bool.IfThenElseMethodGen", + "methods":[{"name":"makeFunction","parameterTypes":["org.enso.interpreter.EnsoLanguage","boolean"] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.bool.IfThenMethodGen", + "methods":[{"name":"makeFunction","parameterTypes":["org.enso.interpreter.EnsoLanguage","boolean"] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.bool.NotMethodGen", + "methods":[{"name":"makeFunction","parameterTypes":["org.enso.interpreter.EnsoLanguage","boolean"] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.bool.OrMethodGen", + "methods":[{"name":"makeFunction","parameterTypes":["org.enso.interpreter.EnsoLanguage","boolean"] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.date.BetweenBuiltinDurationMethodGen", + "methods":[{"name":"makeFunction","parameterTypes":["org.enso.interpreter.EnsoLanguage","boolean"] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.date.Date", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.date.DateDateTimeMethodGen", + "methods":[{"name":"makeFunction","parameterTypes":["org.enso.interpreter.EnsoLanguage","boolean"] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.date.DateTime", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.date.DayDateMethodGen", + "methods":[{"name":"makeFunction","parameterTypes":["org.enso.interpreter.EnsoLanguage","boolean"] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.date.DayDateTimeMethodGen", + "methods":[{"name":"makeFunction","parameterTypes":["org.enso.interpreter.EnsoLanguage","boolean"] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.date.Duration", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.date.EpochStartDateTimeMethodGen", + "methods":[{"name":"makeFunction","parameterTypes":["org.enso.interpreter.EnsoLanguage","boolean"] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.date.HourDateTimeMethodGen", + "methods":[{"name":"makeFunction","parameterTypes":["org.enso.interpreter.EnsoLanguage","boolean"] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.date.HourTimeOfDayMethodGen", + "methods":[{"name":"makeFunction","parameterTypes":["org.enso.interpreter.EnsoLanguage","boolean"] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.date.HoursDurationMethodGen", + "methods":[{"name":"makeFunction","parameterTypes":["org.enso.interpreter.EnsoLanguage","boolean"] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.date.MicrosecondDateTimeMethodGen", + "methods":[{"name":"makeFunction","parameterTypes":["org.enso.interpreter.EnsoLanguage","boolean"] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.date.MicrosecondTimeOfDayMethodGen", + "methods":[{"name":"makeFunction","parameterTypes":["org.enso.interpreter.EnsoLanguage","boolean"] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.date.MillisecondDateTimeMethodGen", + "methods":[{"name":"makeFunction","parameterTypes":["org.enso.interpreter.EnsoLanguage","boolean"] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.date.MillisecondTimeOfDayMethodGen", + "methods":[{"name":"makeFunction","parameterTypes":["org.enso.interpreter.EnsoLanguage","boolean"] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.date.MillisecondsDurationMethodGen", + "methods":[{"name":"makeFunction","parameterTypes":["org.enso.interpreter.EnsoLanguage","boolean"] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.date.MinusBuiltinDateTimeMethodGen", + "methods":[{"name":"makeFunction","parameterTypes":["org.enso.interpreter.EnsoLanguage","boolean"] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.date.MinusBuiltinDurationMethodGen", + "methods":[{"name":"makeFunction","parameterTypes":["org.enso.interpreter.EnsoLanguage","boolean"] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.date.MinusBuiltinTimeOfDayMethodGen", + "methods":[{"name":"makeFunction","parameterTypes":["org.enso.interpreter.EnsoLanguage","boolean"] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.date.MinuteDateTimeMethodGen", + "methods":[{"name":"makeFunction","parameterTypes":["org.enso.interpreter.EnsoLanguage","boolean"] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.date.MinuteTimeOfDayMethodGen", + "methods":[{"name":"makeFunction","parameterTypes":["org.enso.interpreter.EnsoLanguage","boolean"] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.date.MinutesDurationMethodGen", + "methods":[{"name":"makeFunction","parameterTypes":["org.enso.interpreter.EnsoLanguage","boolean"] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.date.MonthDateMethodGen", + "methods":[{"name":"makeFunction","parameterTypes":["org.enso.interpreter.EnsoLanguage","boolean"] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.date.MonthDateTimeMethodGen", + "methods":[{"name":"makeFunction","parameterTypes":["org.enso.interpreter.EnsoLanguage","boolean"] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.date.NanosecondBuiltinDateTimeMethodGen", + "methods":[{"name":"makeFunction","parameterTypes":["org.enso.interpreter.EnsoLanguage","boolean"] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.date.NanosecondBuiltinTimeOfDayMethodGen", + "methods":[{"name":"makeFunction","parameterTypes":["org.enso.interpreter.EnsoLanguage","boolean"] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.date.NanosecondsDurationMethodGen", + "methods":[{"name":"makeFunction","parameterTypes":["org.enso.interpreter.EnsoLanguage","boolean"] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.date.NewBuiltinDateMethodGen", + "methods":[{"name":"makeFunction","parameterTypes":["org.enso.interpreter.EnsoLanguage","boolean"] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.date.NewBuiltinDateTimeMethodGen", + "methods":[{"name":"makeFunction","parameterTypes":["org.enso.interpreter.EnsoLanguage","boolean"] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.date.NewBuiltinDurationMethodGen", + "methods":[{"name":"makeFunction","parameterTypes":["org.enso.interpreter.EnsoLanguage","boolean"] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.date.NewBuiltinTimeOfDayMethodGen", + "methods":[{"name":"makeFunction","parameterTypes":["org.enso.interpreter.EnsoLanguage","boolean"] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.date.NewBuiltinTimeZoneMethodGen", + "methods":[{"name":"makeFunction","parameterTypes":["org.enso.interpreter.EnsoLanguage","boolean"] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.date.NowDateTimeMethodGen", + "methods":[{"name":"makeFunction","parameterTypes":["org.enso.interpreter.EnsoLanguage","boolean"] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.date.NowTimeOfDayMethodGen", + "methods":[{"name":"makeFunction","parameterTypes":["org.enso.interpreter.EnsoLanguage","boolean"] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.date.OffsetTimeZoneMethodGen", + "methods":[{"name":"makeFunction","parameterTypes":["org.enso.interpreter.EnsoLanguage","boolean"] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.date.ParseBuiltinTimeZoneMethodGen", + "methods":[{"name":"makeFunction","parameterTypes":["org.enso.interpreter.EnsoLanguage","boolean"] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.date.PlusBuiltinDateTimeMethodGen", + "methods":[{"name":"makeFunction","parameterTypes":["org.enso.interpreter.EnsoLanguage","boolean"] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.date.PlusBuiltinDurationMethodGen", + "methods":[{"name":"makeFunction","parameterTypes":["org.enso.interpreter.EnsoLanguage","boolean"] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.date.PlusBuiltinTimeOfDayMethodGen", + "methods":[{"name":"makeFunction","parameterTypes":["org.enso.interpreter.EnsoLanguage","boolean"] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.date.SecondDateTimeMethodGen", + "methods":[{"name":"makeFunction","parameterTypes":["org.enso.interpreter.EnsoLanguage","boolean"] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.date.SecondTimeOfDayMethodGen", + "methods":[{"name":"makeFunction","parameterTypes":["org.enso.interpreter.EnsoLanguage","boolean"] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.date.SecondsDurationMethodGen", + "methods":[{"name":"makeFunction","parameterTypes":["org.enso.interpreter.EnsoLanguage","boolean"] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.date.SystemTimeZoneMethodGen", + "methods":[{"name":"makeFunction","parameterTypes":["org.enso.interpreter.EnsoLanguage","boolean"] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.date.TimeOfDay", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.date.TimeOfDayDateTimeMethodGen", + "methods":[{"name":"makeFunction","parameterTypes":["org.enso.interpreter.EnsoLanguage","boolean"] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.date.TimeZone", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.date.ToSecondsTimeOfDayMethodGen", + "methods":[{"name":"makeFunction","parameterTypes":["org.enso.interpreter.EnsoLanguage","boolean"] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.date.ToTextDateTimeMethodGen", + "methods":[{"name":"makeFunction","parameterTypes":["org.enso.interpreter.EnsoLanguage","boolean"] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.date.ToTextTimeOfDayMethodGen", + "methods":[{"name":"makeFunction","parameterTypes":["org.enso.interpreter.EnsoLanguage","boolean"] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.date.TodayDateMethodGen", + "methods":[{"name":"makeFunction","parameterTypes":["org.enso.interpreter.EnsoLanguage","boolean"] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.date.TotalMillisecondsBuiltinDurationMethodGen", + "methods":[{"name":"makeFunction","parameterTypes":["org.enso.interpreter.EnsoLanguage","boolean"] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.date.YearDateMethodGen", + "methods":[{"name":"makeFunction","parameterTypes":["org.enso.interpreter.EnsoLanguage","boolean"] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.date.YearDateTimeMethodGen", + "methods":[{"name":"makeFunction","parameterTypes":["org.enso.interpreter.EnsoLanguage","boolean"] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.date.ZoneDateTimeMethodGen", + "methods":[{"name":"makeFunction","parameterTypes":["org.enso.interpreter.EnsoLanguage","boolean"] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.date.ZoneIdTimeZoneMethodGen", + "methods":[{"name":"makeFunction","parameterTypes":["org.enso.interpreter.EnsoLanguage","boolean"] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.debug.Debug", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.error.ArithmeticError", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.error.ArityError", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.error.AssertionError", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.error.AttachWithStacktraceWarningMethodGen", + "methods":[{"name":"makeFunction","parameterTypes":["org.enso.interpreter.EnsoLanguage","boolean"] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.error.CatchAnyMethodGen", + "methods":[{"name":"makeFunction","parameterTypes":["org.enso.interpreter.EnsoLanguage","boolean"] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.error.CatchErrorMethodGen", + "methods":[{"name":"makeFunction","parameterTypes":["org.enso.interpreter.EnsoLanguage","boolean"] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.error.CatchPanicMethodGen", + "methods":[{"name":"makeFunction","parameterTypes":["org.enso.interpreter.EnsoLanguage","boolean"] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.error.CaughtPanic", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.error.CaughtPanicConvertToDataflowErrorMethodGen", + "methods":[{"name":"makeFunction","parameterTypes":["org.enso.interpreter.EnsoLanguage","boolean"] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.error.CompileError", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.error.CreateWarningMethodGen", + "methods":[{"name":"makeFunction","parameterTypes":["org.enso.interpreter.EnsoLanguage","boolean"] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.error.ErrorToTextMethodGen", + "methods":[{"name":"makeFunction","parameterTypes":["org.enso.interpreter.EnsoLanguage","boolean"] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.error.ForbiddenOperation", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.error.GetAllArrayWarningMethodGen", + "methods":[{"name":"makeFunction","parameterTypes":["org.enso.interpreter.EnsoLanguage","boolean"] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.error.GetAllVectorWarningMethodGen", + "methods":[{"name":"makeFunction","parameterTypes":["org.enso.interpreter.EnsoLanguage","boolean"] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.error.GetAttachedStackTraceMethodGen", + "methods":[{"name":"makeFunction","parameterTypes":["org.enso.interpreter.EnsoLanguage","boolean"] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.error.GetReassignmentsWarningMethodGen", + "methods":[{"name":"makeFunction","parameterTypes":["org.enso.interpreter.EnsoLanguage","boolean"] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.error.IncomparableValues", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.error.IndexOutOfBounds", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.error.InexhaustivePatternMatch", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.error.InvalidArrayIndex", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.error.InvalidConversionTarget", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.error.LimitReachedWarningMethodGen", + "methods":[{"name":"makeFunction","parameterTypes":["org.enso.interpreter.EnsoLanguage","boolean"] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.error.MapError", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.error.ModuleDoesNotExist", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.error.ModuleNotInPackageError", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.error.NoConversionCurrying", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.error.NoSuchConversion", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.error.NoSuchField", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.error.NoSuchMethod", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.error.NotInvokable", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.error.NumberParseError", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.error.OriginWarningMethodGen", + "methods":[{"name":"makeFunction","parameterTypes":["org.enso.interpreter.EnsoLanguage","boolean"] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.error.Panic", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.error.PrivateAccess", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.error.SetArrayWarningMethodGen", + "methods":[{"name":"makeFunction","parameterTypes":["org.enso.interpreter.EnsoLanguage","boolean"] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.error.SyntaxError", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.error.ThrowErrorMethodGen", + "methods":[{"name":"makeFunction","parameterTypes":["org.enso.interpreter.EnsoLanguage","boolean"] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.error.ThrowPanicMethodGen", + "methods":[{"name":"makeFunction","parameterTypes":["org.enso.interpreter.EnsoLanguage","boolean"] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.error.TypeError", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.error.Unimplemented", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.error.UninitializedState", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.error.UnsupportedArgumentTypes", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.error.ValueWarningMethodGen", + "methods":[{"name":"makeFunction","parameterTypes":["org.enso.interpreter.EnsoLanguage","boolean"] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.error.Warning", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.error.displaytext.InvalidConversionTargetToDisplayTextMethodGen", + "methods":[{"name":"makeFunction","parameterTypes":["org.enso.interpreter.EnsoLanguage","boolean"] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.function.ApplicationOperatorMethodGen", + "methods":[{"name":"makeFunction","parameterTypes":["org.enso.interpreter.EnsoLanguage","boolean"] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.function.Function", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.immutable.ArrayLikeHelpers", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.immutable.AtVectorMethodGen", + "methods":[{"name":"makeFunction","parameterTypes":["org.enso.interpreter.EnsoLanguage","boolean"] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.immutable.FlattenVectorMethodGen", + "methods":[{"name":"makeFunction","parameterTypes":["org.enso.interpreter.EnsoLanguage","boolean"] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.immutable.FromArrayBuiltinVectorMethodGen", + "methods":[{"name":"makeFunction","parameterTypes":["org.enso.interpreter.EnsoLanguage","boolean"] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.immutable.FromPolyglotArrayBuiltinVectorMethodGen", + "methods":[{"name":"makeFunction","parameterTypes":["org.enso.interpreter.EnsoLanguage","boolean"] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.immutable.InsertBuiltinVectorMethodGen", + "methods":[{"name":"makeFunction","parameterTypes":["org.enso.interpreter.EnsoLanguage","boolean"] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.immutable.LengthVectorMethodGen", + "methods":[{"name":"makeFunction","parameterTypes":["org.enso.interpreter.EnsoLanguage","boolean"] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.immutable.NewArrayProxyBuiltinArrayLikeHelpersMethodGen", + "methods":[{"name":"makeFunction","parameterTypes":["org.enso.interpreter.EnsoLanguage","boolean"] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.immutable.NewVectorBuilderArrayLikeHelpersMethodGen", + "methods":[{"name":"makeFunction","parameterTypes":["org.enso.interpreter.EnsoLanguage","boolean"] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.immutable.RemoveAtVectorMethodGen", + "methods":[{"name":"makeFunction","parameterTypes":["org.enso.interpreter.EnsoLanguage","boolean"] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.immutable.SliceArrayVectorMethodGen", + "methods":[{"name":"makeFunction","parameterTypes":["org.enso.interpreter.EnsoLanguage","boolean"] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.immutable.Vector", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.immutable.VectorFromFunctionArrayLikeHelpersMethodGen", + "methods":[{"name":"makeFunction","parameterTypes":["org.enso.interpreter.EnsoLanguage","boolean"] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.immutable.VectorToArrayArrayLikeHelpersMethodGen", + "methods":[{"name":"makeFunction","parameterTypes":["org.enso.interpreter.EnsoLanguage","boolean"] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.interop.generic.ExecuteMethodGen", + "methods":[{"name":"makeFunction","parameterTypes":["org.enso.interpreter.EnsoLanguage","boolean"] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.interop.generic.GetExecutableNameMethodGen", + "methods":[{"name":"makeFunction","parameterTypes":["org.enso.interpreter.EnsoLanguage","boolean"] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.interop.generic.GetMemberMethodGen", + "methods":[{"name":"makeFunction","parameterTypes":["org.enso.interpreter.EnsoLanguage","boolean"] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.interop.generic.GetMembersMethodGen", + "methods":[{"name":"makeFunction","parameterTypes":["org.enso.interpreter.EnsoLanguage","boolean"] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.interop.generic.GetSourceLocationMethodGen", + "methods":[{"name":"makeFunction","parameterTypes":["org.enso.interpreter.EnsoLanguage","boolean"] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.interop.generic.HasSourceLocationMethodGen", + "methods":[{"name":"makeFunction","parameterTypes":["org.enso.interpreter.EnsoLanguage","boolean"] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.interop.generic.InstantiateMethodGen", + "methods":[{"name":"makeFunction","parameterTypes":["org.enso.interpreter.EnsoLanguage","boolean"] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.interop.generic.InvokeMethodGen", + "methods":[{"name":"makeFunction","parameterTypes":["org.enso.interpreter.EnsoLanguage","boolean"] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.interop.generic.IsLanguageInstalledMethodGen", + "methods":[{"name":"makeFunction","parameterTypes":["org.enso.interpreter.EnsoLanguage","boolean"] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.io.AbsoluteFileMethodGen", + "methods":[{"name":"makeFunction","parameterTypes":["org.enso.interpreter.EnsoLanguage","boolean"] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.io.CopyBuiltinFileMethodGen", + "methods":[{"name":"makeFunction","parameterTypes":["org.enso.interpreter.EnsoLanguage","boolean"] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.io.CreateDirectoryBuiltinFileMethodGen", + "methods":[{"name":"makeFunction","parameterTypes":["org.enso.interpreter.EnsoLanguage","boolean"] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.io.DeleteBuiltinFileMethodGen", + "methods":[{"name":"makeFunction","parameterTypes":["org.enso.interpreter.EnsoLanguage","boolean"] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.io.ExistsFileMethodGen", + "methods":[{"name":"makeFunction","parameterTypes":["org.enso.interpreter.EnsoLanguage","boolean"] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.io.File", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.io.GetCwdFileMethodGen", + "methods":[{"name":"makeFunction","parameterTypes":["org.enso.interpreter.EnsoLanguage","boolean"] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.io.GetFileFileMethodGen", + "methods":[{"name":"makeFunction","parameterTypes":["org.enso.interpreter.EnsoLanguage","boolean"] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.io.InputStreamBuiltinFileMethodGen", + "methods":[{"name":"makeFunction","parameterTypes":["org.enso.interpreter.EnsoLanguage","boolean"] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.io.IsDirectoryFileMethodGen", + "methods":[{"name":"makeFunction","parameterTypes":["org.enso.interpreter.EnsoLanguage","boolean"] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.io.IsWritableFileMethodGen", + "methods":[{"name":"makeFunction","parameterTypes":["org.enso.interpreter.EnsoLanguage","boolean"] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.io.ListImmediateChildrenArrayFileMethodGen", + "methods":[{"name":"makeFunction","parameterTypes":["org.enso.interpreter.EnsoLanguage","boolean"] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.io.MoveBuiltinFileMethodGen", + "methods":[{"name":"makeFunction","parameterTypes":["org.enso.interpreter.EnsoLanguage","boolean"] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.io.NameFileMethodGen", + "methods":[{"name":"makeFunction","parameterTypes":["org.enso.interpreter.EnsoLanguage","boolean"] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.io.NormalizeFileMethodGen", + "methods":[{"name":"makeFunction","parameterTypes":["org.enso.interpreter.EnsoLanguage","boolean"] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.io.OutputStreamBuiltinFileMethodGen", + "methods":[{"name":"makeFunction","parameterTypes":["org.enso.interpreter.EnsoLanguage","boolean"] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.io.ParentFileMethodGen", + "methods":[{"name":"makeFunction","parameterTypes":["org.enso.interpreter.EnsoLanguage","boolean"] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.io.PathFileMethodGen", + "methods":[{"name":"makeFunction","parameterTypes":["org.enso.interpreter.EnsoLanguage","boolean"] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.io.PosixPermissionsBuiltinFileMethodGen", + "methods":[{"name":"makeFunction","parameterTypes":["org.enso.interpreter.EnsoLanguage","boolean"] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.io.PrintlnMethodGen", + "methods":[{"name":"makeFunction","parameterTypes":["org.enso.interpreter.EnsoLanguage","boolean"] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.io.ReadLastBytesBuiltinFileMethodGen", + "methods":[{"name":"makeFunction","parameterTypes":["org.enso.interpreter.EnsoLanguage","boolean"] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.io.RelativizeFileMethodGen", + "methods":[{"name":"makeFunction","parameterTypes":["org.enso.interpreter.EnsoLanguage","boolean"] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.io.ResolveFileMethodGen", + "methods":[{"name":"makeFunction","parameterTypes":["org.enso.interpreter.EnsoLanguage","boolean"] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.io.SizeBuiltinFileMethodGen", + "methods":[{"name":"makeFunction","parameterTypes":["org.enso.interpreter.EnsoLanguage","boolean"] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.io.StartsWithFileMethodGen", + "methods":[{"name":"makeFunction","parameterTypes":["org.enso.interpreter.EnsoLanguage","boolean"] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.meta.AtomWithAHoleMethodGen", + "methods":[{"name":"makeFunction","parameterTypes":["org.enso.interpreter.EnsoLanguage","boolean"] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.meta.CreateUnresolvedSymbolMethodGen", + "methods":[{"name":"makeFunction","parameterTypes":["org.enso.interpreter.EnsoLanguage","boolean"] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.meta.EnsoProjectMethodGen", + "methods":[{"name":"makeFunction","parameterTypes":["org.enso.interpreter.EnsoLanguage","boolean"] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.meta.EqualsMethodGen", + "methods":[{"name":"makeFunction","parameterTypes":["org.enso.interpreter.EnsoLanguage","boolean"] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.meta.FindTypeByFqnMethodGen", + "methods":[{"name":"makeFunction","parameterTypes":["org.enso.interpreter.EnsoLanguage","boolean"] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.meta.GetAnnotationMethodGen", + "methods":[{"name":"makeFunction","parameterTypes":["org.enso.interpreter.EnsoLanguage","boolean"] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.meta.GetAtomConstructorMethodGen", + "methods":[{"name":"makeFunction","parameterTypes":["org.enso.interpreter.EnsoLanguage","boolean"] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.meta.GetAtomFieldsMethodGen", + "methods":[{"name":"makeFunction","parameterTypes":["org.enso.interpreter.EnsoLanguage","boolean"] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.meta.GetConstructorDeclaringTypeMethodGen", + "methods":[{"name":"makeFunction","parameterTypes":["org.enso.interpreter.EnsoLanguage","boolean"] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.meta.GetConstructorFieldNamesMethodGen", + "methods":[{"name":"makeFunction","parameterTypes":["org.enso.interpreter.EnsoLanguage","boolean"] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.meta.GetConstructorNameMethodGen", + "methods":[{"name":"makeFunction","parameterTypes":["org.enso.interpreter.EnsoLanguage","boolean"] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.meta.GetPolyglotLanguageMethodGen", + "methods":[{"name":"makeFunction","parameterTypes":["org.enso.interpreter.EnsoLanguage","boolean"] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.meta.GetQualifiedTypeNameMethodGen", + "methods":[{"name":"makeFunction","parameterTypes":["org.enso.interpreter.EnsoLanguage","boolean"] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.meta.GetShortTypeNameMethodGen", + "methods":[{"name":"makeFunction","parameterTypes":["org.enso.interpreter.EnsoLanguage","boolean"] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.meta.GetSimpleTypeNameMethodGen", + "methods":[{"name":"makeFunction","parameterTypes":["org.enso.interpreter.EnsoLanguage","boolean"] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.meta.GetSourceLocationMethodGen", + "methods":[{"name":"makeFunction","parameterTypes":["org.enso.interpreter.EnsoLanguage","boolean"] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.meta.GetTypeConstructorsMethodGen", + "methods":[{"name":"makeFunction","parameterTypes":["org.enso.interpreter.EnsoLanguage","boolean"] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.meta.GetTypeMethodsMethodGen", + "methods":[{"name":"makeFunction","parameterTypes":["org.enso.interpreter.EnsoLanguage","boolean"] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.meta.GetUnresolvedSymbolNameMethodGen", + "methods":[{"name":"makeFunction","parameterTypes":["org.enso.interpreter.EnsoLanguage","boolean"] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.meta.GetUnresolvedSymbolScopeMethodGen", + "methods":[{"name":"makeFunction","parameterTypes":["org.enso.interpreter.EnsoLanguage","boolean"] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.meta.HashCodeMethodGen", + "methods":[{"name":"makeFunction","parameterTypes":["org.enso.interpreter.EnsoLanguage","boolean"] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.meta.InstrumentorBuiltinMethodGen", + "methods":[{"name":"makeFunction","parameterTypes":["org.enso.interpreter.EnsoLanguage","boolean"] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.meta.IsAMethodGen", + "methods":[{"name":"makeFunction","parameterTypes":["org.enso.interpreter.EnsoLanguage","boolean"] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.meta.IsAtomConstructorMethodGen", + "methods":[{"name":"makeFunction","parameterTypes":["org.enso.interpreter.EnsoLanguage","boolean"] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.meta.IsAtomMethodGen", + "methods":[{"name":"makeFunction","parameterTypes":["org.enso.interpreter.EnsoLanguage","boolean"] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.meta.IsErrorMethodGen", + "methods":[{"name":"makeFunction","parameterTypes":["org.enso.interpreter.EnsoLanguage","boolean"] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.meta.IsPolyglotMethodGen", + "methods":[{"name":"makeFunction","parameterTypes":["org.enso.interpreter.EnsoLanguage","boolean"] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.meta.IsSameObjectMethodGen", + "methods":[{"name":"makeFunction","parameterTypes":["org.enso.interpreter.EnsoLanguage","boolean"] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.meta.IsTypeMethodGen", + "methods":[{"name":"makeFunction","parameterTypes":["org.enso.interpreter.EnsoLanguage","boolean"] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.meta.IsUnresolvedSymbolMethodGen", + "methods":[{"name":"makeFunction","parameterTypes":["org.enso.interpreter.EnsoLanguage","boolean"] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.meta.NewAtomInstanceMethodGen", + "methods":[{"name":"makeFunction","parameterTypes":["org.enso.interpreter.EnsoLanguage","boolean"] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.meta.ProjectDescription", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.meta.TypeOfBuiltinMethodGen", + "methods":[{"name":"makeFunction","parameterTypes":["org.enso.interpreter.EnsoLanguage","boolean"] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.mutable.Array", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.mutable.GetRefMethodGen", + "methods":[{"name":"makeFunction","parameterTypes":["org.enso.interpreter.EnsoLanguage","boolean"] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.mutable.NewRefMethodGen", + "methods":[{"name":"makeFunction","parameterTypes":["org.enso.interpreter.EnsoLanguage","boolean"] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.mutable.PutRefMethodGen", + "methods":[{"name":"makeFunction","parameterTypes":["org.enso.interpreter.EnsoLanguage","boolean"] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.mutable.Ref", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.number.Float", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.number.Integer", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.number.Number", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.number.decimal.AbsMethodGen", + "methods":[{"name":"makeFunction","parameterTypes":["org.enso.interpreter.EnsoLanguage","boolean"] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.number.decimal.AddMethodGen", + "methods":[{"name":"makeFunction","parameterTypes":["org.enso.interpreter.EnsoLanguage","boolean"] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.number.decimal.CeilMethodGen", + "methods":[{"name":"makeFunction","parameterTypes":["org.enso.interpreter.EnsoLanguage","boolean"] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.number.decimal.DivideMethodGen", + "methods":[{"name":"makeFunction","parameterTypes":["org.enso.interpreter.EnsoLanguage","boolean"] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.number.decimal.FloorMethodGen", + "methods":[{"name":"makeFunction","parameterTypes":["org.enso.interpreter.EnsoLanguage","boolean"] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.number.decimal.GreaterMethodGen", + "methods":[{"name":"makeFunction","parameterTypes":["org.enso.interpreter.EnsoLanguage","boolean"] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.number.decimal.GreaterOrEqualMethodGen", + "methods":[{"name":"makeFunction","parameterTypes":["org.enso.interpreter.EnsoLanguage","boolean"] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.number.decimal.LessMethodGen", + "methods":[{"name":"makeFunction","parameterTypes":["org.enso.interpreter.EnsoLanguage","boolean"] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.number.decimal.LessOrEqualMethodGen", + "methods":[{"name":"makeFunction","parameterTypes":["org.enso.interpreter.EnsoLanguage","boolean"] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.number.decimal.ModMethodGen", + "methods":[{"name":"makeFunction","parameterTypes":["org.enso.interpreter.EnsoLanguage","boolean"] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.number.decimal.MultiplyMethodGen", + "methods":[{"name":"makeFunction","parameterTypes":["org.enso.interpreter.EnsoLanguage","boolean"] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.number.decimal.NegateMethodGen", + "methods":[{"name":"makeFunction","parameterTypes":["org.enso.interpreter.EnsoLanguage","boolean"] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.number.decimal.PowMethodGen", + "methods":[{"name":"makeFunction","parameterTypes":["org.enso.interpreter.EnsoLanguage","boolean"] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.number.decimal.RoundMethodGen", + "methods":[{"name":"makeFunction","parameterTypes":["org.enso.interpreter.EnsoLanguage","boolean"] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.number.decimal.SubtractMethodGen", + "methods":[{"name":"makeFunction","parameterTypes":["org.enso.interpreter.EnsoLanguage","boolean"] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.number.decimal.TruncateMethodGen", + "methods":[{"name":"makeFunction","parameterTypes":["org.enso.interpreter.EnsoLanguage","boolean"] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.number.integer.AbsMethodGen", + "methods":[{"name":"makeFunction","parameterTypes":["org.enso.interpreter.EnsoLanguage","boolean"] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.number.integer.AddMethodGen", + "methods":[{"name":"makeFunction","parameterTypes":["org.enso.interpreter.EnsoLanguage","boolean"] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.number.integer.BitAndMethodGen", + "methods":[{"name":"makeFunction","parameterTypes":["org.enso.interpreter.EnsoLanguage","boolean"] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.number.integer.BitNotMethodGen", + "methods":[{"name":"makeFunction","parameterTypes":["org.enso.interpreter.EnsoLanguage","boolean"] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.number.integer.BitOrMethodGen", + "methods":[{"name":"makeFunction","parameterTypes":["org.enso.interpreter.EnsoLanguage","boolean"] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.number.integer.BitShiftMethodGen", + "methods":[{"name":"makeFunction","parameterTypes":["org.enso.interpreter.EnsoLanguage","boolean"] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.number.integer.BitShiftRightMethodGen", + "methods":[{"name":"makeFunction","parameterTypes":["org.enso.interpreter.EnsoLanguage","boolean"] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.number.integer.BitXorMethodGen", + "methods":[{"name":"makeFunction","parameterTypes":["org.enso.interpreter.EnsoLanguage","boolean"] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.number.integer.CeilMethodGen", + "methods":[{"name":"makeFunction","parameterTypes":["org.enso.interpreter.EnsoLanguage","boolean"] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.number.integer.DivMethodGen", + "methods":[{"name":"makeFunction","parameterTypes":["org.enso.interpreter.EnsoLanguage","boolean"] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.number.integer.DivideMethodGen", + "methods":[{"name":"makeFunction","parameterTypes":["org.enso.interpreter.EnsoLanguage","boolean"] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.number.integer.FloorMethodGen", + "methods":[{"name":"makeFunction","parameterTypes":["org.enso.interpreter.EnsoLanguage","boolean"] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.number.integer.GreaterMethodGen", + "methods":[{"name":"makeFunction","parameterTypes":["org.enso.interpreter.EnsoLanguage","boolean"] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.number.integer.GreaterOrEqualMethodGen", + "methods":[{"name":"makeFunction","parameterTypes":["org.enso.interpreter.EnsoLanguage","boolean"] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.number.integer.LessMethodGen", + "methods":[{"name":"makeFunction","parameterTypes":["org.enso.interpreter.EnsoLanguage","boolean"] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.number.integer.LessOrEqualMethodGen", + "methods":[{"name":"makeFunction","parameterTypes":["org.enso.interpreter.EnsoLanguage","boolean"] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.number.integer.ModMethodGen", + "methods":[{"name":"makeFunction","parameterTypes":["org.enso.interpreter.EnsoLanguage","boolean"] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.number.integer.MultiplyMethodGen", + "methods":[{"name":"makeFunction","parameterTypes":["org.enso.interpreter.EnsoLanguage","boolean"] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.number.integer.NegateMethodGen", + "methods":[{"name":"makeFunction","parameterTypes":["org.enso.interpreter.EnsoLanguage","boolean"] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.number.integer.ParseIntegerMethodGen", + "methods":[{"name":"makeFunction","parameterTypes":["org.enso.interpreter.EnsoLanguage","boolean"] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.number.integer.PowMethodGen", + "methods":[{"name":"makeFunction","parameterTypes":["org.enso.interpreter.EnsoLanguage","boolean"] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.number.integer.RoundMethodGen", + "methods":[{"name":"makeFunction","parameterTypes":["org.enso.interpreter.EnsoLanguage","boolean"] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.number.integer.SubtractMethodGen", + "methods":[{"name":"makeFunction","parameterTypes":["org.enso.interpreter.EnsoLanguage","boolean"] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.number.integer.ToFloatMethodGen", + "methods":[{"name":"makeFunction","parameterTypes":["org.enso.interpreter.EnsoLanguage","boolean"] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.ordering.Comparable", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.ordering.DefaultComparator", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.ordering.LessThanMethodGen", + "methods":[{"name":"makeFunction","parameterTypes":["org.enso.interpreter.EnsoLanguage","boolean"] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.ordering.Ordering", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.ordering.SortArrayMethodGen", + "methods":[{"name":"makeFunction","parameterTypes":["org.enso.interpreter.EnsoLanguage","boolean"] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.ordering.SortVectorMethodGen", + "methods":[{"name":"makeFunction","parameterTypes":["org.enso.interpreter.EnsoLanguage","boolean"] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.resource.BracketMethodGen", + "methods":[{"name":"makeFunction","parameterTypes":["org.enso.interpreter.EnsoLanguage","boolean"] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.resource.FinalizeManagedResourceMethodGen", + "methods":[{"name":"makeFunction","parameterTypes":["org.enso.interpreter.EnsoLanguage","boolean"] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.resource.ManagedResource", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.resource.RegisterManagedResourceMethodGen", + "methods":[{"name":"makeFunction","parameterTypes":["org.enso.interpreter.EnsoLanguage","boolean"] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.resource.TakeManagedResourceMethodGen", + "methods":[{"name":"makeFunction","parameterTypes":["org.enso.interpreter.EnsoLanguage","boolean"] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.resource.WithMethodGen", + "methods":[{"name":"makeFunction","parameterTypes":["org.enso.interpreter.EnsoLanguage","boolean"] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.runtime.Context", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.runtime.ContextIsEnabledMethodGen", + "methods":[{"name":"makeFunction","parameterTypes":["org.enso.interpreter.EnsoLanguage","boolean"] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.runtime.GCMethodGen", + "methods":[{"name":"makeFunction","parameterTypes":["org.enso.interpreter.EnsoLanguage","boolean"] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.runtime.GetStackTraceMethodGen", + "methods":[{"name":"makeFunction","parameterTypes":["org.enso.interpreter.EnsoLanguage","boolean"] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.runtime.IsAssertionEnabledMethodGen", + "methods":[{"name":"makeFunction","parameterTypes":["org.enso.interpreter.EnsoLanguage","boolean"] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.runtime.NoInlineMethodGen", + "methods":[{"name":"makeFunction","parameterTypes":["org.enso.interpreter.EnsoLanguage","boolean"] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.runtime.NoInlineWithArgMethodGen", + "methods":[{"name":"makeFunction","parameterTypes":["org.enso.interpreter.EnsoLanguage","boolean"] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.runtime.RuntimeCurrentExecutionEnvironmentMethodGen", + "methods":[{"name":"makeFunction","parameterTypes":["org.enso.interpreter.EnsoLanguage","boolean"] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.runtime.RuntimeWithDisabledContextMethodGen", + "methods":[{"name":"makeFunction","parameterTypes":["org.enso.interpreter.EnsoLanguage","boolean"] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.runtime.RuntimeWithEnabledContextMethodGen", + "methods":[{"name":"makeFunction","parameterTypes":["org.enso.interpreter.EnsoLanguage","boolean"] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.state.GetStateMethodGen", + "methods":[{"name":"makeFunction","parameterTypes":["org.enso.interpreter.EnsoLanguage","boolean"] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.state.PutStateMethodGen", + "methods":[{"name":"makeFunction","parameterTypes":["org.enso.interpreter.EnsoLanguage","boolean"] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.state.RunStateMethodGen", + "methods":[{"name":"makeFunction","parameterTypes":["org.enso.interpreter.EnsoLanguage","boolean"] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.system.SystemProcessResult", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.text.AnyPrettyMethodGen", + "methods":[{"name":"makeFunction","parameterTypes":["org.enso.interpreter.EnsoLanguage","boolean"] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.text.AnyToDisplayTextMethodGen", + "methods":[{"name":"makeFunction","parameterTypes":["org.enso.interpreter.EnsoLanguage","boolean"] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.text.AnyToTextMethodGen", + "methods":[{"name":"makeFunction","parameterTypes":["org.enso.interpreter.EnsoLanguage","boolean"] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.text.ConcatMethodGen", + "methods":[{"name":"makeFunction","parameterTypes":["org.enso.interpreter.EnsoLanguage","boolean"] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.text.PrimTextHelper", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.text.RegexCompileMethodGen", + "methods":[{"name":"makeFunction","parameterTypes":["org.enso.interpreter.EnsoLanguage","boolean"] }] +}, +{ + "name":"org.enso.interpreter.node.expression.builtin.text.Text", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.enso.interpreter.runtime.data.atom.StructsLibrary" +}, +{ + "name":"org.enso.interpreter.runtime.data.hash.HashMapContainsKeyMethodGen", + "methods":[{"name":"makeFunction","parameterTypes":["org.enso.interpreter.EnsoLanguage","boolean"] }] +}, +{ + "name":"org.enso.interpreter.runtime.data.hash.HashMapGetMethodGen", + "methods":[{"name":"makeFunction","parameterTypes":["org.enso.interpreter.EnsoLanguage","boolean"] }] +}, +{ + "name":"org.enso.interpreter.runtime.data.hash.HashMapInsertMethodGen", + "methods":[{"name":"makeFunction","parameterTypes":["org.enso.interpreter.EnsoLanguage","boolean"] }] +}, +{ + "name":"org.enso.interpreter.runtime.data.hash.HashMapRemoveMethodGen", + "methods":[{"name":"makeFunction","parameterTypes":["org.enso.interpreter.EnsoLanguage","boolean"] }] +}, +{ + "name":"org.enso.interpreter.runtime.data.hash.HashMapSizeMethodGen", + "methods":[{"name":"makeFunction","parameterTypes":["org.enso.interpreter.EnsoLanguage","boolean"] }] +}, +{ + "name":"org.enso.interpreter.runtime.data.hash.HashMapToTextMethodGen", + "methods":[{"name":"makeFunction","parameterTypes":["org.enso.interpreter.EnsoLanguage","boolean"] }] +}, +{ + "name":"org.enso.interpreter.runtime.data.hash.HashMapToVectorMethodGen", + "methods":[{"name":"makeFunction","parameterTypes":["org.enso.interpreter.EnsoLanguage","boolean"] }] +}, +{ + "name":"org.enso.interpreter.runtime.error.WarningsLibrary" +}, +{ + "name":"org.enso.interpreter.runtime.library.dispatch.TypesLibrary" +}, +{ + "name":"org.enso.polyglot.common_utils.Core_Math_Utils" +}, +{ + "name":"org.enso.runner.Main", + "methods":[{"name":"main","parameterTypes":["java.lang.String[]"] }] +}, +{ + "name":"org.enso.table.aggregations.Aggregator" +}, +{ + "name":"org.enso.table.aggregations.Concatenate" +}, +{ + "name":"org.enso.table.aggregations.Count" +}, +{ + "name":"org.enso.table.aggregations.CountDistinct" +}, +{ + "name":"org.enso.table.aggregations.CountEmpty" +}, +{ + "name":"org.enso.table.aggregations.CountNothing" +}, +{ + "name":"org.enso.table.aggregations.First" +}, +{ + "name":"org.enso.table.aggregations.GroupBy" +}, +{ + "name":"org.enso.table.aggregations.Last" +}, +{ + "name":"org.enso.table.aggregations.Mean" +}, +{ + "name":"org.enso.table.aggregations.MinOrMax" +}, +{ + "name":"org.enso.table.aggregations.Mode" +}, +{ + "name":"org.enso.table.aggregations.Percentile" +}, +{ + "name":"org.enso.table.aggregations.ShortestOrLongest" +}, +{ + "name":"org.enso.table.aggregations.StandardDeviation" +}, +{ + "name":"org.enso.table.aggregations.Sum" +}, +{ + "name":"org.enso.table.data.column.builder.BigIntegerBuilder" +}, +{ + "name":"org.enso.table.data.column.builder.BoolBuilder" +}, +{ + "name":"org.enso.table.data.column.builder.Builder" +}, +{ + "name":"org.enso.table.data.column.builder.DateBuilder" +}, +{ + "name":"org.enso.table.data.column.builder.DateTimeBuilder" +}, +{ + "name":"org.enso.table.data.column.builder.InferredBuilder" +}, +{ + "name":"org.enso.table.data.column.builder.LossOfBigDecimalPrecision" +}, +{ + "name":"org.enso.table.data.column.builder.LossOfIntegerPrecision" +}, +{ + "name":"org.enso.table.data.column.builder.NumericBuilder" +}, +{ + "name":"org.enso.table.data.column.builder.StringBuilder" +}, +{ + "name":"org.enso.table.data.column.builder.TimeOfDayBuilder" +}, +{ + "name":"org.enso.table.data.column.operation.CountNothing" +}, +{ + "name":"org.enso.table.data.column.operation.UnaryOperation" +}, +{ + "name":"org.enso.table.data.column.operation.cast.CastProblemAggregator" +}, +{ + "name":"org.enso.table.data.column.operation.cast.ConversionFailure" +}, +{ + "name":"org.enso.table.data.column.operation.cast.ConversionFailureType" +}, +{ + "name":"org.enso.table.data.column.operation.map.MapOperationProblemAggregator" +}, +{ + "name":"org.enso.table.data.column.operation.unary.DatePartOperation" +}, +{ + "name":"org.enso.table.data.column.operation.unary.IsEmptyOperation" +}, +{ + "name":"org.enso.table.data.column.operation.unary.IsInfiniteOperation" +}, +{ + "name":"org.enso.table.data.column.operation.unary.IsNaNOperation" +}, +{ + "name":"org.enso.table.data.column.operation.unary.IsNothingOperation" +}, +{ + "name":"org.enso.table.data.column.operation.unary.NotOperation" +}, +{ + "name":"org.enso.table.data.column.operation.unary.TextLengthOperation" +}, +{ + "name":"org.enso.table.data.column.operation.unary.TruncatedTimePartOperation" +}, +{ + "name":"org.enso.table.data.column.operation.unary.UnaryRoundOperation" +}, +{ + "name":"org.enso.table.data.column.storage.Storage" +}, +{ + "name":"org.enso.table.data.column.storage.numeric.LongRangeStorage" +}, +{ + "name":"org.enso.table.data.column.storage.type.AnyObjectType" +}, +{ + "name":"org.enso.table.data.column.storage.type.BigDecimalType" +}, +{ + "name":"org.enso.table.data.column.storage.type.BigIntegerType" +}, +{ + "name":"org.enso.table.data.column.storage.type.Bits" +}, +{ + "name":"org.enso.table.data.column.storage.type.BooleanType" +}, +{ + "name":"org.enso.table.data.column.storage.type.DateTimeType" +}, +{ + "name":"org.enso.table.data.column.storage.type.DateType" +}, +{ + "name":"org.enso.table.data.column.storage.type.FloatType" +}, +{ + "name":"org.enso.table.data.column.storage.type.IntegerType" +}, +{ + "name":"org.enso.table.data.column.storage.type.StorageType" +}, +{ + "name":"org.enso.table.data.column.storage.type.TextType" +}, +{ + "name":"org.enso.table.data.column.storage.type.TimeOfDayType" +}, +{ + "name":"org.enso.table.data.index.MultiValueIndex" +}, +{ + "name":"org.enso.table.data.mask.OrderMask" +}, +{ + "name":"org.enso.table.data.table.Column" +}, +{ + "name":"org.enso.table.data.table.Table" +}, +{ + "name":"org.enso.table.data.table.TableToXml" +}, +{ + "name":"org.enso.table.data.table.join.JoinKind" +}, +{ + "name":"org.enso.table.data.table.join.conditions.Between" +}, +{ + "name":"org.enso.table.data.table.join.conditions.Equals" +}, +{ + "name":"org.enso.table.data.table.join.conditions.EqualsIgnoreCase" +}, +{ + "name":"org.enso.table.data.table.join.lookup.LookupColumnDescription" +}, +{ + "name":"org.enso.table.data.table.join.lookup.LookupJoin" +}, +{ + "name":"org.enso.table.data.table.problems.ArithmeticError" +}, +{ + "name":"org.enso.table.data.table.problems.ArithmeticOverflow" +}, +{ + "name":"org.enso.table.data.table.problems.FloatingPointGrouping" +}, +{ + "name":"org.enso.table.data.table.problems.IgnoredNaN" +}, +{ + "name":"org.enso.table.data.table.problems.IgnoredNothing" +}, +{ + "name":"org.enso.table.data.table.problems.IllegalArgumentError" +}, +{ + "name":"org.enso.table.data.table.problems.InvalidAggregation" +}, +{ + "name":"org.enso.table.data.table.problems.UnquotedCharactersInOutput" +}, +{ + "name":"org.enso.table.data.table.problems.UnquotedDelimiter" +}, +{ + "name":"org.enso.table.error.ColumnCountMismatchException" +}, +{ + "name":"org.enso.table.error.ColumnNameMismatchException" +}, +{ + "name":"org.enso.table.error.EmptyFileException" +}, +{ + "name":"org.enso.table.error.EmptySheetException" +}, +{ + "name":"org.enso.table.error.ExistingDataException" +}, +{ + "name":"org.enso.table.error.InvalidColumnNameException" +}, +{ + "name":"org.enso.table.error.InvalidLocationException" +}, +{ + "name":"org.enso.table.error.NonUniqueLookupKey" +}, +{ + "name":"org.enso.table.error.NullValuesInKeyColumns" +}, +{ + "name":"org.enso.table.error.RangeExceededException" +}, +{ + "name":"org.enso.table.error.TooManyColumnsException" +}, +{ + "name":"org.enso.table.error.UnmatchedRow" +}, +{ + "name":"org.enso.table.error.ValueTypeMismatchException" +}, +{ + "name":"org.enso.table.excel.ExcelConnectionPool" +}, +{ + "name":"org.enso.table.excel.ExcelFileFormat" +}, +{ + "name":"org.enso.table.excel.ExcelHeaders" +}, +{ + "name":"org.enso.table.excel.ExcelRange" +}, +{ + "name":"org.enso.table.excel.ReadOnlyExcelConnection" +}, +{ + "name":"org.enso.table.expressions.ExpressionVisitorImpl" +}, +{ + "name":"org.enso.table.formatting.AnyObjectFormatter" +}, +{ + "name":"org.enso.table.formatting.BooleanFormatter" +}, +{ + "name":"org.enso.table.formatting.DateFormatter" +}, +{ + "name":"org.enso.table.formatting.DateTimeFormatter" +}, +{ + "name":"org.enso.table.formatting.DecimalFormatter" +}, +{ + "name":"org.enso.table.formatting.IntegerFormatter" +}, +{ + "name":"org.enso.table.formatting.TextFormatter" +}, +{ + "name":"org.enso.table.formatting.TimeFormatter" +}, +{ + "name":"org.enso.table.operations.AddRowNumber" +}, +{ + "name":"org.enso.table.operations.AddRunning" +}, +{ + "name":"org.enso.table.operations.OrderBuilder" +}, +{ + "name":"org.enso.table.parsing.BooleanParser" +}, +{ + "name":"org.enso.table.parsing.DateParser" +}, +{ + "name":"org.enso.table.parsing.DateTimeParser" +}, +{ + "name":"org.enso.table.parsing.IdentityParser" +}, +{ + "name":"org.enso.table.parsing.NumberParser" +}, +{ + "name":"org.enso.table.parsing.TimeOfDayParser" +}, +{ + "name":"org.enso.table.parsing.TypeInferringParser" +}, +{ + "name":"org.enso.table.parsing.WhitespaceStrippingParser" +}, +{ + "name":"org.enso.table.parsing.problems.AdditionalInvalidRows" +}, +{ + "name":"org.enso.table.parsing.problems.InvalidFormat" +}, +{ + "name":"org.enso.table.parsing.problems.InvalidRow" +}, +{ + "name":"org.enso.table.parsing.problems.MismatchedQuote" +}, +{ + "name":"org.enso.table.parsing.problems.ParseProblemAggregator" +}, +{ + "name":"org.enso.table.problems.ProblemAggregator" +}, +{ + "name":"org.enso.table.read.DelimitedReader" +}, +{ + "name":"org.enso.table.read.ExcelReader" +}, +{ + "name":"org.enso.table.read.ParsingFailedException" +}, +{ + "name":"org.enso.table.read.QuoteStrippingParser" +}, +{ + "name":"org.enso.table.util.ColumnMapper" +}, +{ + "name":"org.enso.table.util.NameDeduplicator" +}, +{ + "name":"org.enso.table.util.problems.DuplicateNames" +}, +{ + "name":"org.enso.table.util.problems.InvalidNames" +}, +{ + "name":"org.enso.table.write.DelimitedWriter" +}, +{ + "name":"org.enso.table.write.ExcelWriter" +}, +{ + "name":"org.enso.table.write.ExistingDataMode" +}, +{ + "name":"org.enso.table.write.ExistingFileBehavior" +}, +{ + "name":"org.enso.table.write.WriteQuoteBehavior" +}, +{ + "name":"org.graalvm.collections.Pair" +}, +{ + "name":"org.graalvm.polyglot.io.IOHelper", + "fields":[{"name":"ACCESS"}] +}, +{ + "name":"org.graalvm.polyglot.management.Management", + "fields":[{"name":"ACCESS"}] +}, +{ + "name":"org.jline.terminal.impl.exec.ExecTerminalProvider", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.jline.terminal.impl.jansi.JansiTerminalProvider", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.jline.terminal.impl.jna.JnaTerminalProvider", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"org.jline.terminal.impl.jna.linux.CLibrary$termios", + "allDeclaredFields":true +}, +{ + "name":"org.jline.terminal.impl.jna.linux.CLibrary$winsize", + "allDeclaredFields":true +}, +{ + "name":"org.jline.terminal.impl.jna.osx.CLibrary$termios", + "allDeclaredFields":true +}, +{ + "name":"org.jline.terminal.impl.jna.osx.CLibrary$winsize", + "allDeclaredFields":true +}, +{ + "name":"org.jline.terminal.impl.jna.windows.CLibrary$termios", + "allDeclaredFields":true +}, +{ + "name":"org.jline.terminal.impl.jna.windows.CLibrary$winsize", + "allDeclaredFields":true +}, +{ + "name":"org.openide.util.RequestProcessor" +}, +{ + "name":"org.sqlite.SQLiteErrorCode" +}, +{ + "name":"org.sqlite.SQLiteException" +}, +{ + "name":"org.w3c.dom.Attr" +}, +{ + "name":"org.w3c.dom.Document" +}, +{ + "name":"org.w3c.dom.Element" +}, +{ + "name":"org.w3c.dom.NamedNodeMap" +}, +{ + "name":"org.w3c.dom.Node" +}, +{ + "name":"org.w3c.dom.NodeList" +}, +{ + "name":"org.w3c.dom.Text" +}, +{ + "name":"org.xml.sax.InputSource" +}, +{ + "name":"org.xml.sax.SAXException" +}, +{ + "name":"org.xml.sax.SAXParseException" +}, +{ + "name":"scala.collection.concurrent.CNodeBase", + "fields":[{"name":"csize"}] +}, +{ + "name":"scala.collection.concurrent.INodeBase", + "fields":[{"name":"mainnode"}] +}, +{ + "name":"scala.collection.concurrent.MainNode", + "fields":[{"name":"prev"}] +}, +{ + "name":"scala.collection.concurrent.TrieMap", + "fields":[{"name":"root"}] +}, +{ + "name":"sun.management.ClassLoadingImpl", + "queryAllPublicConstructors":true +}, +{ + "name":"sun.management.CompilationImpl", + "queryAllPublicConstructors":true +}, +{ + "name":"sun.management.ManagementFactoryHelper$1", + "queryAllPublicConstructors":true +}, +{ + "name":"sun.management.ManagementFactoryHelper$PlatformLoggingImpl", + "queryAllPublicConstructors":true +}, +{ + "name":"sun.management.MemoryImpl", + "queryAllPublicConstructors":true +}, +{ + "name":"sun.management.MemoryManagerImpl", + "queryAllPublicConstructors":true +}, +{ + "name":"sun.management.MemoryPoolImpl", + "queryAllPublicConstructors":true +}, +{ + "name":"sun.management.RuntimeImpl", + "queryAllPublicConstructors":true +}, +{ + "name":"sun.security.pkcs12.PKCS12KeyStore", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"sun.security.pkcs12.PKCS12KeyStore$DualFormatPKCS12", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"sun.security.provider.DSA$SHA224withDSA", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"sun.security.provider.DSA$SHA256withDSA", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"sun.security.provider.JavaKeyStore$DualFormatJKS", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"sun.security.provider.JavaKeyStore$JKS", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"sun.security.provider.NativePRNG", + "methods":[{"name":"","parameterTypes":[] }, {"name":"","parameterTypes":["java.security.SecureRandomParameters"] }] +}, +{ + "name":"sun.security.provider.NativePRNG$NonBlocking", + "methods":[{"name":"","parameterTypes":[] }, {"name":"","parameterTypes":["java.security.SecureRandomParameters"] }] +}, +{ + "name":"sun.security.provider.SHA", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"sun.security.provider.SHA2$SHA224", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"sun.security.provider.SHA2$SHA256", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"sun.security.provider.SHA5$SHA384", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"sun.security.provider.SHA5$SHA512", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"sun.security.provider.X509Factory", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"sun.security.provider.certpath.PKIXCertPathValidator", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"sun.security.rsa.PSSParameters", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"sun.security.rsa.RSAKeyFactory$Legacy", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"sun.security.rsa.RSAPSSSignature", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"sun.security.rsa.RSASignature$SHA224withRSA", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"sun.security.rsa.RSASignature$SHA256withRSA", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"sun.security.ssl.KeyManagerFactoryImpl$SunX509", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"sun.security.ssl.SSLContextImpl$DefaultSSLContext", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"sun.security.ssl.TrustManagerFactoryImpl$PKIXFactory", + "methods":[{"name":"","parameterTypes":[] }] +}, +{ + "name":"sun.security.util.ObjectIdentifier" +}, +{ + "name":"sun.security.x509.AuthorityInfoAccessExtension", + "methods":[{"name":"","parameterTypes":["java.lang.Boolean","java.lang.Object"] }] +}, +{ + "name":"sun.security.x509.AuthorityKeyIdentifierExtension", + "methods":[{"name":"","parameterTypes":["java.lang.Boolean","java.lang.Object"] }] +}, +{ + "name":"sun.security.x509.BasicConstraintsExtension", + "methods":[{"name":"","parameterTypes":["java.lang.Boolean","java.lang.Object"] }] +}, +{ + "name":"sun.security.x509.CRLDistributionPointsExtension", + "methods":[{"name":"","parameterTypes":["java.lang.Boolean","java.lang.Object"] }] +}, +{ + "name":"sun.security.x509.CertificateExtensions" +}, +{ + "name":"sun.security.x509.CertificatePoliciesExtension", + "methods":[{"name":"","parameterTypes":["java.lang.Boolean","java.lang.Object"] }] +}, +{ + "name":"sun.security.x509.ExtendedKeyUsageExtension", + "methods":[{"name":"","parameterTypes":["java.lang.Boolean","java.lang.Object"] }] +}, +{ + "name":"sun.security.x509.IssuerAlternativeNameExtension", + "methods":[{"name":"","parameterTypes":["java.lang.Boolean","java.lang.Object"] }] +}, +{ + "name":"sun.security.x509.KeyUsageExtension", + "methods":[{"name":"","parameterTypes":["java.lang.Boolean","java.lang.Object"] }] +}, +{ + "name":"sun.security.x509.NetscapeCertTypeExtension", + "methods":[{"name":"","parameterTypes":["java.lang.Boolean","java.lang.Object"] }] +}, +{ + "name":"sun.security.x509.PrivateKeyUsageExtension", + "methods":[{"name":"","parameterTypes":["java.lang.Boolean","java.lang.Object"] }] +}, +{ + "name":"sun.security.x509.SubjectAlternativeNameExtension", + "methods":[{"name":"","parameterTypes":["java.lang.Boolean","java.lang.Object"] }] +}, +{ + "name":"sun.security.x509.SubjectKeyIdentifierExtension", + "methods":[{"name":"","parameterTypes":["java.lang.Boolean","java.lang.Object"] }] +}, +{ + "name": "org.enso.languageserver.boot.LanguageServerRunner", + "methods": [ + { + "name": "", + "parameterTypes":[] + }, + { + "name": "runLanguageServer", + "parameterTypes":["org.apache.commons.cli.CommandLine", "org.enso.runner.common.ProfilingConfig", "org.slf4j.event.Level"] + } + ] +} +] diff --git a/engine/language-server/src/main/resources/META-INF/native-image/org/enso/languageserver/serialization-config.json b/engine/language-server/src/main/resources/META-INF/native-image/org/enso/languageserver/serialization-config.json new file mode 100644 index 000000000000..33406459f3aa --- /dev/null +++ b/engine/language-server/src/main/resources/META-INF/native-image/org/enso/languageserver/serialization-config.json @@ -0,0 +1,59 @@ +{ + "types":[ + { + "name":"ch.qos.logback.classic.spi.IThrowableProxy[]" + }, + { + "name":"ch.qos.logback.classic.spi.LoggerContextVO" + }, + { + "name":"ch.qos.logback.classic.spi.LoggingEventVO" + }, + { + "name":"ch.qos.logback.classic.spi.StackTraceElementProxy" + }, + { + "name":"ch.qos.logback.classic.spi.StackTraceElementProxy[]" + }, + { + "name":"ch.qos.logback.classic.spi.ThrowableProxyVO" + }, + { + "name":"org.slf4j.helpers.BasicMarker" + }, + { + "name":"java.lang.StackTraceElement" + }, + { + "name":"java.lang.String" + }, + { + "name":"java.util.Collections$EmptyMap" + }, + { + "name":"java.util.HashMap" + }, + { + "name":"java.lang.Throwable" + }, + { + "name":"java.lang.Object" + }, + { + "name":"java.lang.Exception" + }, + { + "name":"java.io.IOException" + }, + { + "name":"java.util.ArrayList" + }, + { + "name":"java.util.concurrent.CopyOnWriteArrayList" + } + ], + "lambdaCapturingTypes":[ + ], + "proxies":[ + ] +} diff --git a/engine/language-server/src/main/scala/org/enso/languageserver/boot/MainModule.scala b/engine/language-server/src/main/scala/org/enso/languageserver/boot/MainModule.scala index 93d369b146c2..1a00b1782994 100644 --- a/engine/language-server/src/main/scala/org/enso/languageserver/boot/MainModule.scala +++ b/engine/language-server/src/main/scala/org/enso/languageserver/boot/MainModule.scala @@ -305,7 +305,6 @@ class MainModule(serverConfig: LanguageServerConfig, logLevel: Level) { val stdIn = new ObservablePipedInputStream(stdInSink) val extraOptions = new java.util.HashMap[String, String]() - extraOptions.put(RuntimeServerInfo.ENABLE_OPTION, "true") extraOptions.put(RuntimeOptions.INTERACTIVE_MODE, "true") extraOptions.put( RuntimeOptions.LOG_MASKING, @@ -317,7 +316,13 @@ class MainModule(serverConfig: LanguageServerConfig, logLevel: Level) { Runtime.getRuntime.availableProcessors().toString ) - val builder = ContextFactory + if (java.lang.Boolean.getBoolean("com.oracle.graalvm.isaot")) { + log.trace("Running Language Server in AOT mode") + } else { + log.trace("Running Language Server in non-AOT mode") + } + + private val builder = ContextFactory .create() .projectRoot(serverConfig.contentRootPath) .logLevel(logLevel) @@ -328,6 +333,7 @@ class MainModule(serverConfig: LanguageServerConfig, logLevel: Level) { .err(stdErr) .in(stdIn) .options(extraOptions) + .enableRuntimeServerInfoKey(RuntimeServerInfo.ENABLE_OPTION) .messageTransport((uri: URI, peerEndpoint: MessageEndpoint) => { if (uri.toString == RuntimeServerInfo.URI) { val connection = new RuntimeConnector.Endpoint( diff --git a/engine/language-server/src/main/scala/org/enso/languageserver/protocol/json/JsonConnectionController.scala b/engine/language-server/src/main/scala/org/enso/languageserver/protocol/json/JsonConnectionController.scala index 5841cf11dd1c..a2c62d837a2e 100644 --- a/engine/language-server/src/main/scala/org/enso/languageserver/protocol/json/JsonConnectionController.scala +++ b/engine/language-server/src/main/scala/org/enso/languageserver/protocol/json/JsonConnectionController.scala @@ -202,7 +202,14 @@ class JsonConnectionController( ) mainComponent .init() - .thenApply(_ => InitializationComponentInitialized.getInstance) + .whenComplete((_, ex) => + if (mainComponent.isInitialized) { + logger.trace("Resources have been initialized") + self ! InitializationComponentInitialized.getInstance() + } else { + logger.warn("Failed to initialize resources", ex) + } + ) .pipeTo(self) context.become(initializing(webActor, clientId, req, sender())) diff --git a/engine/language-server/src/main/scala/org/enso/languageserver/runtime/RuntimeConnector.scala b/engine/language-server/src/main/scala/org/enso/languageserver/runtime/RuntimeConnector.scala index ca6f8f186e93..0774a8d268fe 100644 --- a/engine/language-server/src/main/scala/org/enso/languageserver/runtime/RuntimeConnector.scala +++ b/engine/language-server/src/main/scala/org/enso/languageserver/runtime/RuntimeConnector.scala @@ -36,7 +36,7 @@ final class RuntimeConnector( override def receive: Receive = { case RuntimeConnector.Initialize(engine) => logger.debug( - s"Runtime connector established connection with the message endpoint" + "Runtime connector established connection with the message endpoint" ) unstashAll() context.become(waitingOnEndpoint(engine)) @@ -49,13 +49,15 @@ final class RuntimeConnector( Runtime.Api.Response(None, Api.InitializedNotification()) ) => logger.debug( - s"Message endpoint [{}] is initialized. Runtime connector can accept messages", + "Message endpoint [{}] is initialized. Runtime connector can accept messages", engine ) unstashAll() context.become(initialized(engine, Map())) - case _ => stash() + case msg => + logger.trace("Runtime received unexpected message: {}", msg) + stash() }) /** Performs communication between runtime and language server. @@ -103,8 +105,8 @@ final class RuntimeConnector( handler ! request case None => logger.warn( - s"No registered handler found for request " + - s"[${payload.getClass.getCanonicalName}]" + "No registered handler found for request [{}]", + payload.getClass.getCanonicalName ) } @@ -120,8 +122,7 @@ final class RuntimeConnector( case None => logger.warn( "No sender has been found associated with request id [{}], the response [{}] will be dropped", - correlationId, - payload.getClass.getCanonicalName + Array[Any](correlationId, payload.getClass.getCanonicalName) ) payload match { case msg: ToLogString => diff --git a/engine/launcher/src/test/scala/org/enso/launcher/components/LauncherRunnerSpec.scala b/engine/launcher/src/test/scala/org/enso/launcher/components/LauncherRunnerSpec.scala index e8f8d1d4b11e..b24e60aa8268 100644 --- a/engine/launcher/src/test/scala/org/enso/launcher/components/LauncherRunnerSpec.scala +++ b/engine/launcher/src/test/scala/org/enso/launcher/components/LauncherRunnerSpec.scala @@ -70,7 +70,7 @@ class LauncherRunnerSpec extends RuntimeVersionManagerTest with FlakySpec { val jvmOptions = Seq(("locally-added-options", "value1")) val runnerEntryPoint = "org.enso.runner/org.enso.runner.Main" - def checkCommandLine(command: Command): Unit = { + def checkCommandLine(command: RawCommand): Unit = { val arguments = command.command.tail val javaArguments = arguments.takeWhile(_ != "-jar") val appArguments = arguments.dropWhile(_ != runnerEntryPoint).tail diff --git a/engine/runner/src/main/java/org/enso/runner/Main.java b/engine/runner/src/main/java/org/enso/runner/Main.java index 711c4248810d..d7054f698bf2 100644 --- a/engine/runner/src/main/java/org/enso/runner/Main.java +++ b/engine/runner/src/main/java/org/enso/runner/Main.java @@ -78,6 +78,7 @@ public class Main { private static final String PROFILING_PATH = "profiling-path"; private static final String PROFILING_TIME = "profiling-time"; private static final String LANGUAGE_SERVER_OPTION = "server"; + private static final String LANGUAGE_SERVER_NATIVE_OPTION = "native-server"; private static final String IN_PROJECT_OPTION = "in-project"; private static final String VERSION_OPTION = "version"; private static final String JSON_OPTION = "json"; @@ -215,6 +216,11 @@ private static Options buildOptions() { .build(); var lsOption = cliOptionBuilder().longOpt(LANGUAGE_SERVER_OPTION).desc("Runs Language Server").build(); + var lsNativeOption = + cliOptionBuilder() + .longOpt(LANGUAGE_SERVER_NATIVE_OPTION) + .desc("Runs Language Server in native-image mode") + .build(); var lsProfilingPathOption = cliOptionBuilder() .hasArg(true) @@ -483,6 +489,7 @@ private static Options buildOptions() { .addOption(newProjectAuthorNameOpt) .addOption(newProjectAuthorEmailOpt) .addOption(lsOption) + .addOption(lsNativeOption) .addOption(lsProfilingPathOption) .addOption(lsProfilingTimeOption) .addOption(deamonizeOption) @@ -577,14 +584,13 @@ private void createNew( var template = templateOption.map( - (n) -> { - return Template.fromString(n) - .getOrElse( - () -> { - logger.error("Unknown project template name: '" + n + "'."); - throw exitFail(); - }); - }); + (n) -> + Template.fromString(n) + .getOrElse( + () -> { + logger.error("Unknown project template name: '" + n + "'."); + throw exitFail(); + })); PackageManager$.MODULE$ .Default() @@ -699,8 +705,7 @@ private void handleRun( if (projectMode) { var result = PackageManager$.MODULE$.Default().loadPackage(file); if (result.isSuccess()) { - @SuppressWarnings("unchecked") - var pkg = (org.enso.pkg.Package) result.get(); + var pkg = result.get(); mainFile = pkg.mainFile(); if (!mainFile.exists()) { @@ -748,13 +753,11 @@ private void handleRun( if (projectMode) { var result = PackageManager$.MODULE$.Default().loadPackage(file); if (result.isSuccess()) { - var s = (scala.util.Success) result; - @SuppressWarnings("unchecked") - var pkg = (org.enso.pkg.Package) s.get(); + var pkg = result.get(); var mainModuleName = pkg.moduleNameForFile(pkg.mainFile()).toString(); runPackage(context, mainModuleName, file, additionalArgs); } else { - println(((scala.util.Failure) result).exception().getMessage()); + System.err.println(result.failed().get().getMessage()); throw exitFail(); } } else { @@ -1462,6 +1465,14 @@ private void launch(CommandLine line, Level logLevel, boolean logMasking) { throw exitFail(); } } else { + if (line.hasOption(LANGUAGE_SERVER_NATIVE_OPTION)) { + System.out.println( + "\"--" + + LANGUAGE_SERVER_NATIVE_OPTION + + "\" has no effect without --\"" + + LANGUAGE_SERVER_OPTION + + "\""); + } try { var conf = parseProfilingConfig(line); try { diff --git a/engine/runner/src/main/java/org/enso/runner/RunnerLogging.java b/engine/runner/src/main/java/org/enso/runner/RunnerLogging.java index da8f93560e61..94a36383a1d8 100644 --- a/engine/runner/src/main/java/org/enso/runner/RunnerLogging.java +++ b/engine/runner/src/main/java/org/enso/runner/RunnerLogging.java @@ -53,6 +53,7 @@ private static void setupImpl( if (success) { logger.trace("Connected to logging service at [{}]", connectionUri); } else { + System.err.println("Failed to connect to logging service."); throw new RuntimeException("Failed to connect to logging service"); } } catch (InterruptedException | ExecutionException e) { @@ -62,12 +63,16 @@ private static void setupImpl( } else { var future = executorService.submit( - () -> - loggerSetup.setup( - logLevel, - distributionManager.detectPaths().logs(), - "enso-cli", - loggerSetup.getConfig())); + () -> { + var status = + loggerSetup.setup( + logLevel, + distributionManager.paths().logs(), + "enso-cli", + loggerSetup.getConfig()); + distributionManager.logPaths(); + return status; + }); try { var success = future.get(); if (!success) { diff --git a/engine/runtime-instrument-runtime-server/src/main/java/org/enso/interpreter/instrument/runtime/server/RuntimeServerInstrument.java b/engine/runtime-instrument-runtime-server/src/main/java/org/enso/interpreter/instrument/runtime/server/RuntimeServerInstrument.java index ccb742c4ca50..09488901fc42 100644 --- a/engine/runtime-instrument-runtime-server/src/main/java/org/enso/interpreter/instrument/runtime/server/RuntimeServerInstrument.java +++ b/engine/runtime-instrument-runtime-server/src/main/java/org/enso/interpreter/instrument/runtime/server/RuntimeServerInstrument.java @@ -108,7 +108,7 @@ public void onContextClosed(TruffleContext context) {} @Override protected void onCreate(Env env) { this.env = env; - env.registerService(this); + if (TruffleOptions.AOT) { this.handler = HandlerFactoryImpl.create(); } else { @@ -120,12 +120,13 @@ protected void onCreate(Env env) { MessageEndpoint client = env.startServer(URI.create(RuntimeServerInfo.URI), this.handler.endpoint()); if (client != null) { + env.registerService(this); this.handler.endpoint().setClient(client); } else { env.getLogger(RuntimeServerInstrument.class) - .warning( - "The client endpoint has not been initialized. The Runtime " - + "Server Instrument may very likely not function properly."); + .severe( + "The client endpoint has not been initialized. The Runtime will not function" + + " properly."); } } catch (MessageTransport.VetoException | IOException e) { throw new RuntimeException(e); diff --git a/engine/runtime/src/main/java/org/enso/interpreter/EnsoLanguage.java b/engine/runtime/src/main/java/org/enso/interpreter/EnsoLanguage.java index 4d52bc042670..9832d7fcdae6 100644 --- a/engine/runtime/src/main/java/org/enso/interpreter/EnsoLanguage.java +++ b/engine/runtime/src/main/java/org/enso/interpreter/EnsoLanguage.java @@ -20,6 +20,7 @@ import java.time.ZoneId; import java.util.List; import java.util.Objects; +import java.util.logging.Level; import org.enso.common.LanguageInfo; import org.enso.common.RuntimeOptions; import org.enso.compiler.Compiler; @@ -72,8 +73,6 @@ import org.graalvm.options.OptionDescriptors; import org.graalvm.options.OptionKey; import org.graalvm.options.OptionType; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; /** * The root of the Enso implementation. @@ -114,8 +113,6 @@ public final class EnsoLanguage extends TruffleLanguage { private final ContextThreadLocal executionEnvironment = locals.createContextThreadLocal((ctx, thread) -> new ExecutionEnvironment[1]); - private static final Logger logger = LoggerFactory.getLogger(EnsoLanguage.class); - public static EnsoLanguage get(Node node) { return REFERENCE.get(node); } @@ -467,7 +464,7 @@ public Object getLanguageView(EnsoContext context, Object value) { } } } catch (UnsupportedMessageException | InvalidArrayIndexException e) { - logger.warn("Unexpected exception", e); + context.getLogger().log(Level.WARNING, "Unexpected exception", e); } return null; } diff --git a/engine/runtime/src/main/scala/org/enso/interpreter/runtime/IrToTruffle.scala b/engine/runtime/src/main/scala/org/enso/interpreter/runtime/IrToTruffle.scala index de8730c67113..9790ed9c9be1 100644 --- a/engine/runtime/src/main/scala/org/enso/interpreter/runtime/IrToTruffle.scala +++ b/engine/runtime/src/main/scala/org/enso/interpreter/runtime/IrToTruffle.scala @@ -2685,7 +2685,11 @@ class IrToTruffle( val log = context.getLogger() if (log.isLoggable(Level.FINEST)) { val allDefs = scope.graph.rootScope.allDefinitions - log.log(Level.FINEST, s"Scope for ${where} loaded with {0}", allDefs) + log.log( + Level.FINEST, + s"Root scope for ${where} loaded with {0}", + allDefs + ) } scope } @@ -2704,7 +2708,11 @@ class IrToTruffle( val log = context.getLogger() if (log.isLoggable(Level.FINEST)) { val allDefs = scope.graph.rootScope.allDefinitions - log.log(Level.FINEST, s"Scope for ${where} loaded with {0}", allDefs) + log.log( + Level.FINEST, + s"Child scope for ${where} loaded with {0}", + allDefs + ) } scope } diff --git a/lib/scala/distribution-manager/src/main/scala/org/enso/distribution/DistributionManager.scala b/lib/scala/distribution-manager/src/main/scala/org/enso/distribution/DistributionManager.scala index 640697816221..b46980ad5cd9 100644 --- a/lib/scala/distribution-manager/src/main/scala/org/enso/distribution/DistributionManager.scala +++ b/lib/scala/distribution-manager/src/main/scala/org/enso/distribution/DistributionManager.scala @@ -138,9 +138,11 @@ class DistributionManager(val env: Environment) { /** Determines paths that should be used by the launcher. */ lazy val paths: DistributionPaths = { - val paths = detectPaths() + detectPaths() + } + + def logPaths(): Unit = { logger.debug("Detected paths: {}", paths) - paths } protected def detectPaths(): DistributionPaths = { diff --git a/lib/scala/logging-service-logback/src/main/java/org/enso/logging/service/logback/LoggingServer.java b/lib/scala/logging-service-logback/src/main/java/org/enso/logging/service/logback/LoggingServer.java index 8427ed37181f..1f7f1c4e878d 100644 --- a/lib/scala/logging-service-logback/src/main/java/org/enso/logging/service/logback/LoggingServer.java +++ b/lib/scala/logging-service-logback/src/main/java/org/enso/logging/service/logback/LoggingServer.java @@ -1,7 +1,6 @@ package org.enso.logging.service.logback; import ch.qos.logback.classic.LoggerContext; -import ch.qos.logback.classic.net.SimpleSocketServer; import java.net.URI; import java.net.URISyntaxException; import java.nio.file.Path; @@ -12,7 +11,7 @@ class LoggingServer extends LoggingService { private int port; - private SimpleSocketServer logServer; + private SocketServer logServer; public LoggingServer(int port) { this.port = port; @@ -24,7 +23,7 @@ public URI start(Level level, Path path, String prefix, BaseConfig config) { try { var setup = LogbackSetup.forContext(lc, config); - logServer = new SimpleSocketServer(lc, port); + logServer = new SocketServer(lc, port); logServer.start(); setup.setup(level, path, prefix, setup.getConfig()); return new URI(null, null, "localhost", port, null, null, null); diff --git a/lib/scala/logging-service-logback/src/main/java/org/enso/logging/service/logback/SocketLoggingNode.java b/lib/scala/logging-service-logback/src/main/java/org/enso/logging/service/logback/SocketLoggingNode.java new file mode 100644 index 000000000000..d865c3544cf1 --- /dev/null +++ b/lib/scala/logging-service-logback/src/main/java/org/enso/logging/service/logback/SocketLoggingNode.java @@ -0,0 +1,109 @@ +package org.enso.logging.service.logback; + +import ch.qos.logback.classic.Logger; +import ch.qos.logback.classic.LoggerContext; +import ch.qos.logback.classic.net.server.HardenedLoggingEventInputStream; +import ch.qos.logback.classic.spi.ILoggingEvent; +import java.io.BufferedInputStream; +import java.io.IOException; +import java.net.Socket; +import java.net.SocketAddress; + +// Contributors: Moses Hohman + +/** + * A direct copy of ch.qos.logback.classic.net.SocketNode. Read {@link ILoggingEvent} objects sent + * from a remote client using Sockets (TCP). These logging events are logged according to local + * policy, as if they were generated locally. + * + *

For example, the socket node might decide to log events to a local file and also resent them + * to a second socket node. + * + * @author Ceki Gülcü + * @author Sébastien Pennec + * @since 0.8.4 + */ +public class SocketLoggingNode implements Runnable { + + Socket socket; + LoggerContext context; + HardenedLoggingEventInputStream hardenedLoggingEventInputStream; + SocketAddress remoteSocketAddress; + + Logger logger; + boolean closed = false; + SocketServer socketServer; + + public SocketLoggingNode(SocketServer socketServer, Socket socket, LoggerContext context) { + this.socketServer = socketServer; + this.socket = socket; + remoteSocketAddress = socket.getRemoteSocketAddress(); + this.context = context; + logger = context.getLogger(SocketLoggingNode.class); + } + + public void run() { + + try { + hardenedLoggingEventInputStream = + new HardenedLoggingEventInputStream(new BufferedInputStream(socket.getInputStream())); + } catch (Exception e) { + logger.error("Could not open ObjectInputStream to " + socket, e); + closed = true; + } + + ILoggingEvent event; + Logger remoteLogger; + + try { + while (!closed) { + // read an event from the wire + // System.out.println("Reading event?"); + event = (ILoggingEvent) hardenedLoggingEventInputStream.readObject(); + // System.out.println("WHAT EVENT? " + event.getMessage()); + // get a logger from the hierarchy. The name of the logger is taken to + // be the name contained in the event. + remoteLogger = context.getLogger(event.getLoggerName()); + // apply the logger-level filter + if (remoteLogger.isEnabledFor(event.getLevel())) { + // finally log the event as if was generated locally + remoteLogger.callAppenders(event); + } + } + } catch (java.io.EOFException e) { + e.printStackTrace(); + logger.debug("Caught java.io.EOFException closing connection.", e); + } catch (java.net.SocketException e) { + logger.warn("Caught java.net.SocketException closing connection."); + } catch (IOException e) { + logger.debug("Caught java.io.IOException: " + e); + logger.debug("Closing connection."); + } catch (Exception e) { + logger.error("Unexpected exception. Closing connection.", e); + } + + socketServer.socketNodeClosing(this); + close(); + } + + void close() { + if (closed) { + return; + } + closed = true; + if (hardenedLoggingEventInputStream != null) { + try { + hardenedLoggingEventInputStream.close(); + } catch (IOException e) { + logger.warn("Could not close connection.", e); + } finally { + hardenedLoggingEventInputStream = null; + } + } + } + + @Override + public String toString() { + return this.getClass().getName() + remoteSocketAddress.toString(); + } +} diff --git a/lib/scala/logging-service-logback/src/main/java/org/enso/logging/service/logback/SocketServer.java b/lib/scala/logging-service-logback/src/main/java/org/enso/logging/service/logback/SocketServer.java new file mode 100644 index 000000000000..bc496fc63c21 --- /dev/null +++ b/lib/scala/logging-service-logback/src/main/java/org/enso/logging/service/logback/SocketServer.java @@ -0,0 +1,164 @@ +package org.enso.logging.service.logback; + +import ch.qos.logback.classic.LoggerContext; +import ch.qos.logback.classic.joran.JoranConfigurator; +import ch.qos.logback.core.joran.spi.JoranException; +import java.io.IOException; +import java.net.ServerSocket; +import java.net.Socket; +import java.util.ArrayList; +import java.util.List; +import java.util.concurrent.CountDownLatch; +import javax.net.ServerSocketFactory; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +/** + * A direct copy of ch.qos.logback.classic.net.SimpleSocketServer. A simple {@link + * SocketLoggingNode} based server. + * + * @author Ceki Gülcü + * @author Sébastien Pennec + * @since 0.8.4 + */ +public class SocketServer extends Thread { + + Logger logger = LoggerFactory.getLogger(SocketServer.class); + + private final int port; + private final LoggerContext lc; + private boolean closed = false; + private ServerSocket serverSocket; + private List socketNodeList = new ArrayList<>(); + + // used for testing purposes + private CountDownLatch latch; + + public SocketServer(LoggerContext lc, int port) { + this.lc = lc; + this.port = port; + } + + public void run() { + + final String oldThreadName = Thread.currentThread().getName(); + + try { + + final String newThreadName = getServerThreadName(); + Thread.currentThread().setName(newThreadName); + + logger.debug("Listening on port " + port); + serverSocket = getServerSocketFactory().createServerSocket(port); + while (!closed) { + logger.debug("Waiting to accept a new client."); + signalAlmostReadiness(); + Socket socket = serverSocket.accept(); + logger.debug("Connected to client at " + socket.getInetAddress()); + logger.debug("Starting new socket node."); + SocketLoggingNode newSocketNode = new SocketLoggingNode(this, socket, lc); + synchronized (socketNodeList) { + socketNodeList.add(newSocketNode); + } + final String clientThreadName = getClientThreadName(socket); + new Thread(newSocketNode, clientThreadName).start(); + } + } catch (Exception e) { + if (closed) { + logger.warn("Exception in run method for a closed server", e); + } else { + logger.error("Unexpected failure in run method", e); + } + } finally { + Thread.currentThread().setName(oldThreadName); + } + } + + /** Returns the name given to the server thread. */ + protected String getServerThreadName() { + return String.format("Logback %s (port %d)", getClass().getSimpleName(), port); + } + + /** Returns a name to identify each client thread. */ + protected String getClientThreadName(Socket socket) { + return String.format("Logback SocketNode (client: %s)", socket.getRemoteSocketAddress()); + } + + /** + * Gets the platform default {@link ServerSocketFactory}. + * + *

Subclasses may override to provide a custom server socket factory. + */ + protected ServerSocketFactory getServerSocketFactory() { + return ServerSocketFactory.getDefault(); + } + + /** + * Signal another thread that we have established a connection This is useful for testing + * purposes. + */ + void signalAlmostReadiness() { + if (latch != null && latch.getCount() != 0) { + latch.countDown(); + } + } + + /** + * Used for testing purposes + * + * @param latch + */ + void setLatch(CountDownLatch latch) { + this.latch = latch; + } + + /** Used for testing purposes */ + public CountDownLatch getLatch() { + return latch; + } + + public boolean isClosed() { + return closed; + } + + public void close() { + closed = true; + if (serverSocket != null) { + try { + serverSocket.close(); + } catch (IOException e) { + logger.error("Failed to close serverSocket", e); + } finally { + serverSocket = null; + } + } + + logger.info("closing this server"); + synchronized (socketNodeList) { + for (SocketLoggingNode sn : socketNodeList) { + sn.close(); + } + } + if (socketNodeList.size() != 0) { + logger.warn("Was expecting a 0-sized socketNodeList after server shutdown"); + } + } + + public void socketNodeClosing(SocketLoggingNode sn) { + logger.debug("Removing {}", sn); + + // don't allow simultaneous access to the socketNodeList + // (e.g. removal whole iterating on the list causes + // java.util.ConcurrentModificationException) + synchronized (socketNodeList) { + socketNodeList.remove(sn); + } + } + + public static void configureLC(LoggerContext lc, String configFile) throws JoranException { + JoranConfigurator configurator = new JoranConfigurator(); + lc.reset(); + configurator.setContext(lc); + configurator.doConfigure(configFile); + } +} diff --git a/lib/scala/project-manager/src/test/scala/org/enso/projectmanager/TestDistributionConfiguration.scala b/lib/scala/project-manager/src/test/scala/org/enso/projectmanager/TestDistributionConfiguration.scala index 6d3fdb344dfb..3385893815ca 100644 --- a/lib/scala/project-manager/src/test/scala/org/enso/projectmanager/TestDistributionConfiguration.scala +++ b/lib/scala/project-manager/src/test/scala/org/enso/projectmanager/TestDistributionConfiguration.scala @@ -25,7 +25,7 @@ import org.enso.runtimeversionmanager.releases.{ ReleaseProvider, SimpleReleaseProvider } -import org.enso.runtimeversionmanager.runner.{JVMSettings, JavaCommand} +import org.enso.runtimeversionmanager.runner.{JVMSettings, JavaExecCommand} import org.enso.runtimeversionmanager.test.{ FakeEnvironment, TestLocalLockManager @@ -94,11 +94,12 @@ class TestDistributionConfiguration( override def defaultJVMSettings: JVMSettings = { val currentProcess = ProcessHandle.current().info().command().toScala.getOrElse("java") - val javaCommand = JavaCommand(currentProcess, None) + val javaCommand = new JavaExecCommand(currentProcess, None) new JVMSettings( javaCommandOverride = Some(javaCommand), jvmOptions = Seq(), - extraOptions = Seq() + extraOptions = Seq(), + nativeImage = false ) } diff --git a/lib/scala/project-manager/src/test/scala/org/enso/projectmanager/protocol/ProjectCreateHandleMissingRuntimeSpec.scala b/lib/scala/project-manager/src/test/scala/org/enso/projectmanager/protocol/ProjectCreateHandleMissingRuntimeSpec.scala index 0fd90870bf43..6fd36c0a5d57 100644 --- a/lib/scala/project-manager/src/test/scala/org/enso/projectmanager/protocol/ProjectCreateHandleMissingRuntimeSpec.scala +++ b/lib/scala/project-manager/src/test/scala/org/enso/projectmanager/protocol/ProjectCreateHandleMissingRuntimeSpec.scala @@ -18,7 +18,8 @@ class ProjectCreateHandleMissingRuntimeSpec override def defaultJVMSettings: JVMSettings = JVMSettings( javaCommandOverride = None, jvmOptions = Seq(), - extraOptions = Seq() + extraOptions = Seq(), + nativeImage = false ) } diff --git a/lib/scala/runtime-version-manager/src/main/scala/org/enso/runtimeversionmanager/runner/ExecCommand.scala b/lib/scala/runtime-version-manager/src/main/scala/org/enso/runtimeversionmanager/runner/ExecCommand.scala new file mode 100644 index 000000000000..1dca0bbc6498 --- /dev/null +++ b/lib/scala/runtime-version-manager/src/main/scala/org/enso/runtimeversionmanager/runner/ExecCommand.scala @@ -0,0 +1,12 @@ +package org.enso.runtimeversionmanager.runner + +import org.enso.runtimeversionmanager.components.Engine + +/** Executable command used to trigger a Runner. Can be either a Java command or a native image executable. + */ +trait ExecCommand { + // Path to executable + def path: String + def cmdArguments(engine: Engine, jvmSettings: JVMSettings): Seq[String] + def javaHome: Option[String] +} diff --git a/lib/scala/runtime-version-manager/src/main/scala/org/enso/runtimeversionmanager/runner/JVMSettings.scala b/lib/scala/runtime-version-manager/src/main/scala/org/enso/runtimeversionmanager/runner/JVMSettings.scala index 02b77e1dcc1d..25cd1e04cb3d 100644 --- a/lib/scala/runtime-version-manager/src/main/scala/org/enso/runtimeversionmanager/runner/JVMSettings.scala +++ b/lib/scala/runtime-version-manager/src/main/scala/org/enso/runtimeversionmanager/runner/JVMSettings.scala @@ -10,9 +10,10 @@ package org.enso.runtimeversionmanager.runner * @param extraOptions extra options that should be added to the launched JVM */ case class JVMSettings( - javaCommandOverride: Option[JavaCommand], + javaCommandOverride: Option[JavaExecCommand], jvmOptions: Seq[(String, String)], - extraOptions: Seq[(String, String)] + extraOptions: Seq[(String, String)], + nativeImage: Boolean ) object JVMSettings { @@ -27,12 +28,14 @@ object JVMSettings { def apply( useSystemJVM: Boolean, jvmOptions: Seq[(String, String)], - extraOptions: Seq[(String, String)] + extraOptions: Seq[(String, String)], + nativeImage: Boolean = false ): JVMSettings = new JVMSettings( - if (useSystemJVM) Some(JavaCommand.systemJavaCommand) else None, + if (useSystemJVM) Some(JavaExecCommand.defaultSystem) else None, jvmOptions, - extraOptions + extraOptions, + nativeImage ) // See propositions in #9475 for alternatives @@ -53,7 +56,8 @@ object JVMSettings { JVMSettings( useSystemJVM = false, jvmOptions = jvmOptions.result(), - extraOptions = Seq(nioOpen) + extraOptions = Seq(nioOpen), + nativeImage = false ) } diff --git a/lib/scala/runtime-version-manager/src/main/scala/org/enso/runtimeversionmanager/runner/JavaCommand.scala b/lib/scala/runtime-version-manager/src/main/scala/org/enso/runtimeversionmanager/runner/JavaCommand.scala deleted file mode 100644 index db527866bc2d..000000000000 --- a/lib/scala/runtime-version-manager/src/main/scala/org/enso/runtimeversionmanager/runner/JavaCommand.scala +++ /dev/null @@ -1,31 +0,0 @@ -package org.enso.runtimeversionmanager.runner - -import org.enso.runtimeversionmanager.components.GraalRuntime - -/** Represents a way of launching the JVM. - * - * @param executableName name of the `java` executable to run - * @param javaHomeOverride if set, asks to override the JAVA_HOME environment - * variable when launching the JVM - */ -case class JavaCommand( - executableName: String, - javaHomeOverride: Option[String] -) - -object JavaCommand { - - /** The [[JavaCommand]] representing the system-configured JVM. - */ - def systemJavaCommand: JavaCommand = JavaCommand("java", None) - - /** The [[JavaCommand]] representing a managed [[GraalRuntime]]. - */ - def forRuntime(runtime: GraalRuntime): JavaCommand = - JavaCommand( - executableName = runtime.javaExecutable.toAbsolutePath.normalize.toString, - javaHomeOverride = - Some(runtime.javaHome.toAbsolutePath.normalize.toString) - ) - -} diff --git a/lib/scala/runtime-version-manager/src/main/scala/org/enso/runtimeversionmanager/runner/JavaExecCommand.scala b/lib/scala/runtime-version-manager/src/main/scala/org/enso/runtimeversionmanager/runner/JavaExecCommand.scala new file mode 100644 index 000000000000..aa821552ba16 --- /dev/null +++ b/lib/scala/runtime-version-manager/src/main/scala/org/enso/runtimeversionmanager/runner/JavaExecCommand.scala @@ -0,0 +1,69 @@ +package org.enso.runtimeversionmanager.runner + +import org.enso.runtimeversionmanager.components.{Engine, GraalRuntime} +import org.enso.runtimeversionmanager.components.Manifest.JVMOptionsContext + +/** Represents a way of launching the JVM. + * + * @param executableName name of the `java` executable to run + * @param javaHomeOverride if set, asks to override the JAVA_HOME environment + * variable when launching the JVM + */ +class JavaExecCommand( + val executableName: String, + val javaHome: Option[String] +) extends ExecCommand { + def path: String = executableName + + override def cmdArguments( + engine: Engine, + jvmSettings: JVMSettings + ): Seq[String] = { + def translateJVMOption( + option: (String, String), + standardOption: Boolean + ): String = { + val name = option._1 + val value = option._2 + if (standardOption) s"-D$name=$value" else s"--$name=$value" + } + + val context = JVMOptionsContext(enginePackagePath = engine.path) + + val manifestOptions = + engine.defaultJVMOptions + .filter(_.isRelevant) + .map(_.substitute(context)) + val commandLineOptions = jvmSettings.jvmOptions.map( + translateJVMOption(_, standardOption = true) + ) ++ jvmSettings.extraOptions.map( + translateJVMOption(_, standardOption = false) + ) + val componentPath = engine.componentDirPath.toAbsolutePath.normalize + val modulePathOptions = + Seq( + "--module-path", + componentPath.toString, + "-m", + "org.enso.runner/org.enso.runner.Main" + ) + + manifestOptions ++ commandLineOptions ++ modulePathOptions + } +} + +object JavaExecCommand { + + /** The [[JavaExecCommand]] representing the system-configured JVM. + */ + def defaultSystem: JavaExecCommand = new JavaExecCommand("java", None) + + /** The [[JavaExecCommand]] representing a managed [[GraalRuntime]]. + */ + def forRuntime(runtime: GraalRuntime): JavaExecCommand = + new JavaExecCommand( + executableName = runtime.javaExecutable.toAbsolutePath.normalize.toString, + javaHome = Some(runtime.javaHome.toAbsolutePath.normalize.toString) + ) + +} diff --git a/lib/scala/runtime-version-manager/src/main/scala/org/enso/runtimeversionmanager/runner/NativeExecCommand.scala b/lib/scala/runtime-version-manager/src/main/scala/org/enso/runtimeversionmanager/runner/NativeExecCommand.scala new file mode 100644 index 000000000000..33beca0aa1c3 --- /dev/null +++ b/lib/scala/runtime-version-manager/src/main/scala/org/enso/runtimeversionmanager/runner/NativeExecCommand.scala @@ -0,0 +1,32 @@ +package org.enso.runtimeversionmanager.runner + +import org.enso.cli.OS +import org.enso.distribution.{DistributionManager, Environment} +import org.enso.runtimeversionmanager.components.Engine + +import java.nio.file.Path + +case class NativeExecCommand(executablePath: Path) extends ExecCommand { + override def path: String = executablePath.toString + + override def cmdArguments( + engine: Engine, + jvmSettings: JVMSettings + ): Seq[String] = + Seq("-Dcom.oracle.graalvm.isaot=true") + + override def javaHome: Option[String] = None +} + +object NativeExecCommand { + def apply(version: String): Option[NativeExecCommand] = { + val env = new Environment() {} + val dm = new DistributionManager(env) + val execName = OS.executableName("enso") + val fullExecPath = + dm.paths.engines.resolve(version).resolve("bin").resolve(execName) + + if (fullExecPath.toFile.exists()) Some(NativeExecCommand(fullExecPath)) + else None + } +} diff --git a/lib/scala/runtime-version-manager/src/main/scala/org/enso/runtimeversionmanager/runner/Command.scala b/lib/scala/runtime-version-manager/src/main/scala/org/enso/runtimeversionmanager/runner/RawCommand.scala similarity index 98% rename from lib/scala/runtime-version-manager/src/main/scala/org/enso/runtimeversionmanager/runner/Command.scala rename to lib/scala/runtime-version-manager/src/main/scala/org/enso/runtimeversionmanager/runner/RawCommand.scala index 4c2e38e895fc..3395a069dc6e 100644 --- a/lib/scala/runtime-version-manager/src/main/scala/org/enso/runtimeversionmanager/runner/Command.scala +++ b/lib/scala/runtime-version-manager/src/main/scala/org/enso/runtimeversionmanager/runner/RawCommand.scala @@ -13,12 +13,12 @@ import scala.util.{Failure, Try} * @param extraEnv environment variables that should be overridden * @param workingDirectory the working directory in which the command should be executed (if None, the working directory is not overridden and is inherited instead) */ -case class Command( +case class RawCommand( command: Seq[String], extraEnv: Seq[(String, String)], workingDirectory: Option[Path] ) { - private val logger = Logger[Command] + private val logger = Logger[RawCommand] /** Runs the command and returns its exit code. * diff --git a/lib/scala/runtime-version-manager/src/main/scala/org/enso/runtimeversionmanager/runner/Runner.scala b/lib/scala/runtime-version-manager/src/main/scala/org/enso/runtimeversionmanager/runner/Runner.scala index 4b81789dd036..aaa0e1b1642d 100644 --- a/lib/scala/runtime-version-manager/src/main/scala/org/enso/runtimeversionmanager/runner/Runner.scala +++ b/lib/scala/runtime-version-manager/src/main/scala/org/enso/runtimeversionmanager/runner/Runner.scala @@ -9,7 +9,6 @@ import org.enso.logger.masking.MaskedString import org.slf4j.event.Level import java.net.URI -import org.enso.runtimeversionmanager.components.Manifest.JVMOptionsContext import org.enso.runtimeversionmanager.components.{ Engine, GraalRuntime, @@ -163,9 +162,9 @@ class Runner( * the underlying JVM to get the full command for launching the component. */ def withCommand[R](runSettings: RunSettings, jvmSettings: JVMSettings)( - action: Command => R + action: RawCommand => R ): R = { - def prepareAndRunCommand(engine: Engine, javaCommand: JavaCommand): R = { + def prepareAndRunCommand(engine: Engine, cmd: ExecCommand): R = { val jvmOptsFromEnvironment = environment.getEnvVar(JVM_OPTIONS_ENV_VAR) jvmOptsFromEnvironment.foreach { opts => Logger[Runner].debug( @@ -176,35 +175,11 @@ class Runner( ) } - def translateJVMOption( - option: (String, String), - standardOption: Boolean - ): String = { - val name = option._1 - val value = option._2 - if (standardOption) s"-D$name=$value" else s"--$name=$value" - } - - val context = JVMOptionsContext(enginePackagePath = engine.path) - - val manifestOptions = - engine.defaultJVMOptions.filter(_.isRelevant).map(_.substitute(context)) val environmentOptions = jvmOptsFromEnvironment.map(_.split(' ').toIndexedSeq).getOrElse(Seq()) - val commandLineOptions = jvmSettings.jvmOptions.map( - translateJVMOption(_, standardOption = true) - ) ++ - jvmSettings.extraOptions.map( - translateJVMOption(_, standardOption = false) - ) - val componentPath = engine.componentDirPath.toAbsolutePath.normalize + val jvmArguments = - manifestOptions ++ environmentOptions ++ commandLineOptions ++ Seq( - "--module-path", - componentPath.toString, - "-m", - "org.enso.runner/org.enso.runner.Main" - ) + environmentOptions ++ cmd.cmdArguments(engine, jvmSettings) val loggingConnectionArguments = if (runSettings.connectLoggerIfAvailable) @@ -212,7 +187,7 @@ class Runner( else Seq() val command = Seq( - javaCommand.executableName + cmd.path ) ++ jvmArguments ++ loggingConnectionArguments ++ runSettings.runnerArguments val distributionSettings = @@ -226,13 +201,13 @@ class Runner( ) p.toString() } - .orElse(javaCommand.javaHomeOverride) + .orElse(cmd.javaHome) val extraEnvironmentOverrides = javaHome.map("JAVA_HOME" -> _).toSeq ++ distributionSettings.toSeq action( - Command( + RawCommand( command, extraEnvironmentOverrides, runSettings.workingDirectory @@ -249,7 +224,15 @@ class Runner( case None => runtimeVersionManager.withEngineAndRuntime(engineVersion) { (engine, runtime) => - prepareAndRunCommand(engine, JavaCommand.forRuntime(runtime)) + NativeExecCommand.apply(engineVersion.toString) match { + case Some(cmd) => + prepareAndRunCommand(engine, cmd) + case None => + prepareAndRunCommand( + engine, + JavaExecCommand.forRuntime(runtime) + ) + } } } }