public locationCoordinates_r10_Type Decode(BitArrayInputStream input) { int nBits; locationCoordinates_r10_Type type = new locationCoordinates_r10_Type(); type.InitDefaults(); bool flag = input.ReadBit() != 0; switch (input.ReadBits(3)) { case 0: nBits = input.ReadBits(8); type.ellipsoid_Point_r10 = input.readOctetString(nBits); return type; case 1: nBits = input.ReadBits(8); type.ellipsoidPointWithAltitude_r10 = input.readOctetString(nBits); return type; case 2: if (flag) { nBits = input.ReadBits(8); type.ellipsoidPointWithUncertaintyCircle_r11 = input.readOctetString(nBits); } return type; case 3: if (flag) { nBits = input.ReadBits(8); type.ellipsoidPointWithUncertaintyEllipse_r11 = input.readOctetString(nBits); } return type; case 4: if (flag) { nBits = input.ReadBits(8); type.ellipsoidPointWithAltitudeAndUncertaintyEllipsoid_r11 = input.readOctetString(nBits); } return type; case 5: if (flag) { nBits = input.ReadBits(8); type.ellipsoidArc_r11 = input.readOctetString(nBits); } return type; case 6: if (flag) { nBits = input.ReadBits(8); type.polygon_r11 = input.readOctetString(nBits); } return type; } throw new Exception(GetType().Name + ":NoChoice had been choose"); }