public IChelaType ExtractActualType(AstNode where, IChelaType type) { // Extract from the meta type. if(!type.IsMetaType()) Error(where, "expected a type."); type = ExtractMetaType(type); // Use the default element from the type group. if(type.IsTypeGroup()) { TypeGroup group = (TypeGroup)type; Structure building = group.GetDefaultType(); type = building; if(building == null) Error(where, "unexpected type group {0}", @group.GetDisplayName()); // Prevent ambiguity of merged type group. building.CheckAmbiguity(where.GetPosition()); } return type; }