private static SiteInfo PublishSite(SiteInfo si) { int arrIndex = si.Offset - StorageData.SiteTypes * StorageData.StaticFields; CallSite site = si.MakeSite(); if (arrIndex < 0) { si.Field.SetValue(null, site); } else { lock (StorageData.SiteLockObj) { ((CallSite[])si.Field.GetValue(null))[arrIndex] = site; } } return(si); }