moved match to protected in PatternConstraint
updated version