@NotNull
  private List<RatedResolveResult> resolveMember(@Nullable PyExpression object, @Nullable String name) {
    final ArrayList<RatedResolveResult> results = new ArrayList<>();
    if (object != null && name != null) {
      final TypeEvalContext typeEvalContext = myContext.getTypeEvalContext();
      final PyType type = typeEvalContext.getType(object);
      typeEvalContext.trace("Side text is %s, type is %s", object.getText(), type);
      if (type != null) {
        final List<? extends RatedResolveResult> res =
          PyTypeUtil
            .toStream(type)
            .nonNull()
            .flatCollection(
              it -> it instanceof PyClassLikeType && ((PyClassLikeType)it).isDefinition()
                    ? resolveDefinitionMember((PyClassLikeType)it, object, name)
                    : it.resolveMember(name, object, AccessDirection.of(myElement), myContext)
            )
            .toList();

        if (!ContainerUtil.isEmpty(res)) {
          results.addAll(res);
        }
        else if (typeEvalContext.tracing()) {
          VirtualFile vFile = null;
          if (type instanceof PyClassType) {
            final PyClass pyClass = ((PyClassType)type).getPyClass();
            vFile = pyClass.getContainingFile().getVirtualFile();
          }
          type.resolveMember(name, object, AccessDirection.of(myElement), myContext);
          typeEvalContext.trace("Could not resolve member %s in type %s from file %s", name, type, vFile);
        }
      }
    }
    return results;
  }
@NotNull
  private List<RatedResolveResult> resolveMember(@Nullable PyExpression object, @Nullable String name)