Non-PSI infrastructure

{{

runner runnerClass:"a.b.C"

          defaultRunnerParams:["a","b",...] {

  location type: File,Class

              nameFiler: e -> ...

}

debugger {
}
}}

PSI

resolve&completion:
//todo support dynamically-named methods resolve&completion
//todo set types for things that exist in code but with no type specified (closure parameters, etc.)

mix "foo.StringUtils" intoClass:"java.lang.String"
mix "xxx.GantScript" intoScript:"gant"
mix foo.MyPreciousClass { whereClass.hasAnnotation "foo.Precious" }

mix "com.intellij.groovy.DslScript" intoScript:"gdsl"
mix "com.intellij.groovy.ValuePredicates" intoClass:"groovy.lang.Closure" { 
  methodParameter "com.intellij.groovy.DslScript", "mix", "where"
}

class DslScript {
  void mix(String category, Map args, Closure where) {}
  //todo refine existing method declaration, specify parameters name&type
  //todo refine existing field declaration, specify type
}

class ClassPredicates {
  boolean hasAnnotation(String qname) {}
}

class ValuePredicates {
  ClassPreicates getWhereClass() {}
  boolean methodParameter(String cls, String method, String param) {}
}