credits to JetBrains and ej-technologies