Visibility (@Nullable String name) { if (name != null) { if (name.startsWith("__")) { if (PyNames.UNDERSCORED_ATTRIBUTES.contains(name)) { return Visibility.PREDEFINED; } else { return Visibility.PRIVATE; } } else if (name.startsWith("_")) { return Visibility.PROTECTED; } } return Visibility.NORMAL; }