private void ProcessBondAtomIDs(int pos, NewBondInfo newBondInfo)
        {
            var line      = input.ReadLine();
            int bondIndex = 0;

            while (line != null)
            {
                if (line.IndexOf('}') != -1)
                {
                    // done
                    return;
                }
                else
                {
                    var id   = GetValue(line);
                    var atom = (IAtom)atomIDs[id];
                    if (atom == null)
                    {
                        throw new CDKException($"File is corrupt: atom ID does not exist {id}");
                    }
                    newBondInfo.Set(bondIndex, pos, atom);
                    bondIndex++;
                }
                line = input.ReadLine();
            }
        }
        private void ProcessBondBlock()
        {
            string line        = input.ReadLine();
            var    newBondInfo = new NewBondInfo();

            while (line != null)
            {
                if (line.IndexOf('{') != -1)
                {
                    ProcessBondBlockBlock(line, newBondInfo);
                }
                else if (line.IndexOf('}') != -1)
                {
                    break;
                }
                else
                {
                    Trace.TraceWarning("Skipping non-block: " + line);
                }
                line = input.ReadLine();
            }
            foreach (var info in newBondInfo.IndexToAtoms)
            {
                SetBondAtoms(info.Key, info.Value[0], info.Value[1]);
            }
        }
        private void ProcessBondBlockBlock(string line, NewBondInfo newBondInfo)
        {
            var command = GetCommand(line);

            if (string.Equals(command, "aid1", StringComparison.Ordinal))
            {
                // assume this is the first block in the atom block
                Debug.WriteLine("ASN bonds aid1 found");
                ProcessBondAtomIDs(0, newBondInfo);
            }
            else if (string.Equals(command, "aid2", StringComparison.Ordinal))
            {
                // assume this is the first block in the atom block
                Debug.WriteLine("ASN bonds aid2 found");
                ProcessBondAtomIDs(1, newBondInfo);
            }
            else
            {
                Trace.TraceWarning("Skipping atom block block: " + command);
                SkipBlock();
            }
        }