/// <inheritdoc/> public Twin GetTwin() { lock (_lock) { var twin = Twin.Clone(); // Wipe out what a client should not see... twin.Tags = null; twin.ConnectionState = null; twin.Status = null; if (twin.Properties == null) { twin.Properties = new TwinPropertiesModel(); } if (twin.Properties.Reported == null) { twin.Properties.Reported = new Dictionary <string, JToken>(); } if (twin.Properties.Desired == null) { twin.Properties.Desired = new Dictionary <string, JToken>(); } // Double clone but that is ok. return(twin.ToTwin()); } }