private void updateFromPretty()

in hybrid/src/main/java/jetbrains/jetpad/hybrid/PrettyHybridProperty.java [239:272]


    private void updateFromPretty(int forceToSource) {
      PrettyPrinterContext<? super ModelT> printCtx = new PrettyPrinterContext<>(myPrinter);
      printCtx.print(myValue);
      List<Token> prettyTokens = printCtx.tokens();
      boolean forceUpdated = false;
      for (int i = 0; i < prettyTokens.size(); i++) {
        Token p = prettyTokens.get(i);
        if (i < myTokens.size() && i < mySource.size()) {
          // Token exists in both source and tokens.
          if (!Objects.equals(p, myTokens.get(i))) {
            myTokens.set(i, p);
            if (i == forceToSource) {
              forceUpdated = true;
            }
            sourceSet(i, p);
          }
        } else if (i < myTokens.size() && i >= mySource.size()) {
          // Token just appeared in tokens and doesn't exist in source.
          if (!Objects.equals(p, myTokens.get(i))) {
            myTokens.set(i, p);
          }
          if (i == forceToSource) {
            forceUpdated = true;
          }
          sourceAdd(i, p);
        } else {
          throw new IllegalStateException("A printer generated more tokens than the source");
        }
      }

      if (!forceUpdated && forceToSource < myTokens.size()) {
        sourceSet(forceToSource, myTokens.get(forceToSource));
      }
    }