Why is the value type of `BasePart.AssemblyRootPart` "BasePart?" instead of "BasePart"

BaseParts must have an assembly root part,
but why is the value type BasePart? (equivalent to BasePart|nil)?

It can’t be nil, as every BasePart has its own assembly.

I can’t understand why the ValueType of AssemblyRootPart is BasePart?.
Is this just a bug, or is there something I’m not aware of?

The docs mention BaseParts could be a Terrain or SpawnLocation. Do these also have AssemblyRootParts?

Also I believe if a BasePart were part of a Model then its AssemblyRootPart would not necessarily be itself, but the AssemblyRootPart, typically PrimaryPart, of the model. But if that were to be destroyed, Id think it would revert back to this BasePart. So idk

I found the answer.
A Part’s AssemblyRootPart is set to nil before being placed in the workspace or WorldModel.

1 Like