protected static BlueprintAbility ExtractBlueprint(BlueprintAbility ability, [CanBeNull] AbilityData data) { BlueprintAbility blueprintAbility1; if (data == null) { blueprintAbility1 = null; } else { AbilityData convertedFrom = data.ConvertedFrom; blueprintAbility1 = convertedFrom != null?convertedFrom.Blueprint.Or <BlueprintAbility>(null) : null; } if (blueprintAbility1 == null) { BlueprintAbility blueprintAbility2 = ability.Or <BlueprintAbility>(null); blueprintAbility1 = (blueprintAbility2 != null ? blueprintAbility2.Parent.Or <BlueprintAbility>(null) : null) ?? ability; } return(blueprintAbility1); }