NInt Add(NInt baseIndex, const NValue & value)
	{
		NInt index;
		NCheck(NArrayCollectionAddN(GetHandle(), baseIndex, value.GetHandle(), &index));
		return index;
	}
	void Set(NInt baseIndex, NInt index, const NValue & value)
	{
		NCheck(NArrayCollectionSetN(GetHandle(), baseIndex, index, value.GetHandle()));
	}
	NInt IndexOf(NInt baseIndex, const NValue & value) const
	{
		NInt index;
		NCheck(NArrayCollectionIndexOfN(GetHandle(), baseIndex, value.GetHandle(), &index));
		return index;
	}
	bool Contains(NInt baseIndex, const NValue & value) const
	{
		NBool result;
		NCheck(NArrayCollectionContainsN(GetHandle(), baseIndex, value.GetHandle(), &result));
		return result != 0;
	}
 void SetValue(const NObject & object, const NValue & value) const
 {
     NCheck(NPropertyInfoSetValueN(GetHandle(), object.GetHandle(), value.GetHandle()));
 }