public Cause Decode(BitArrayInputStream input) { int num4; Cause cause = new Cause(); cause.InitDefaults(); input.readBit(); switch (input.readBits(2)) { case 0: num4 = (input.readBit() == 0) ? 5 : 5; cause.radioNetwork = (CauseRadioNetwork)input.readBits(num4); return cause; case 1: num4 = 1; cause.transport = (CauseTransport)input.readBits(num4); return cause; case 2: num4 = (input.readBit() == 0) ? 3 : 3; cause.protocol = (CauseProtocol)input.readBits(num4); return cause; case 3: num4 = (input.readBit() == 0) ? 3 : 3; cause.misc = (CauseMisc)input.readBits(num4); return cause; } throw new Exception(GetType().Name + ":NoChoice had been choose"); }