@NotNull
  default <T extends GroovyReference>
  Collection<? extends GroovyResolveResult> resolve(@NotNull T ref, boolean incomplete, @NotNull GroovyResolver<T> resolver) {
    GroovyResolveResult[] results = resolveWithCaching(ref, resolver, incomplete);
    return results == null ? Collections.emptyList() : new SmartList<>(results);
  }
@NotNull
  default <T extends GroovyReference>
  Collection<? extends GroovyResolveResult> resolve(@NotNull T ref, boolean incomplete, @NotNull GroovyResolver<T> resolver)