Almost infer the type of Tree correctly
More consistent handling of enum ctors