static Black MakeBlack(object key, object val, Node left, Node right) { if (left == null && right == null) { if (val == null) return new Black(key); return new BlackVal(key, val); } if (val == null) return new BlackBranch(key, left, right); return new BlackBranchVal(key, val, left, right); }