How can I create, via script, a hidden subasset (ScriptableObject) that is editor-only and invisible in Project view?

I am creating an asset (ScriptableObject) that is accesible to the user at runtime, with AssetDatabase.CreateAsset. Inside this asset, I am creating a metadata sub-asset with AssetDatabase.AddObjectToAsset.
I need this object to be editor-only (not included in builds, and unavailable at runtime).

I know that if the user doesn’t reference this asset, it won’t be included in builds.
So I want to hide this subasset from Project view, so that it isn’t displayed to the user in the editor.

Problem #1: Setting hideFlags via script doesn’t seem to work with AddObjectToAsset, the sub-asset is created with m_ObjectHideFlags = 0 anyways.

If I somehow manage to set it (by manually opening the .asset file and setting that field to HideFlags.HideInHierarchy, which is value 1), then the subasset is correctly hidden in Project view. But I need a way to set this flag via script.

Edit: The serializer works, it was my mistake.

Problem #2: When the sub-asset is hidden, using AssetDatabase.LoadAssetAtPath<MySubAssetType>(mainAssetPath) returns null.

Workaround for #2: While I was typing, I found out that this code works:
AssetDatabase.LoadAllAssetsAtPath(mainAssetPath).OfType<MySubAssetType>().FirstOrDefault()
I’m leaving the solution here in case anyone needs this.

Nevermind, I figured out I had used & operator instead of | to combine the flags.
A dumb mistake of mine. ¬_¬