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