public static ComplexFragmentIonName FromLinkedIonProto(SkylineDocumentProto.Types.LinkedIon linkedIon)
        {
            ComplexFragmentIonName child;

            if (linkedIon.Orphan)
            {
                child = ORPHAN;
            }
            else
            {
                child = new ComplexFragmentIonName(DataValues.FromIonType(linkedIon.IonType), linkedIon.Ordinal);
            }

            child = child.AddLinkedIonProtos(linkedIon.Children);
            return(child);
        }
        public IEnumerable <SkylineDocumentProto.Types.LinkedIon> GetLinkedIonProtos()
        {
            foreach (var child in Children)
            {
                var proto = new SkylineDocumentProto.Types.LinkedIon()
                {
                    ModificationIndex = child.Item1.IndexAa,
                    ModificationName  = child.Item1.ModName
                };

                if (child.Item2.IsOrphan)
                {
                    proto.Orphan = true;
                }
                else
                {
                    proto.IonType = DataValues.ToIonType(child.Item2.IonType);
                    proto.Ordinal = child.Item2.Ordinal;
                }
                proto.Children.AddRange(child.Item2.GetLinkedIonProtos());
                yield return(proto);
            }
        }