Add infer_pattern
Modify Pattern.Variant
Add Compiler