use available_externally linkage for cross-crate inlined functions
make CrateContext fields private