/******************************************************************************
 * Copyright (c) 2000-2021 Ericsson Telecom AB
 * All rights reserved. This program and the accompanying materials
 * are made available under the terms of the Eclipse Public License v2.0
 * which accompanies this distribution, and is available at
 * https://www.eclipse.org/org/documents/epl-2.0/EPL-2.0.html
 *
 * Contributors:
 *   Balasko, Jeno
 *   Kovacs, Ferenc
 *   Raduly, Csaba
 *
 ******************************************************************************/
module NegTest_RAW_Types {


type enumerated RawEnum { first(1), second(2), third(3) }
with {
  variant "";
  variant "";
  variant ""
}

type integer RawInteger10 (1..10)
with {
  variant "COMP(2scompl)";
  variant "";
  variant ""
}

type integer int32
with {
  variant "COMP(2scompl)";
  variant "FIELDLENGTH(32)";
}


//1.Sequence (record)
type record RawSeqEmpty {}
with {
  variant "";
  variant "";
  variant ""
}

type record RawSeqBool {boolean b}
with {
  variant "";
  variant "";
  variant ""
}

//type record RawSeqNull { NULL n}
//with {
//  variant "COMP(2scompl)";
//  variant "";
//  variant ""
//}

type record RawSeqInt {integer i}
with {
  variant (i) "COMP(2scompl)";
  variant (i) "FIELDLENGTH(32)";
  variant ""
}

type record RawSeqInt8 {integer i}
with {
  variant (i) "COMP(2scompl)";
  variant "";
  variant ""
}


type record RawSeqRawEnum {RawEnum e}
with {
  variant "";
  variant "";
  variant ""
}

type record RawSeqInt2 { integer i, integer j }
with {
  variant (i) "COMP(2scompl)";
  variant (i) "FIELDLENGTH(32)";
  variant (j) "COMP(2scompl)";
  variant (j) "FIELDLENGTH(32)";
}

type record RawSeqInt28 { integer i, integer j}
with {
  variant (i) "COMP(2scompl)";
  variant (i) "FIELDLENGTH(32)";
  variant (j) "COMP(2scompl)";
  //variant (j) "FIELDLENGTH(32)";
}

type record RawSeqInt2opt { integer i, integer j optional}
with {
  variant (i) "COMP(2scompl)";
  variant (i) "FIELDLENGTH(32)";
  variant (j) "COMP(2scompl)";
  variant (j) "FIELDLENGTH(32)";
}

/*
type record RawSeqInt3opt { integer i, integer j, integer k optional}
with {
  variant (i) "COMP(2scompl)";
  variant "";
  variant ""
}
*/

type record RawSeqIntSeqInt2 { integer i, RawSeqInt2 jk }
with {
  variant (i) "COMP(2scompl)";
  variant (i) "FIELDLENGTH(32)";
  variant ""
}

type record RawSeqIntSeqInt2opt { integer i optional, RawSeqInt2 jk }
with {
  variant (i) "COMP(2scompl)";
  variant (i) "FIELDLENGTH(32)";
  variant ""
}

type record RawSeqIntSeqInt2optopt { integer i optional, RawSeqInt2opt jk }
with {
  variant (i) "COMP(2scompl)";
  variant (i) "FIELDLENGTH(32)";
  variant ""
}

type record RawSeqInt3 { integer i, integer j, integer k}
with {
  variant (i) "COMP(2scompl)";
  variant (i) "FIELDLENGTH(32)";
  variant (j) "COMP(2scompl)";
  variant (j) "FIELDLENGTH(32)";
  variant (k) "COMP(2scompl)";
  variant (k) "FIELDLENGTH(32)";
}

type record RawSeqInt4 { integer i, integer j, integer k, integer l}
with {
  variant (i) "COMP(2scompl)";
  variant (i) "FIELDLENGTH(32)";
  variant (j) "COMP(2scompl)";
  variant (j) "FIELDLENGTH(32)";
  variant (k) "COMP(2scompl)";
  variant (k) "FIELDLENGTH(32)";
  variant (l) "COMP(2scompl)";
  variant (l) "FIELDLENGTH(32)";
}

type record RawSeqInt4opt { integer i, integer j, integer k, integer l optional}
with {
  variant (i) "COMP(2scompl)";
  variant (i) "FIELDLENGTH(32)";
  variant (j) "COMP(2scompl)";
  variant (j) "FIELDLENGTH(32)";
  variant (k) "COMP(2scompl)";
  variant (k) "FIELDLENGTH(32)";
  variant (l) "COMP(2scompl)";
  variant (l) "FIELDLENGTH(32)";
}

type record RawSeqCharstring { charstring x }
with {
  variant "COMP(2scompl)";
  variant "";
  variant ""
}

type record RawSeqCharstring2 { charstring x, charstring y optional }
with {
  variant "";
  variant "";
  variant ""
}

type record RawSeqStr { charstring s}
with {
  variant "COMP(2scompl)";
  variant "";
  variant ""
}

type record RawSeqStr2 { charstring s, charstring t}
with {
  variant "COMP(2scompl)";
  variant "";
  variant ""
}

type record RawSeqBitStr { bitstring b}
with {
  variant "COMP(2scompl)";
  variant "";
  variant ""
}

type record RawSeqBitStr2 { bitstring s, bitstring t}
with {
  variant "COMP(2scompl)";
  variant "";
  variant ""
}

type record RawSeqIntCharstring { integer i, charstring x }
with {
  variant (i) "COMP(2scompl)";
  variant (i) "FIELDLENGTH(32)";
  variant ""
}

type record RawSeqIntStr { integer i, charstring s}
with {
  variant (i) "COMP(2scompl)";
  variant (i) "FIELDLENGTH(32)";
  variant ""
}

type record RawSeqIntBitStr { integer i, bitstring b}
with {
  variant "COMP(2scompl)";
  variant "";
  variant ""
}

type record RawSeqOctStr { octetstring o}
with {
  variant "";
  variant "";
  variant ""
}

type record RawSeqOJKL { octetstring o, integer j, integer k, integer l}
with {
  variant (j) "COMP(2scompl)";
  variant (j) "FIELDLENGTH(32)";
  variant (k) "COMP(2scompl)";
  variant (k) "FIELDLENGTH(32)";
  variant (l) "COMP(2scompl)";
  variant (l) "FIELDLENGTH(32)";
}

type record RawSeqIOKL { integer i, octetstring o, integer k, integer l }
with {
  variant (i) "COMP(2scompl)";
  variant (i) "FIELDLENGTH(32)";
  variant (k) "COMP(2scompl)";
  variant (k) "FIELDLENGTH(32)";
  variant (l) "COMP(2scompl)";
  variant (l) "FIELDLENGTH(32)";
}

type record RawSeqISKL { integer i, RawSeqInt4 s, integer k, integer l}
with {
  variant (i) "COMP(2scompl)";
  variant (i) "FIELDLENGTH(32)";
  variant (k) "COMP(2scompl)";
  variant (k) "FIELDLENGTH(32)";
  variant (l) "COMP(2scompl)";
  variant (l) "FIELDLENGTH(32)";
}

//===== sequence of sequence of sequence ====

type record RawSeqIntSeqIntSeqInt2SeqCharstring2 {
  integer i optional,
  RawSeqIntSeqInt2 jkl,
  RawSeqCharstring2 xy
}
with {
  variant ""
}

type record RawSeqIntSeqIntSeqInt2SeqInt2 {
  integer i optional,
  RawSeqIntSeqInt2 jkl,
  RawSeqInt2 xy
}
with {
  variant ""
}

type record RawSeqIntSeqIntSeqInt2optoptSeqCharstring2 {
  integer i optional,
  RawSeqIntSeqInt2optopt jkl,
  RawSeqCharstring2 xy
}
with {
  variant ""
}

type record RawSeqIntSeqCharstring2 {
  integer i optional,
  RawSeqCharstring2 xy
}
with {
  variant "";
  variant ""
}

type record RawSeqIntSeqIntSeqInt2 {
  integer i,
  RawSeqIntSeqInt2 jkl
}
with {
  variant "";
  variant ""
}

type record RawSeqSeqIntSeqInt2SeqCharstring2 {
  RawSeqIntSeqInt2 jkl,
  RawSeqCharstring2      xy
}
with {
  variant "";
  variant "";
  variant ""
}

type record RawSeq_SeqSeqIntSeqInt2SeqCharstring2_SeqSeqIntSeqInt2SeqCharstring2 {
  RawSeqSeqIntSeqInt2SeqCharstring2 s1,
  RawSeqSeqIntSeqInt2SeqCharstring2 s2
}
with {
  variant "COMP(2scompl)";
  variant "";
  variant ""
}

type record RawSeq_SeqSeqIntSeqInt2optoptSeqCharstring2_SeqSeqIntSeqInt2optoptSeqCharstring2 {
  RawSeqIntSeqIntSeqInt2optoptSeqCharstring2 s1,
  RawSeqIntSeqIntSeqInt2optoptSeqCharstring2 s2
}
with {
  variant "COMP(2scompl)";
  variant "";
  variant ""
}

type record RawSeqBasicTypes {
  boolean b,
  //NULL n,
  integer i,
  RawEnum e,
  charstring  r,
  bitstring bs,
  octetstring os
}
with {
  variant "COMP(2scompl)";
  variant "";
  variant ""
}
//2.Sequence of (record of)

type record of boolean RawSeqOfBool
with {
  variant "COMP(2scompl)";
  variant "";
  variant ""
}
// There is no such type as NULL:
//type record of NULL RawSeqOfNull;
type record of integer RawSeqOfInt
with {
  variant "";
  variant ""
};

type record of integer RawSeqOfInt32
with {
  variant ([-]) "COMP(2scompl)";
  variant ([-]) "FIELDLENGTH(32)";
  variant ""
};

type record of RawEnum RawSeqOfRawEnum
with {
  variant "COMP(2scompl)";
  variant "";
  variant ""
};

type record of charstring RawSeqOfCharstring
with {
  variant "COMP(2scompl)";
  variant "";
  variant ""
};

type record of bitstring RawSeqOfBitStr
with {
  variant "COMP(2scompl)";
  variant "";
  variant ""
};

type record of octetstring RawSeqOfOctStr
with {
  variant "COMP(2scompl)";
  variant "";
  variant ""
};


type record of RawUnionBasicTypes RawSeqOfRawUnionBT
with {
  variant "";
  variant ""
};

type record of RawUnionBasicTypes32 RawSeqOfRawUnionBT32
with {
  variant "";
  variant ""
};

type record of RawSeqSeqIntSeqInt2SeqCharstring2 RawSeqOfSeqSeqIntSeqInt2SeqCharstring2
with {
  variant "COMP(2scompl)";
  variant "";
  variant ""
};

type record of RawSeqIntSeqIntSeqInt2optoptSeqCharstring2 RawSeqOfRawSeqIntSeqIntSeqInt2optoptSeqCharstring2
with {
  variant "COMP(2scompl)";
  variant "";
  variant ""
};
//3. Set
type set RawSetEmpty {}
with {
  variant "COMP(2scompl)";
  variant "";
  variant ""
}

type set RawSetBool { boolean b }
with {
  variant "COMP(2scompl)";
  variant "";
  variant ""
}
// There is no such type as NULL
//type set RawSetNull { NULL n }
//with {
//  variant "COMP(2scompl)";
//  variant "";
//  variant ""
//}

type set RawSetInt8 { integer i }
with {
  variant (i) "COMP(2scompl)";
  variant (i) "FIELDLENGTH(8)";
  variant ""
}

type set RawSetInt { integer i }
with {
  variant (i) "COMP(2scompl)";
  variant (i) "FIELDLENGTH(32)";
  variant ""
}

type set RawSetRawEnum { RawEnum e }
with {
  variant "COMP(2scompl)";
  variant "";
  variant ""
}

type set RawSetInt2 { integer i, integer j }
with {
  variant (i) "COMP(2scompl)";
  variant (i) "FIELDLENGTH(32)";
  variant (j) "COMP(2scompl)";
  variant (j) "FIELDLENGTH(32)";
}

type set RawSetInt2opt { integer i optional, integer j optional }
with {
  variant (i) "COMP(2scompl)";
  variant (i) "FIELDLENGTH(32)";
}

type set RawSetInt2opt32 { integer i optional, integer j optional }
with {
  variant (i) "COMP(2scompl)";
  variant (i) "FIELDLENGTH(32)";
  variant (j) "COMP(2scompl)";
  variant (j) "FIELDLENGTH(32)";
}

type set RawSetInt3opt { integer i optional, integer j optional, integer k optional }
with {
  variant (i) "COMP(2scompl)";
  variant (i) "FIELDLENGTH(32)";
  variant (j) "COMP(2scompl)";
  variant (j) "FIELDLENGTH(32)";
  variant (k) "COMP(2scompl)";
  variant (k) "FIELDLENGTH(32)";
}

type set RawSetIntSeqInt2 { integer i, RawSeqInt2 jk }
with {
  variant (i) "COMP(2scompl)";
  variant (i) "FIELDLENGTH(32)";
}

type set RawSetIntSeqInt2T { integer i, RawSeqInt2 jk }
with {
  variant (i) "COMP(2scompl)";
  variant (i) "FIELDLENGTH(32)";
}

type set RawSetIntSeqInt2opt { integer i optional, RawSeqInt2 jk }
with {
  variant (i) "COMP(2scompl)";
  variant (i) "FIELDLENGTH(32)";
}

type set RawSetIntSeqInt2Topt { integer i optional, RawSeqInt2 jk }
with {
  variant (i) "COMP(2scompl)";
  variant (i) "FIELDLENGTH(32)";
}

type set RawSetIntSeqInt2optopt { integer i optional, RawSeqInt2opt jk optional }
with {
  variant (i) "COMP(2scompl)";
  variant (i) "FIELDLENGTH(32)";
}

type set RawSetIntSeqInt2Toptopt { integer i optional, RawSeqInt2opt jk optional }
with {
  variant (i) "COMP(2scompl)";
  variant (i) "FIELDLENGTH(32)";
}

type set RawSetInt3 { integer i, integer j, integer k }
with {
  variant (i) "COMP(2scompl)";
  variant (i) "FIELDLENGTH(32)";
  variant (j) "COMP(2scompl)";
  variant (j) "FIELDLENGTH(32)";
  variant (k) "COMP(2scompl)";
  variant (k) "FIELDLENGTH(32)";
}

type set RawSetInt4 { integer i, integer j, integer k, integer l }
with {
  variant (i) "COMP(2scompl)";
  variant (i) "FIELDLENGTH(32)";
  variant (j) "COMP(2scompl)";
  variant (j) "FIELDLENGTH(32)";
  variant (k) "COMP(2scompl)";
  variant (k) "FIELDLENGTH(32)";
  variant (l) "COMP(2scompl)";
  variant (l) "FIELDLENGTH(32)";
}

type set RawSetInt4opt { integer i optional, integer j optional, integer k optional, integer l optional }
with {
  variant (i) "COMP(2scompl)";
  variant (i) "FIELDLENGTH(32)";
  variant (j) "COMP(2scompl)";
  variant (j) "FIELDLENGTH(32)";
  variant (k) "COMP(2scompl)";
  variant (k) "FIELDLENGTH(32)";
  variant (l) "COMP(2scompl)";
  variant (l) "FIELDLENGTH(32)";
}

type set RawSetCharstring { charstring x }
with {
  variant "COMP(2scompl)";
  variant "";
  variant ""
}

type set RawSetCharstring2 { charstring x, charstring y }
with {
  variant "COMP(2scompl)";
  variant "";
  variant ""
}

type set RawSetStr { charstring s }
with {
  variant "COMP(2scompl)";
  variant "";
  variant ""
}

type set RawSetStr2 { charstring s, charstring t }
with {
  variant "COMP(2scompl)";
  variant "";
  variant ""
}

type set RawSetBitStr { bitstring b }
with {
  variant "COMP(2scompl)";
  variant "";
  variant ""
}

type set RawSetOctStr { octetstring o }
with {
  variant "COMP(2scompl)";
  variant "";
  variant ""
}

type set RawSetBitStr2 { bitstring a, bitstring b }
with {
  variant "COMP(2scompl)";
  variant "";
  variant ""
}

type set RawSetIntCharstring { integer i, charstring f }
with {
  variant (i) "COMP(2scompl)";
  variant (i) "FIELDLENGTH(32)";
  variant "";
  variant ""
}

type set RawSetIntStr { integer i , charstring s }
with {
  variant "COMP(2scompl)";
  variant "";
  variant ""
}

type set RawSetIntBitStr { integer i, bitstring b}
with {
  variant "COMP(2scompl)";
  variant "";
  variant ""
}

type set RawSetIntOctStr { integer i, octetstring o }
with {
  variant "COMP(2scompl)";
  variant "";
  variant ""
}

type set RawSetOJKL { octetstring o, integer j, integer k, integer l }
with {
  variant (j) "COMP(2scompl)";
  variant (j) "FIELDLENGTH(32)";
  variant (k) "COMP(2scompl)";
  variant (k) "FIELDLENGTH(32)";
  variant (l) "COMP(2scompl)";
  variant (l) "FIELDLENGTH(32)";
}

type set RawSetIOKL { integer i, octetstring o, integer k, integer l }
with {
  variant (i) "COMP(2scompl)";
  variant (i) "FIELDLENGTH(32)";
  variant (k) "COMP(2scompl)";
  variant (k) "FIELDLENGTH(32)";
  variant (l) "COMP(2scompl)";
  variant (l) "FIELDLENGTH(32)";
}

type set RawSetISKL { integer i, RawSeqInt4 s, integer k, integer l }
with {
  variant (i) "COMP(2scompl)";
  variant (i) "FIELDLENGTH(32)";
  variant (k) "COMP(2scompl)";
  variant (k) "FIELDLENGTH(32)";
  variant (l) "COMP(2scompl)";
  variant (l) "FIELDLENGTH(32)";
}

type set RawSetISKLopt { integer i optional, RawSeqInt4opt s optional, integer k optional, integer l optional }
with {
  variant (i) "COMP(2scompl)";
  variant (i) "FIELDLENGTH(32)";
  variant (k) "COMP(2scompl)";
  variant (k) "FIELDLENGTH(32)";
  variant (l) "COMP(2scompl)";
  variant (l) "FIELDLENGTH(32)";
}

type set RawSetIS2KLopt { integer i optional, RawSeqInt2 s optional, integer k optional, integer l optional }
with {
  variant (i) "COMP(2scompl)";
  variant (i) "FIELDLENGTH(32)";
  variant (k) "COMP(2scompl)";
  variant (k) "FIELDLENGTH(32)";
  variant (l) "COMP(2scompl)";
  variant (l) "FIELDLENGTH(32)";
}

type set RawSetISOKL { integer i,RawSeqInt4 s, octetstring o, integer k, integer l   }
with {
  variant (i) "COMP(2scompl)";
  variant (i) "FIELDLENGTH(32)";
  variant (k) "COMP(2scompl)";
  variant (k) "FIELDLENGTH(32)";
  variant (l) "COMP(2scompl)";
  variant (l) "FIELDLENGTH(32)";
}

type set RawSetISOKLopt { integer i optional,RawSeqInt4opt s optional, octetstring o optional, integer k optional, integer l optional }
with {
  variant (i) "COMP(2scompl)";
  variant (i) "FIELDLENGTH(32)";
  variant (k) "COMP(2scompl)";
  variant (k) "FIELDLENGTH(32)";
  variant (l) "COMP(2scompl)";
  variant (l) "FIELDLENGTH(32)";
}

type set RawSetIOSKL {integer i, octetstring o, RawSeqInt4 s, integer k, integer l}
with {
  variant (i) "COMP(2scompl)";
  variant (i) "FIELDLENGTH(32)";
  variant (k) "COMP(2scompl)";
  variant (k) "FIELDLENGTH(32)";
  variant (l) "COMP(2scompl)";
  variant (l) "FIELDLENGTH(32)";
}

type set RawSetIOSKLopt {integer i optional, octetstring o optional, RawSeqInt4opt s optional, integer k optional, integer l optional}
with {
  variant (i) "COMP(2scompl)";
  variant (i) "FIELDLENGTH(32)";
  variant (k) "COMP(2scompl)";
  variant (k) "FIELDLENGTH(32)";
  variant (l) "COMP(2scompl)";
  variant (l) "FIELDLENGTH(32)";
}
//===== set of sequence of sequence ====
type set RawSetIntSeqIntSeqInt2SeqCharstring2 { integer i optional, RawSeqIntSeqInt2 jkl, RawSeqCharstring2 xy}
with {
  variant (i) "COMP(2scompl)";
  variant (i) "FIELDLENGTH(32)";
}

type set RawSetIntSeqIntSeqInt2optoptSeqCharstring2 { integer i optional, RawSeqIntSeqInt2optopt jkl, RawSeqCharstring2 xy}
with {
  variant (i) "COMP(2scompl)";
  variant (i) "FIELDLENGTH(32)";
}
//subtypes:
type set RawSetIntSeqCharstring2 { integer i optional, RawSeqCharstring2 xy }
with {
  variant (i) "COMP(2scompl)";
  variant (i) "FIELDLENGTH(32)";
}

type set RawSetIntSeqIntSeqInt2 { integer i optional, RawSeqIntSeqInt2 jkl }
with {
  variant (i) "COMP(2scompl)";
  variant (i) "FIELDLENGTH(32)";
}

type set RawSetSeqIntSeqInt2SeqCharstring2 { RawSeqIntSeqInt2 jkl, RawSeqCharstring2 xy }
with {
  variant "COMP(2scompl)";
  variant "";
  variant ""
}

type set RawSet_SeqSeqIntSeqInt2SeqCharstring2_SeqSeqIntSeqInt2SeqCharstring2 {
  RawSeqSeqIntSeqInt2SeqCharstring2 s1,
  RawSeqSeqIntSeqInt2SeqCharstring2 s2
}
with {
  variant "COMP(2scompl)";
  variant "";
  variant ""
}

type set RawSet_SeqSeqIntSeqInt2optoptSeqCharstring2_SeqSeqIntSeqInt2optoptSeqCharstring2 {
  RawSeqIntSeqIntSeqInt2optoptSeqCharstring2 s1,
  RawSeqIntSeqIntSeqInt2optoptSeqCharstring2 s2
}
with {
  variant "COMP(2scompl)";
  variant "";
  variant ""
}

type set RawSetBasicTypes {
  boolean b,
  //NULL n,
  integer i,
  RawEnum e,
  charstring r,
  bitstring bs,
  octetstring os
}
with {
  variant "COMP(2scompl)";
  variant "";
  variant ""
}

type set RawSetEnum { RawEnum e }
with {
  variant "COMP(2scompl)";
  variant "";
  variant ""
}

//4. Set of
type set of boolean RawSetOfBool
with {
  variant "COMP(2scompl)"
}
type record RawSetOfBoolBogus { boolean b, int32 i }
with {
  variant "COMP(2scompl)"
}

// There is no such type as NULL:
//type record of NULL RawSeqOfNull;
type set of integer RawSetOfInt
with {
  //variant ([-]) "COMP(2scompl)";
  //variant ([-]) "FIELDLENGTH(32)";
  variant ""
};

type set of integer RawSetOfInt32
with {
  variant ([-]) "COMP(2scompl)";
  variant ([-]) "FIELDLENGTH(32)";
  variant ""
};

type set of RawEnum RawSetOfRawEnum
with {
  variant "COMP(2scompl)";
  variant "";
  variant ""
};
type set of charstring RawSetOfCharstring
with {
  variant "COMP(2scompl)";
  variant "";
  variant ""
};
type set of bitstring RawSetOfBitStr
with {
  variant "COMP(2scompl)";
  variant "";
  variant ""
};
type set of octetstring RawSetOfOctStr
with {
  variant "COMP(2scompl)";
  variant "";
  variant ""
};

type set of RawUnionBasicTypes RawSetOfRawUnionBT
with {
  variant "";
  variant ""
};

type set of RawUnionBasicTypes32 RawSetOfRawUnionBT32
with {
  variant "";
  variant ""
};

type set of RawSeqSeqIntSeqInt2SeqCharstring2 RawSetOfSeqSeqIntSeqInt2SeqCharstring2
with {
  variant "COMP(2scompl)";
  variant "";
  variant ""
};
type set of RawSeqIntSeqIntSeqInt2optoptSeqCharstring2 RawSetOfRawSeqIntSeqIntSeqInt2optoptSeqCharstring2
with {
  variant "COMP(2scompl)";
  variant "";
  variant ""
};

//5.choice (union)
type union RawUnionBasicTypes {
  boolean b,
  integer i,
  RawEnum e,
  charstring r,
  bitstring bs,
  octetstring os
}
with {
  variant ""
}

type union RawUnionBasicTypes32 {
  boolean b,
  integer i,
  RawEnum e,
  charstring r,
  bitstring bs,
  octetstring os
}
with {
  variant (i) "FIELDLENGTH(32)"
}

//Tagged version:
type union RawUnionBasicTypesT {
  boolean b,
  integer i,
  RawEnum e,
  charstring r,
  bitstring bs,
  octetstring os
}
with {
  variant "";
  variant "";
  variant ""
}

type union RawUnionComplexTypes {
  RawUnionBasicTypes u,
  //RawSeqIntSeqCharstring2 s,
  RawSeqOfCharstring  sofcharstring
}
with {
  variant "";
  variant "";
  variant ""
}


}
with {
  encode "RAW"
}
