private Part parsePart(AsciiBuffer value) { if (value.equals(any_child_wildcard)) { return ANY_CHILD; } else if (value.equals(any_descendant_wildcard)) { return ANY_DESCENDANT; } else { if (part_pattern == null || part_pattern.matcher(value.toString()).matches()) { return new LiteralPart(value); } else { throw new PathException( String.format( "Invalid destination path part: '%s', it does not match regex: %s", value, part_pattern)); } } }