Example of iterating enums.
If you place enems to be iterated under special sub-namespace like 
			mygame.reflected you can use 
			#Reflect mygame.reflected and it should be cheap.
		
		
			
			
			
			
				
					
				
					1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73  
				 | 
						Namespace test   #Import "<std>"   #Reflect test   Using std..   ' to be reflected ' Enum Flags 	A, 	B, 	C End     Function Main()   	For Local enumItem:=Eachin IteratingEnum<Flags>() 		Print "enum: "+enumItem 	Next End   ' helper function ' Function IteratingEnum<T>:EnumContainer<T>() 	 	Return New EnumContainer<T> End   Class EnumContainer<T> 	 	Method All:EnumIterator<String>() 		 		Local type:=Typeof<T> 		Local items:=New StringStack 		For Local decl:=Eachin type.GetDecls() 			items.Add( decl.Name ) 		Next   		' we can cache items here   		Return New EnumIterator<String>( items ) 	End 	 	Class EnumIterator<T> 		 		Method New( items:Stack<T> ) 			 			_items=items 		End 		 		Property AtEnd:Bool() 			Return _index=_items.Length 		End 		 		Property Current:T() 			Return _items[_index] 		End 		 		Method Bump() 			_index+=1 		End 		 		Private 		 		Field _items:Stack<T> 		Field _index:=0 		 	End 	 End  | 
					
				
			 
		 
 
Output: