static Red MakeRed(object key, object val, Node left, Node right) { if (left == null && right == null) { if (val == null) return new Red(key); return new RedVal(key, val); } if (val == null) return new RedBranch(key, left, right); return new RedBranchVal(key, val, left, right); }