/// <summary>
		/// Duplicate specified item and raises the event <see cref="ItemInserted"/>.
		/// </summary>
		/// <param name="adaptor">Reorderable list adaptor.</param>
		/// <param name="itemIndex">Zero-based index of item.</param>
		protected void DuplicateItem( IReorderableListAdaptor adaptor, int itemIndex )
		{
			adaptor.Duplicate( itemIndex );
			AutoFocusItem( s_ContextControlID, itemIndex + 1 );

			GUI.changed = true;
			ReorderableListGUI.indexOfChangedItem = -1;

			var args = new ItemInsertedEventArgs( adaptor, itemIndex + 1, true );
			OnItemInserted( args );
		}
		/// <summary>
		/// Raises event after list item is inserted or duplicated.
		/// </summary>
		/// <param name="args">Event arguments.</param>
		protected virtual void OnItemInserted( ItemInsertedEventArgs args )
		{
			if (ItemInserted != null)
				ItemInserted( this, args );
		}
		/// <summary>
		/// Add item at end of list and raises the event <see cref="ItemInserted"/>.
		/// </summary>
		/// <param name="adaptor">Reorderable list adaptor.</param>
		protected void AddItem( IReorderableListAdaptor adaptor )
		{
			adaptor.Add();
			AutoFocusItem( s_ContextControlID, adaptor.Count - 1 );

			GUI.changed = true;
			ReorderableListGUI.indexOfChangedItem = -1;

			var args = new ItemInsertedEventArgs( adaptor, adaptor.Count - 1, false );
			OnItemInserted( args );
		}