question: private UnicodeSet applyPropertyPattern ( String pattern , ParsePosition ppos , SymbolTable symbols ) { int pos = ppos . getIndex ( ) ; if ( ( pos + 5 ) > pattern . length ( ) ) { return null ; } boolean posix = false ; boolean isName = false ; boolean invert = false ; if ( pattern . regionMatches ( pos , "[:" , 0 , 2 ) ) { posix = true ; pos = Utility . skipWhitespace ( pattern , pos + 2 ) ; if ( pos < pattern . length ( ) && pattern . charAt ( pos ) == '^' ) { ++ pos ; invert = true ; } } else if ( pattern . regionMatches ( true , pos , "\\p" , 0 , 2 ) || pattern . regionMatches ( pos , "\\N" , 0 , 2 ) ) { char c = pattern . charAt ( pos + 1 ) ; invert = ( c == 'P' ) ; isName = ( c == 'N' ) ; pos = Utility . skipWhitespace ( pattern , pos + 2 ) ; if ( pos == pattern . length ( ) || pattern . charAt ( pos ++ ) != '{' ) { return null ; } } else { return null ; } int close = pattern . indexOf ( posix ? ":]" : "}" , pos ) ; if ( close < 0 ) { return null ; } int equals = pattern . indexOf ( '=' , pos ) ; String propName , valueName ; if ( equals >= 0 && equals < close && ! isName ) { propName = pattern . substring ( pos , equals ) ; valueName = pattern . substring ( equals + 1 , close ) ; } else { propName = pattern . substring ( pos , close ) ; valueName = "" ; if ( isName ) { valueName = propName ; propName = "na" ; } } applyPropertyAlias ( propName , valueName , symbols ) ; if ( invert ) { complement ( ) ; } ppos . setIndex ( close + ( posix ? 2 : 1 ) ) ; return this ; }
target:  Parse the given property pattern at the given parse position.