I'm using the Groovy plugin as a reference for my own custom lang plugin development. I've noticed, however, that the Groovy plugin uses internal (impl) classes that aren't exposed to openapi users (note i'm in the maia branch). For example, the GroovyEditorHighlighter extends LayeredLexerEditorHighlighter, which as far as I can tell is not in the openapi; it's in the lang-impl module.
I'm tempted to do the same -- compile against idea.jar so I can use the very useful classes there. I know full well JetBrains can and probably will change those classes, but it's a reasonable trade-off to me. And given the Groovy plugin uses impl classes, is there a good reason (aside from the obvious) I should not for my language?