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; }