List<TypeConstraint> (GrListOrMap list, GrExpression arg) { GroovyConstructorReference reference = list.getConstructorReference(); if (reference == null) { return Collections.emptyList(); } GrExpression[] args = list.getInitializers(); List<TypeConstraint> result = new ArrayList<>(); for (GroovyResolveResult constructorResult : reference.resolve(false)) { final Map<GrExpression, Pair<PsiParameter, PsiType>> map = GrClosureSignatureUtil.mapArgumentsToParameters( constructorResult, list, false, true, GrNamedArgument.EMPTY_ARRAY, args, GrClosableBlock.EMPTY_ARRAY ); if (map == null) { continue; } final Pair<PsiParameter, PsiType> pair = map.get(arg); if (pair == null) { continue; } result.add(SubtypeConstraint.create(pair.second)); } return result; }