protected RunnerAndConfigurationSettings createConfigurationByElement( final Location location, final ConfigurationContext context) { final PsiElement element = location.getPsiElement(); final PsiFile file = element.getContainingFile(); if (!(file instanceof GroovyFile)) { return null; } GroovyFile groovyFile = (GroovyFile) file; final PsiClass aClass = GroovyRunnerUtil.getRunningClass(location.getPsiElement()); if (aClass instanceof GroovyScriptClass || GroovyRunnerUtil.isRunnable(aClass)) { final RunnerAndConfigurationSettings settings = createConfiguration(aClass); if (settings != null) { mySourceElement = element; final GroovyScriptRunConfiguration configuration = (GroovyScriptRunConfiguration) settings.getConfiguration(); GroovyScriptTypeDetector.getScriptType(groovyFile) .tuneConfiguration(groovyFile, configuration, location); return settings; } } if (file.getText().contains("@Grab")) { ApplicationConfigurationProducer producer = new ApplicationConfigurationProducer(); ConfigurationFromContext settings = producer.createConfigurationFromContext(context); if (settings != null) { PsiElement src = settings.getSourceElement(); mySourceElement = src; return createConfiguration( src instanceof PsiMethod ? ((PsiMethod) src).getContainingClass() : (PsiClass) src); } return null; } else { return null; } }