else if (tokenIs('*') || tokenIs('@') || tokenIs('/') || tokenIs('_') || (m_token!= null && Character.isLetter(m_token.charAt(0))))
else if (tokenIs('*') || tokenIs('@') || tokenIs('_') || (m_token!= null && Character.isLetter(m_token.charAt(0))))
  protected void Step() throws javax.xml.transform.TransformerException  {    int opPos = m_ops.m_opMap[OpMap.MAPINDEX_LENGTH];    if (tokenIs("."))    {      nextToken();      if (tokenIs('['))      {        error(XPATHErrorResources.ER_PREDICATE_ILLEGAL_SYNTAX, null);  //"'..[predicate]' or '.[predicate]' is illegal syntax.  Use 'self::node()[predicate]' instead.");      }      appendOp(4, OpCodes.FROM_SELF);      // Tell how long the step is without the predicate      m_ops.m_opMap[m_ops.m_opMap[OpMap.MAPINDEX_LENGTH] - 2] = 4;      m_ops.m_opMap[m_ops.m_opMap[OpMap.MAPINDEX_LENGTH] - 1] =        OpCodes.NODETYPE_NODE;    }    else if (tokenIs(".."))    {      nextToken();      appendOp(4, OpCodes.FROM_PARENT);      // Tell how long the step is without the predicate      m_ops.m_opMap[m_ops.m_opMap[OpMap.MAPINDEX_LENGTH] - 2] = 4;      m_ops.m_opMap[m_ops.m_opMap[OpMap.MAPINDEX_LENGTH] - 1] =        OpCodes.NODETYPE_NODE;    }    // There is probably a better way to test for this     // transition... but it gets real hairy if you try     // to do it in basis().    else if (tokenIs('*') || tokenIs('@') || tokenIs('/')             || tokenIs('_') || (m_token!= null && Character.isLetter(m_token.charAt(0))))    {      Basis();      while (tokenIs('['))      {        Predicate();      }      // Tell how long the entire step is.      m_ops.m_opMap[opPos + OpMap.MAPINDEX_LENGTH] =        m_ops.m_opMap[OpMap.MAPINDEX_LENGTH] - opPos;    }  }