code: public static Iterator<String> iterator(final String clarkPath){
          return new NonNullIterator<String>(){
              int from = 0;
              @Override
              protected String findNext(){
                  if(from==clarkPath.length())
                      return null;
  
                  int searchFrom = from;
                  if(clarkPath.charAt(from)=='{'){
                      searchFrom = clarkPath.indexOf('}', from);
                      if(searchFrom==-1)
                          throw new IllegalArgumentException("no matching brace for brace at "+from);
                  }
                  int slash = clarkPath.indexOf('/', searchFrom);
                  int curFrom = from;
                  if(slash==-1){
                      from = clarkPath.length();
                      return clarkPath.substring(curFrom);
                  }else{
                      from = slash+1;
                      return clarkPath.substring(curFrom, slash);
                  }
              }
          };
      }
docs: Tokenizes given {@code clarkPath} into {@code clarkNames}.
  <p>
  {@code clarkPath} is a sequence of {@code clarkNames} separated by {@code /}.<br>
  Example:
  <pre class="prettyprint">
  {http://namespace1}elem1/{http://namespace2}elem2/{http://namespace1}elem3
  </pre>
  
  @param clarkPath clarkPath to be tokenized
  
  @return {@code String} Iterator containing the {@code clarkNames}