@Override
 @NotNull
 public PsiDocTag[] findTagsByName(String name) {
   ArrayList<PsiDocTag> array = new ArrayList<PsiDocTag>();
   PsiDocTag[] tags = getTags();
   name = "@" + name;
   for (PsiDocTag tag : tags) {
     if (tag.getNameElement().getText().equals(name)) {
       array.add(tag);
     }
   }
   return array.toArray(new PsiDocTag[array.size()]);
 }
  @Override
  public PsiDocTag findTagByName(String name) {
    if (getFirstChildNode().getElementType() == JavaDocElementType.DOC_COMMENT) {
      if (getFirstChildNode().getText().indexOf(name) < 0) return null;
    }

    for (ASTNode child = getFirstChildNode(); child != null; child = child.getTreeNext()) {
      if (child.getElementType() == DOC_TAG) {
        PsiDocTag tag = (PsiDocTag) SourceTreeToPsiMap.treeElementToPsi(child);
        final CharSequence nameText = ((LeafElement) tag.getNameElement()).getChars();

        if (nameText.length() > 0
            && nameText.charAt(0) == '@'
            && CharArrayUtil.regionMatches(nameText, 1, name)) {
          return tag;
        }
      }
    }

    return null;
  }