internal virtual void ConnectTo(Tube Other) { if (Endpoint != null) { throw new InvalidOperationException("Tube already connected"); } Endpoint = Other; ConnectedTo?.Invoke(this, Other); }