code: public String [] processName (String qName, String[] parts,
                                    boolean isAttribute)
      {
          String[] name=currentContext.processName(qName, isAttribute);
          if(name==null)
              return null;
  
          // JJK: This recopying is required because processName may return
          // a cached result. I Don't Like It. *****
          System.arraycopy(name,0,parts,0,3);
          return parts;
      }
docs: Process a raw XML 1.0 name.
  
  <p>This method processes a raw XML 1.0 name in the current
  context by removing the prefix and looking it up among the
  prefixes currently declared.  The return value will be the
  array supplied by the caller, filled in as follows:</p>
  
  <dl>
  <dt>parts[0]</dt>
  <dd>The Namespace URI, or an empty string if none is
  in use.</dd>
  <dt>parts[1]</dt>
  <dd>The local name (without prefix).</dd>
  <dt>parts[2]</dt>
  <dd>The original raw name.</dd>
  </dl>
  
  <p>All of the strings in the array will be internalized.  If
  the raw name has a prefix that has not been declared, then
  the return value will be null.</p>
  
  <p>Note that attribute names are processed differently than
  element names: an unprefixed element name will received the
  default Namespace (if any), while an unprefixed element name
  will not.</p>
  
  @param qName The raw XML 1.0 name to be processed.
  @param parts A string array supplied by the caller, capable of
  holding at least three members.
  @param isAttribute A flag indicating whether this is an
  attribute name (true) or an element name (false).
  @return The supplied array holding three internalized strings
  representing the Namespace URI (or empty string), the
  local name, and the raw XML 1.0 name; or null if there
  is an undeclared prefix.
  @see #declarePrefix
  @see java.lang.String#intern