@Override
  public boolean isAttributeWritable(@NotNull String name, @NotNull TypeEvalContext context) {
    final PyClass cls = getPyClass();

    if (isDefinition() || PyUtil.isObjectClass(cls)) return true;

    final List<String> slots = cls.getSlots(context);
    final Condition<PyTargetExpression> isDefinedTarget = target -> name.equals(target.getName()) && target.hasAssignedValue();

    return slots == null ||
           slots.contains(name) && !ContainerUtil.exists(cls.getClassAttributesInherited(context), isDefinedTarget) ||
           cls.findProperty(name, true, context) != null;
  }
@Override
  public boolean isAttributeWritable(@NotNull String name, @NotNull TypeEvalContext context)