@Nullable
  @Override
  public Property findProperty(@NotNull String name, boolean inherited, @Nullable TypeEvalContext context) {
    initLocalProperties();

    final Property property = myLocalPropertyCache.get(name);
    if (property != null) {
      return property;
    }

    if (findMethodByName(name, false, context) != null ||
        findClassAttribute(name, false, context) != null ||
        ContainerUtil.notNullize(getOwnSlots()).contains(name)) {
      return null;
    }

    if (inherited) {
      for (PyClass cls : getAncestorClasses(context)) {
        final Property ancestorProperty = cls.findProperty(name, false, context);
        if (ancestorProperty != null) {
          return ancestorProperty;
        }
      }
    }

    return null;
  }
@Nullable
  @Override
  public Property findProperty(@NotNull String name, boolean inherited, @Nullable TypeEvalContext context)