public override object ReadObject(Hessian2Reader reader) { var tag = reader.ReadListStart(); switch (tag) { case Constants.Null: return(null); case Constants.VariableList: return(ReadList(reader, -1)); case Constants.VariableUnTypeList: return(ReadList(reader, -1)); case Constants.FixedList: reader.ReadType(); return(ReadList(reader, reader.ReadInt())); case Constants.FixedUnTypeList: return(ReadList(reader, reader.ReadInt())); case 0x70: case 0x71: case 0x72: case 0x73: case 0x74: case 0x75: case 0x76: case 0x77: reader.ReadType(); return(ReadList(reader, tag - 0x70)); case 0x78: case 0x79: case 0x7a: case 0x7b: case 0x7c: case 0x7d: case 0x7e: case 0x7f: return(ReadList(reader, tag - 0x78)); default: throw new HessianException($"unknown code {(char)tag} where read type {Type.FullName}"); } }