in sources/frontend/plain/yaml-psi/src/org/jetbrains/yaml/psi/impl/YAMLBlockMappingImpl.java [56:97]
protected void addNewKey(@NotNull YAMLKeyValue key) {
final int indent = YAMLUtil.getIndentToThisElement(this);
ASTNode node = getNode();
ASTNode place = node.getLastChildNode();
ASTNode whereInsert = null;
while(place != null) {
if(place.getElementType() == YAMLTokenTypes.INDENT && place.getTextLength() == indent) {
whereInsert = place;
}
else if (place.getElementType() == YAMLTokenTypes.EOL) {
ASTNode next = place.getTreeNext();
if (next == null || next.getElementType() == YAMLTokenTypes.EOL) {
whereInsert = place;
}
}
else {
break;
}
place = place.getTreePrev();
}
final YAMLElementGenerator generator = YAMLElementGenerator.getInstance(getProject());
if (whereInsert == null) {
add(generator.createEol());
if (indent != 0) {
add(generator.createIndent(indent));
}
add(key);
return;
}
PsiElement anchor = whereInsert.getPsi();
if (indent == 0 || whereInsert.getElementType() == YAMLTokenTypes.INDENT && getLastChild().getTextLength() == indent) {
addAfter(key, anchor);
return;
}
if (whereInsert.getElementType() != YAMLTokenTypes.EOL) {
anchor = addAfter(generator.createEol(), anchor);
}
addAfter(generator.createIndent(indent), anchor);
addAfter(key, anchor);
}