int getTargetLabel (Node target)
        {
            int label = target.labelId ();
            if (label != -1) {
                return label;
            }
            label = itsLabelTableTop;
            if (itsLabelTable == null || label == itsLabelTable.Length) {
                if (itsLabelTable == null) {
                    itsLabelTable = new int [MIN_LABEL_TABLE_SIZE];
                }
                else {
                    int [] tmp = new int [itsLabelTable.Length * 2];
                    Array.Copy (itsLabelTable, 0, tmp, 0, label);
                    itsLabelTable = tmp;
                }
            }
            itsLabelTableTop = label + 1;
            itsLabelTable [label] = -1;

            target.labelId (label);
            return label;
        }