public static IEnumerable<UsesLibraryAttribute> FromCustomAttributeProvider(ICustomAttributeProvider provider)
        {
            var attrs = provider.GetCustomAttributes ("Android.App.UsesLibraryAttribute");
            foreach (var attr in attrs) {
                UsesLibraryAttribute self;

                string[] extra = null;
                if (attr.ConstructorArguments.Count == 1) {
                    self = new UsesLibraryAttribute (
                            (string)  attr.ConstructorArguments [0].Value);
                    extra = new[]{"Name"};
                } else if (attr.ConstructorArguments.Count == 2) {
                    self = new UsesLibraryAttribute (
                            (string)  attr.ConstructorArguments [0].Value,
                            (bool)    attr.ConstructorArguments [1].Value);
                    extra = new[]{"Name", "Required"};
                } else {
                    self = new UsesLibraryAttribute ();
                    extra = new string[0];
                }

                self.specified = mapping.Load (self, attr);

                foreach (var e in extra)
                    self.specified.Add (e);

                yield return self;
            }
        }
        public static IEnumerable <UsesLibraryAttribute> FromCustomAttributeProvider(ICustomAttributeProvider provider)
        {
            var attrs = provider.GetCustomAttributes("Android.App.UsesLibraryAttribute");

            foreach (var attr in attrs)
            {
                UsesLibraryAttribute self;

                string[] extra = null;
                if (attr.ConstructorArguments.Count == 1)
                {
                    self = new UsesLibraryAttribute(
                        (string)attr.ConstructorArguments [0].Value);
                    extra = new[] { "Name" };
                }
                else if (attr.ConstructorArguments.Count == 2)
                {
                    self = new UsesLibraryAttribute(
                        (string)attr.ConstructorArguments [0].Value,
                        (bool)attr.ConstructorArguments [1].Value);
                    extra = new[] { "Name", "Required" };
                }
                else
                {
                    self  = new UsesLibraryAttribute();
                    extra = new string[0];
                }

                self.specified = mapping.Load(self, attr);

                foreach (var e in extra)
                {
                    self.specified.Add(e);
                }

                yield return(self);
            }
        }