docs: public static String parseAtPathElement( Iterator<Character> iter, String dotNotationRef ) {
  
          if ( ! iter.hasNext() ) {
              return "";
          }
  
          StringBuilder sb = new StringBuilder();
  
          // Strategy here is to walk thru the string looking for matching parenthesis.
          // '(' increments the count, while ')' decrements it
          // If we ever get negative there is a problem.
          boolean isParensAt = false;
          int atParensCount = 0;
  
          char c = iter.next();
          if ( c == '(' ) {
              isParensAt = true;
              atParensCount++;
          }
          else if ( c == '.' ) {
              throw new SpecException( "Unable to parse dotNotation, invalid TransposePathElement : " + dotNotationRef );
          }
  
          sb.append( c );
  
          while( iter.hasNext() ) {
              c = iter.next();
              sb.append( c );
  
              // Parsing "@(a.b.[&2])"
              if ( isParensAt ) {
                  if ( c == '(' ) {
                      throw new SpecException( "Unable to parse dotNotation, too many open parens '(' : " + dotNotationRef );
                  }
                  else if ( c == ')' ) {
                      atParensCount--;
                  }
  
                  if ( atParensCount == 0 ) {
                      return sb.toString();
                  }
                  else if ( atParensCount < 0 ) {
                      throw new SpecException( "Unable to parse dotNotation, specifically the '@()' part : " + dotNotationRef );
                  }
              }
              // Parsing "@abc.def, return a canonical form of "@(abc)" and leave the "def" in the iterator
              else if ( c == '.' ) {
                  return "(" + sb.toString().substring( 0, sb.length() - 1 ) + ")";
              }
          }
  
          // if we got to the end of the String and we have mismatched parenthesis throw an exception.
          if ( isParensAt && atParensCount != 0 ) {
              throw new SpecException( "Invalid @() pathElement from : " + dotNotationRef );
          }
          // Parsing "@abc"
          return sb.toString();
      }