Implement desugaring and pattern macro