Primarily used by editor transaction stack to avoid corruption when object is changed outside of the builder API. Generally discouraged for direct use otherwise as it can be expensive and builder API should manage internal cache state directly.