public bool IsOverrideableWithDependencies(SerializedFrameSettings serialized, FrameSettings defaultFrameSettings) { FrameSettingsFieldAttribute attribute = attributes[field]; bool locallyOverrideable = overrideable == null || overrideable(); FrameSettingsField[] dependencies = attribute.dependencies; if (dependencies == null || !locallyOverrideable) { return(locallyOverrideable); } bool dependenciesOverrideable = true; for (int index = dependencies.Length - 1; index >= 0 && dependenciesOverrideable; --index) { FrameSettingsField depency = dependencies[index]; dependenciesOverrideable &= EvaluateBoolWithOverride(depency, this, defaultFrameSettings, serialized, attribute.IsNegativeDependency(depency)); } return(dependenciesOverrideable); }