// Copy constructor
 public override CMultimediaLink CopyConstructor()
 {
     CMultimediaLinkXref ml = new CMultimediaLinkXref( Gedcom );
     ml.m_xref = m_xref;
     ml.m_sAsid = m_sAsid;
     return ml;
 }
        // Parser
        public static new CMultimediaLinkXref Parse( CGedcom gedcom, int level )
        {
            CGedcomLine line;

            // Temporary holders for class members. Saves constructing a class early.
            string xref;
            string asid = "";

            // There must be one of these, it defines the object.
            if ((line = gedcom.GetLine(level, "OBJE")) == null)
            {
                // Not one of us
                return null;
            }
            xref = line.LinePointer;

            // Parsing is going well enough to say that we definitely have one of these,
            // so we can adjust the gedcom now.
            gedcom.IncrementLineIndex(1);

            if( (line = gedcom.GetLine(level+1, "_ASID")) != null )
            {
                asid = line.LineItem;
                gedcom.IncrementLineIndex(1);
            }
            else if( ( line = gedcom.GetLine()).Level > level )
            {
                LogFile.TheLogFile.WriteLine( LogFile.DT_GEDCOM, LogFile.EDebugLevel.Warning, "Unknown tag :" );
                LogFile.TheLogFile.WriteLine( LogFile.DT_GEDCOM, LogFile.EDebugLevel.Warning, line.ToString() );
                gedcom.IncrementLineIndex(1);
            }

            // Parsing went ok. Construct a new object and return it.
            CMultimediaLinkXref ml = new CMultimediaLinkXref( gedcom );
            ml.m_xref = xref;
            ml.m_sAsid = asid;
            return ml;
        }