public static Map <A, Map <B, Map <C, D> > > AddOrUpdate <A, B, C, D>(this Map <A, Map <B, Map <C, D> > > self, A aKey, B bKey, C cKey, Func <D, D> Some, Func <D> None) => self.AddOrUpdate( aKey, bKey, c => c.AddOrUpdate(cKey, Some, None), () => Prelude.Map(Tuple(cKey, None())) );
public static Map <A, Map <B, Map <C, D> > > AddOrUpdate <A, B, C, D>(this Map <A, Map <B, Map <C, D> > > self, A aKey, B bKey, C cKey, D value) => self.AddOrUpdate( aKey, bKey, c => c.AddOrUpdate(cKey, _ => value, value), () => Prelude.Map(Tuple(cKey, value)) );
public static Map <A, Map <B, Map <C, Map <D, E> > > > AddOrUpdate <A, B, C, D, E>(this Map <A, Map <B, Map <C, Map <D, E> > > > self, A aKey, B bKey, C cKey, D dKey, Func <E, E> Some, Func <E> None) => self.AddOrUpdate( aKey, bKey, cKey, d => d.AddOrUpdate(dKey, Some, None), () => Prelude.Map(Tuple(dKey, None())) );
public static Map <A, Map <B, Map <C, Map <D, E> > > > AddOrUpdate <A, B, C, D, E>(this Map <A, Map <B, Map <C, Map <D, E> > > > self, A aKey, B bKey, C cKey, D dKey, E value) => self.AddOrUpdate( aKey, bKey, cKey, d => d.AddOrUpdate(dKey, _ => value, value), () => Prelude.Map(Tuple(dKey, value)) );
public static Map <A, Map <B, C> > AddOrUpdate <A, B, C>(this Map <A, Map <B, C> > self, A outerKey, B innerKey, C value) => self.AddOrUpdate( outerKey, b => b.AddOrUpdate(innerKey, _ => value, value), () => Prelude.Map(Tuple(innerKey, value)) );
public static Map <A, Map <B, C> > AddOrUpdate <A, B, C>(this Map <A, Map <B, C> > self, A outerKey, B innerKey, Func <C, C> Some, Func <C> None) => self.AddOrUpdate( outerKey, b => b.AddOrUpdate(innerKey, Some, None), () => Prelude.Map(Tuple(innerKey, None())) );