Program: 20604
Project: 20604
Buggy source:
@Override public IDocInfo getBasicDocInfo(){
  try {
    IMethod iMethod=(IMethod)tm;
    ISourceRange javadocRange=iMethod.getJavadocRange();
    if (javadocRange != null) {
      String attachedJavadoc=iMethod.getCompilationUnit().getSource().substring(javadocRange.getOffset(),javadocRange.getOffset() + javadocRange.getLength());
      attachedJavadoc=attachedJavadoc.substring(3,attachedJavadoc.length() - 2);
      StringReader rr=new StringReader(attachedJavadoc);
      BufferedReader mm=new BufferedReader(rr);
      final StringBuilder bld=new StringBuilder();
      final HashMap<String,String> mmq=new HashMap<String,String>();
      while (true) {
        try {
          String s=mm.readLine();
          if (s == null) {
            break;
          }
          int indexOf=s.indexOf('*');
          if (indexOf != -1) {
            s=s.substring(indexOf + 1);
          }
          s=s.trim();
          if (s.startsWith("String_Node_Str")) {
            if (s.startsWith(PARAM)) {
              s=s.substring(PARAM.length());
              s=s.trim();
              int p=s.indexOf(' ');
              if (p != -1) {
                String pName=s.substring(0,p).trim();
                String pVal=s.substring(p).trim();
                mmq.put(pName,pVal);
              }
            }
            if (s.startsWith(RETURN)) {
              s=s.substring(RETURN.length());
              s=s.trim();
              mmq.put(RETURN,s);
            }
            continue;
          }
          bld.append(s);
          bld.append('\n');
        }
 catch (        IOException e) {
          break;
        }
      }
      return new IDocInfo(){
        @Override public String getDocumentation(        String pName){
          return mmq.get(pName);
        }
        @Override public String getDocumentation(){
          return bld.toString().trim();
        }
        @Override public String getReturnInfo(){
          return mmq.get(RETURN);
        }
      }
;
    }
    return null;
  }
 catch (  JavaModelException e) {
    throw new IllegalStateException();
  }
}

Fixed version (ground truth):
@Override public IDocInfo getBasicDocInfo(){
  try {
    IMethod iMethod=(IMethod)tm;
    ISourceRange javadocRange=iMethod.getJavadocRange();
    if (javadocRange != null) {
      String attachedJavadoc=iMethod.getCompilationUnit().getSource().substring(javadocRange.getOffset(),javadocRange.getOffset() + javadocRange.getLength());
      attachedJavadoc=attachedJavadoc.substring(3,attachedJavadoc.length() - 2);
      StringReader rr=new StringReader(attachedJavadoc);
      BufferedReader mm=new BufferedReader(rr);
      final StringBuilder bld=new StringBuilder();
      final HashMap<String,String> mmq=new HashMap<String,String>();
      while (true) {
        try {
          String s=mm.readLine();
          if (s == null) {
            break;
          }
          int indexOf=s.indexOf('*');
          if (indexOf != -1) {
            s=s.substring(indexOf + 1);
          }
          s=s.trim();
          if (s.startsWith("String_Node_Str")) {
            if (s.startsWith(PARAM)) {
              s=s.substring(PARAM.length());
              s=s.trim();
              int p=s.indexOf(' ');
              if (p != -1) {
                String pName=s.substring(0,p).trim();
                String pVal=s.substring(p).trim();
                mmq.put(pName,pVal);
              }
            }
            if (s.startsWith(RETURN)) {
              s=s.substring(RETURN.length());
              s=s.trim();
              mmq.put(RETURN,s);
            }
            continue;
          }
          bld.append(s);
          bld.append('\n');
        }
 catch (        IOException e) {
          break;
        }
      }
      return new IDocInfo(){
        @Override public String getDocumentation(        String pName){
          return mmq.get(pName);
        }
        @Override public String getDocumentation(){
          return bld.toString().trim();
        }
        @Override public String getReturnInfo(){
          return mmq.get(RETURN);
        }
      }
;
    }
    return new IDocInfo(){
      @Override public String getReturnInfo(){
        return "String_Node_Str";
      }
      @Override public String getDocumentation(      String pName){
        return "String_Node_Str";
      }
      @Override public String getDocumentation(){
        return "String_Node_Str";
      }
    }
;
  }
 catch (  JavaModelException e) {
    throw new IllegalStateException();
  }
}