added protocol inspection and `ArraySet` implementation