Ref<PyType> (@Nullable PyType typeFromTargets, @NotNull TypeEvalContext context) { if (!isQualified()) return null; final PyClassLikeType targetType = as(typeFromTargets, PyClassLikeType.class); if (targetType == null || targetType.isDefinition()) return null; final PyResolveContext resolveContext = PyResolveContext.noProperties(context); final List<? extends RatedResolveResult> members = targetType.resolveMember(PyNames.GET, this, AccessDirection.READ, resolveContext); if (members == null || members.isEmpty()) return null; final PyType type = StreamEx.of(members) .map(RatedResolveResult::getElement) .select(PyCallable.class) .map(context::getReturnType) .collect(PyTypeUtil.toUnion()); return Ref.create(type); }