public static HMap <A, HMap <B, HMap <C, T> > > AddOrUpdate <A, B, C, T>(this HMap <A, HMap <B, HMap <C, T> > > self, A aKey, B bKey, C cKey, Func <T, T> Some, Func <T> None) => self.AddOrUpdate( aKey, bKey, c => c.AddOrUpdate(cKey, Some, None), () => Prelude.HashMap(Tuple(cKey, None())) );
public static HMap <A, HMap <B, HMap <C, T> > > AddOrUpdate <A, B, C, T>(this HMap <A, HMap <B, HMap <C, T> > > self, A aKey, B bKey, C cKey, T value) => self.AddOrUpdate( aKey, bKey, c => c.AddOrUpdate(cKey, _ => value, value), () => Prelude.HashMap(Tuple(cKey, value)) );
public static HMap <A, HMap <B, T> > AddOrUpdate <A, B, T>(this HMap <A, HMap <B, T> > self, A outerKey, B innerKey, T value) => self.AddOrUpdate( outerKey, b => b.AddOrUpdate(innerKey, _ => value, value), () => Prelude.HashMap(Tuple(innerKey, value)) );
public static HMap <A, HMap <B, T> > AddOrUpdate <A, B, T>(this HMap <A, HMap <B, T> > self, A outerKey, B innerKey, Func <T, T> Some, Func <T> None) => self.AddOrUpdate( outerKey, b => b.AddOrUpdate(innerKey, Some, None), () => Prelude.HashMap(Tuple(innerKey, None())) );