code: private void bracketAddOpening(BracketData bd, char match, int position) {
          IsoRun pLastIsoRun = bd.isoRuns[bd.isoRunLast];
          Opening pOpening;
          if (pLastIsoRun.limit >= bd.openings.length) {  /* no available new entry */
              Opening[] saveOpenings = bd.openings;
              int count;
              try {
                  count = bd.openings.length;
                  bd.openings = new Opening[count * 2];
              } catch (Exception e) {
                  throw new OutOfMemoryError("Failed to allocate memory for openings");
              }
              System.arraycopy(saveOpenings, 0, bd.openings, 0, count);
          }
          pOpening = bd.openings[pLastIsoRun.limit];
          if (pOpening == null)
              pOpening = bd.openings[pLastIsoRun.limit]= new Opening();
          pOpening.position = position;
          pOpening.match = match;
          pOpening.contextDir = pLastIsoRun.contextDir;
          pOpening.contextPos = pLastIsoRun.contextPos;
          pOpening.flags = 0;
          pLastIsoRun.limit++;
      }
docs: /* newly found opening bracket: create an openings entry