public UsingCollection (Scope container)
		{
			m_container = container;
			m_items = new ArrayList ();
		}
		public void Remove (Scope value)
		{
			m_items.Remove (value);
		}
		public virtual void VisitScope (Scope scope)
		{
		}
		public int IndexOf (Scope value)
		{
			return m_items.IndexOf (value);
		}
		public void Insert (int index, Scope value)
		{
			m_items.Insert (index, value);
		}
		public bool Contains (Scope value)
		{
			return m_items.Contains (value);
		}
		public void Add (Scope value)
		{
			m_items.Add (value);
		}
		public ConstantCollection (Scope container)
		{
			m_container = container;
			m_items = new ArrayList ();
		}
		void ReadScopes ()
		{
			for (int i = 0, len = m_scopes.Length; i < len; i++) {
				Scope s = new Scope ();
				int parent = Int ();
				s.StartOffset = Int ();
				s.EndOffset = Int ();
				Pop2 ();

				if (parent != -1) {
					s.Parent = m_scopes [parent];
					s.Parent.Scopes.Add (s);
				}

				m_scopes [i] = s;
			}
		}
		public VariableCollection (Scope container)
		{
			m_container = container;
			m_items = new ArrayList ();
		}