immutable queue c#