code: public static CompilationUnit parse(InputStream in, String encoding) throws ParseException {
          if (cacheParser) {
              if (parser == null) {
                  parser = new ASTParser(in, encoding);
              } else {
                  parser.reset(in, encoding);
              }
              return parser.CompilationUnit();
          }
          return new ASTParser(in, encoding).CompilationUnit();
      }
docs: Parses the Java code contained in the {@link InputStream} and returns a
  {@link CompilationUnit} that represents it.
  
  @param in
  {@link InputStream} containing Java source code
  @param encoding
  encoding of the source code
  @return CompilationUnit representing the Java source code
  @throws ParseException
  if the source code has parser errors