How do I get access to all Experimental/Internal methods of a class?

Hi, I’m building a small project for myself which im not trying to publish anyways, so using Internal/Experimental methods shouldnt be an issue.

Not sure what I need to add to my build.gradle.kts file to actually get access to those tho, I’m currently working with Classes like LocalHistoryImpl, LocalHistoryFacade and would like to have access to those Experimental methods.

Hi, @Skrumpey!

Methods or classes marked as @Experimental means non-stable API, but you may use them as you wish. They’re totally accessible from the client side.

Methods or classes marked as @Experimental means non-public API. They’re prohibited to use and such usages could be found and marked by Verifier as error.

But I think you may use reflection to get access to the classes and methods instead.

Hi, thanks for the quick answer!

Maybe im missing something since this is all completely new to me, how come I can’t use this collectChanges() method in LocalHistoryFacade then? It won’t show up as available to use on my side ^^

I don’t know what LocalHistoryFacade is, but it should be available for LocalHistoryFacade object as non-static method

Or you can check this example:

Thanks again, my mistake, I was using LocalHistoryFacade instead of LocalHistoryFacadeKt.

Now im struggling with another issue :sweat_smile:

When running the plugin, im getting hit with a SecurityException: setContextClassLoader and a ClassNotFoundException:

Caused by: java.lang.ClassNotFoundException: com.intellij.history.core.changes.ChangeSet PluginClassLoader(plugin=PluginDescriptor(name=LocalHistoryExtractor, id=com.github.skrumpey.localhistoryextractor, descriptorPath=plugin.xml, path=~\IdeaProjects\LocalHistoryExtractor_Main\build\idea-sandbox\IC-2024.3.4\plugins\LocalHistoryExtractor, version=0.0.1, package=null, isBundled=false), packagePrefix=null, state=active, parents=PluginDescriptor(name=IDEA CORE, id=com.intellij, moduleName=intellij.platform.vcs.impl, descriptorPath=intellij.platform.vcs.impl.xml, path=~\.gradle\caches\8.13\transforms\bf56ef00ba125283151fca6cb42aa092\transformed\ideaIC-2024.3.4-win\lib, version=243.25659.39, package=null, isBundled=true), PluginDescriptor(name=IDEA CORE, id=com.intellij, moduleName=intellij.platform.vcs.log.impl, descriptorPath=intellij.platform.vcs.log.impl.xml, path=~\.gradle\caches\8.13\transforms\bf56ef00ba125283151fca6cb42aa092\transformed\ideaIC-2024.3.4-win\lib, version=243.25659.39, package=null, isBundled=true), PluginDescriptor(name=IDEA CORE, id=com.intellij, moduleName=intellij.platform.vcs.dvcs.impl, descriptorPath=intellij.platform.vcs.dvcs.impl.xml, path=~\.gradle\caches\8.13\transforms\bf56ef00ba125283151fca6cb42aa092\transformed\ideaIC-2024.3.4-win\lib, version=243.25659.39, package=null, isBundled=true), PluginDescriptor(name=IDEA CORE, id=com.intellij, moduleName=intellij.platform.collaborationTools, descriptorPath=intellij.platform.collaborationTools.xml, path=~\.gradle\caches\8.13\transforms\bf56ef00ba125283151fca6cb42aa092\transformed\ideaIC-2024.3.4-win\lib, version=243.25659.39, package=null, isBundled=true), )

I’ve added those classes via adding bundledModule("intellij.platform.lvcs.impl"); at my build.gradle.kts file

I see the class in the repo of the module. Have you synced gradle dependencies?

yes i have, no clue why its not working

Something seems to be still missing generally, it also throws those Exception when only trying to use Classes like LocalHistoryImpl themselves. This still worked when using the gradle plugin version (1.x)