docs: private static void nextDotConstellation(int[] dollarPositions, int[] dotPositions, int nestingLevel) {
          if (nestingLevel == 0) {
              return;
          }
  
          int firstAssignedIdx = 0;
          while (dotPositions[firstAssignedIdx] == -1) {
              firstAssignedIdx++;
          }
  
          if (firstAssignedIdx > 0) {
              dotPositions[firstAssignedIdx] = -1;
              dotPositions[--firstAssignedIdx] = dollarPositions[firstAssignedIdx];
          } else {
              int nofAssigned = 0;
              while (firstAssignedIdx < dotPositions.length && dotPositions[firstAssignedIdx++] != -1) {
                  nofAssigned++;
              }
  
              if (nofAssigned < nestingLevel) {
                  while (firstAssignedIdx < dotPositions.length && dotPositions[firstAssignedIdx] == -1) {
                      firstAssignedIdx++;
                  }
  
                  if (firstAssignedIdx < dotPositions.length && firstAssignedIdx > 0) {
                      dotPositions[firstAssignedIdx] = -1;
                      dotPositions[--firstAssignedIdx] = dollarPositions[firstAssignedIdx];
                  }
              }
          }
      }