module checkTypeDefOrderInGroup {
    type record typeX {

    }

    group emptyGroup {
		
	}

	type integer modInt;

	//the good ones
    group typeDefs {

		type integer groupedInt;

		type component P_compA {
			var integer a := 3;
		}

		type component P_comp1 {
		
		}

    
        type record typeA {

        }
        type record typea {

        }
//        type record typeab {

//        }


        type record typeB {

        }
        type record typeC {

        }
    } 

    type record typeY {

    }

    group otherDefs {
    	altstep as_a(){
    	
    	}

    	function f_a(){
    	
    	}
   
    } 

    group mixedDefs {

		type component compA {
		
		}

		type component compB {
		
		}


        type record typeD {

        }
        
        const integer z := 5;
        
        type record typeE {

        }
        
        const integer x := 2;
        
        type record typeF {

        }

		const integer y := 3;
    } 

	//the bad ones

    group mixedDefsBad {
		//E comes before D
        type record typeE {

        }

        type record typeD {

        }
        
        const integer z := 5;
        
        
        const integer x := 2;
        
        type record typeF {

        }
		
		//comp? come after type?
		//+ compB before compA
		type component compB {
		
		}
		
		type component compA {
		
		}




		const integer y := 3;
    } 


group g1{
       type integer m1;
       type record m2 {}
       type set m3 {}
       type record m4 {}
       type m1 m5;
}

}