Custom Editor changes value of other scripts

I have a custom editor that changes some properties of my object lets call it MainNode. MainNode has references to other objects, let us call them nodes. When inspector finds out that change was made it calls function of MainNode like target.OnColorParamChange(), which edits values of nodes. Problem is that those changes are not marked as dirty. I can set them dirty by calling

EditorUtility.SetDirty(node) 

but I don’t want to call it in all functions.

Also marking whole scene dirty does not work on those nodes

if(paramContainer.IsDataChangedThisFrame()) {
    EditorSceneManager.MarkSceneDirty(taget.gameObject.scene);
}

MainNode Also uses Undo

Undo.RecordObject(base.target as Object,"Recorded");

Those nodes are serialized also when i open unity editor select MainNode on scene and click apply changes to prefab

PS: When i remove prefab of gameobject with MainNode script from assets, It is serialized properly with all changes made to nodes. Unity 5.6.1f1

You may find that you run into less issues if you write your custom editor code to deal with the SerializedObject and its SerializedProperties directly.