internal override SktObjectList CreateObjectList(uint classId)
 {
     SktObjectList newList;
     switch (classId)
     {
     case  19 : newList = new SktParticipant.List(); break;
     case  10 : newList = new SktContactGroup.List(); break;
     case  11 : newList = new SktVideo.List(); break;
     case   9 : newList = new SktMessage.List(); break;
     case   7 : newList = new SktVoicemail.List(); break;
     case   6 : newList = new SktTransfer.List(); break;
     case   2 : newList = new SktContact.List(); break;
     case  18 : newList = new SktConversation.List(); break;
     case   1 : newList = new SktContactSearch.List(); break;
     case  12 : newList = new SktSms.List(); break;
     case   5 : newList = new SktAccount.List(); break;
     default: skypeRef.Error(String.Format("Attempt to construct a list object with invalid class ID {0}", classId)); return null;
     }
     return newList;
 }
        /**  For myself participant returns a list of attached send videos. For non-myself - list of recv videos.

        @returns videos
         */
        public SktVideo.List GetLiveSessionVideos()
        {
            if (skypeRef.logging) skypeRef.Log("Executing Participant.GetLiveSessionVideos");
            uint RequestId = skypeRef.encoder.AddMethodHeader(ClassId, 145, OID);
            SktVideo.List videos = new SktVideo.List(); // We always guarantee non-null list is returned
            skypeRef.transport.SubmitMethodRequest (RequestId);
            int argNr, marker;
            do
            {
            marker = (char)skypeRef.transport.ReadByte();
            if (marker != 'z')
            {
                if (marker == 'N') skypeRef.Error("SktParticipant.GetLiveSessionVideos failed.");
                argNr = (char)skypeRef.transport.ReadByte();
                switch (argNr)
                {
                    case 1:
                        videos = (SktVideo.List)skypeRef.decoder.DecodeObjectList(11);
                        break;
                    case 'z': marker = argNr; break; // exiting the arg loop if the method failed
                    default:
                        skypeRef.Error(String.Format("Got unexpected response argument {0} from runtime in SktParticipant.GetLiveSessionVideos", argNr));
                        break;
                }
            }
            } while (marker != 'z');
            skypeRef.transport.ResumeSocketReaderFromMethod();
            return videos;
        }