code: private void bracketInit(BracketData bd) {
          bd.isoRunLast = 0;
          bd.isoRuns[0] = new IsoRun();
          bd.isoRuns[0].start = 0;
          bd.isoRuns[0].limit = 0;
          bd.isoRuns[0].level = GetParaLevelAt(0);
          bd.isoRuns[0].lastStrong = bd.isoRuns[0].lastBase = bd.isoRuns[0].contextDir = (byte)(GetParaLevelAt(0) & 1);
          bd.isoRuns[0].contextPos = 0;
          bd.openings = new Opening[SIMPLE_OPENINGS_COUNT];
          bd.isNumbersSpecial = reorderingMode == REORDER_NUMBERS_SPECIAL ||
                                reorderingMode == REORDER_INVERSE_FOR_NUMBERS_SPECIAL;
      }
docs: /* In the isoRuns array, the first entry is used for text outside of any
  isolate sequence.  Higher entries are used for each more deeply nested
  isolate sequence. isoRunLast is the index of the last used entry.  The
  openings array is used to note the data of opening brackets not yet
  matched by a closing bracket, or matched but still susceptible to change
  level.
  Each isoRun entry contains the index of the first and
  one-after-last openings entries for pending opening brackets it
  contains.  The next openings entry to use is the one-after-last of the
  most deeply nested isoRun entry.
  isoRun entries also contain their current embedding level and the last
  encountered strong character, since these will be needed to resolve
  the level of paired brackets.