void Apply(StyleRuleSet ruleset, StyleApplier applier, UIView parentView)
        {
            var styles = ruleset.StylesFor (parentView);
            foreach (var style in styles) {
                applier.Apply (parentView, style);
            }

            foreach (var view in parentView.Subviews) {
                Apply (ruleset, applier, view);
            }
        }
        public override void ViewDidLoad()
        {
            base.ViewDidLoad ();

            // obviously the ruleset should be from a file somehow...
            var ruleset = new StyleRuleSet();

            var rule = new Rule();
            rule.Selectors.Add(new Selector(typeof(UILabel)));
            rule.Styles.Add(new SimpleStyle("Color", UIColor.Green));
            rule.Styles.Add(new SimpleStyle("CornerRadius", 10f));
            rule.Styles.Add(new SimpleStyle("BackgroundColor", UIColor.Blue));
            ruleset.Rules.Add(rule);

            rule = new Rule();
            rule.Selectors.Add(new Selector(typeof(UIButton)));
            rule.Styles.Add(new SimpleStyle("Color", UIColor.Cyan));
            rule.Styles.Add(new SimpleStyle("CornerRadius", 30f));
            rule.Styles.Add(new SimpleStyle("BackgroundColor", UIColor.Orange));
            rule.Styles.Add(new SimpleStyle("ShadowOffset", new SizeF(4, 10)));
            rule.Styles.Add(new SimpleStyle("ShadowRadius", 7f));
            rule.Styles.Add(new SimpleStyle("ShadowColor", UIColor.Black));
            rule.Styles.Add(new SimpleStyle("ShadowOpacity", 0.9f));
            rule.Styles.Add(new SimpleStyle("BorderColor", UIColor.Magenta));
            rule.Styles.Add(new SimpleStyle("BorderWidth", 3.0f));
            rule.Styles.Add(new SimpleStyle("Font", new FontDescription()
                                            {
                FontName = "Chalkduster",
                FontSize = 24f
            }));

            //
            ruleset.Rules.Add(rule);

            rule = new Rule();
            rule.Selectors.Add(new Selector(typeof(UILabel), "Foo"));
            rule.Styles.Add(new SimpleStyle("Color", UIColor.Magenta));
            rule.Styles.Add(new SimpleStyle("CornerRadius", 0f));
            rule.Styles.Add(new SimpleStyle("Font", new FontDescription()
                                            {
                FontName = "Baskerville-BoldItalic",
                FontSize = 24f
            }));
            ruleset.Rules.Add(rule);

            rule = new Rule();
            var parentSelector = new Selector(typeof(UIButton));
            rule.Selectors.Add(new Selector(typeof(UILabel), null, parentSelector));
            rule.Styles.Add(new SimpleStyle("BackgroundColor", UIColor.Black));
            ruleset.Rules.Add(rule);

            // would be nice to find another way to store these class hooks
            // could just about use Tag fields - but that's unpleasant :/
            StyleClassList = new StyleClassList();
            StyleClassList.AddClass(SpecialLabel, "Foo");

            StyleFinderHelper.CurrentList = StyleClassList;
            var applier = new StyleApplier();
            Apply (ruleset, applier, View);
        }