// Path: src/main/java/tk/skuro/idea/orgmode/OrgLanguage.java
// public final class OrgLanguage extends Language {
// 
//     public static final String ORG_LANGUAGE_ID = "OrgMode";
//     // see: http://lists.gnu.org/archive/html/emacs-diffs/2011-01/msg00290.html
//     public static final String ORG_LANGUAGE_MIME_TYPE = "text/x-org";
// 
//     public static final OrgLanguage INSTANCE = new OrgLanguage();
// 
//     private OrgLanguage() {
//         super(OrgLanguage.ORG_LANGUAGE_ID, OrgLanguage.ORG_LANGUAGE_MIME_TYPE);
//     }
// }
// 
// Path: src/main/java/tk/skuro/idea/orgmode/psi/OrgFileImpl.java
// public class OrgFileImpl extends PsiFileBase {
// 
//     public OrgFileImpl(@NotNull FileViewProvider fileViewProvider) {
//         super(fileViewProvider, OrgLanguage.INSTANCE);
//     }
// 
//     @NotNull
//     @Override
//     public FileType getFileType() {
//         return OrgFileType.INSTANCE;
//     }
// }
// 
// Path: src/main/java/tk/skuro/idea/orgmode/psi/OrgPsiElementImpl.java
// public class OrgPsiElementImpl extends ASTWrapperPsiElement {
//     public OrgPsiElementImpl(@org.jetbrains.annotations.NotNull ASTNode astNode) {
//         super(astNode);
//     }
// }


import tk.skuro.idea.orgmode.OrgLanguage;
import tk.skuro.idea.orgmode.psi.OrgFileImpl;
import tk.skuro.idea.orgmode.psi.OrgPsiElementImpl;
import org.jetbrains.annotations.NotNull;
import com.intellij.lang.ASTNode;
import com.intellij.lang.ParserDefinition;
import com.intellij.lang.PsiParser;
import com.intellij.lexer.EmptyLexer;
import com.intellij.lexer.Lexer;
import com.intellij.openapi.project.Project;
import com.intellij.psi.FileViewProvider;
import com.intellij.psi.PsiElement;
import com.intellij.psi.PsiFile;
import com.intellij.psi.tree.IFileElementType;
import com.intellij.psi.tree.IStubFileElementType;
import com.intellij.psi.tree.TokenSet;
     * Get the set of token types which are treated as comments by the PSI builder.
     *
     * @return {@link TokenSet#EMPTY}
     */
    @NotNull
    @Override
    public TokenSet getCommentTokens() {
        return TokenSet.create(OrgTokenTypes.COMMENT);
    }

    /**
     * Get the set of element types which are treated as string literals.
     *
     * @return {@link TokenSet#EMPTY}
     */
    @NotNull
    @Override
    public TokenSet getStringLiteralElements() {
        return TokenSet.EMPTY;
    }

    /**
     * Create a PSI element for the specified AST node.
     *
     * @param astNode the AST node.
     * @return the PSI element matching the element type of the AST node.
     */
    @NotNull
    @Override
    public PsiElement createElement(ASTNode astNode) {
// Path: src/main/java/tk/skuro/idea/orgmode/OrgLanguage.java
// public final class OrgLanguage extends Language {
// 
//     public static final String ORG_LANGUAGE_ID = "OrgMode";
//     // see: http://lists.gnu.org/archive/html/emacs-diffs/2011-01/msg00290.html
//     public static final String ORG_LANGUAGE_MIME_TYPE = "text/x-org";
// 
//     public static final OrgLanguage INSTANCE = new OrgLanguage();
// 
//     private OrgLanguage() {
//         super(OrgLanguage.ORG_LANGUAGE_ID, OrgLanguage.ORG_LANGUAGE_MIME_TYPE);
//     }
// }
// 
// Path: src/main/java/tk/skuro/idea/orgmode/psi/OrgFileImpl.java
// public class OrgFileImpl extends PsiFileBase {
// 
//     public OrgFileImpl(@NotNull FileViewProvider fileViewProvider) {
//         super(fileViewProvider, OrgLanguage.INSTANCE);
//     }
// 
//     @NotNull
//     @Override
//     public FileType getFileType() {
//         return OrgFileType.INSTANCE;
//     }
// }
// 
// Path: src/main/java/tk/skuro/idea/orgmode/psi/OrgPsiElementImpl.java
// public class OrgPsiElementImpl extends ASTWrapperPsiElement {
//     public OrgPsiElementImpl(@org.jetbrains.annotations.NotNull ASTNode astNode) {
//         super(astNode);
//     }
// }


// Path: src/main/java/tk/skuro/idea/orgmode/parser/OrgParserDefinition.java
import tk.skuro.idea.orgmode.OrgLanguage;
import tk.skuro.idea.orgmode.psi.OrgFileImpl;
import tk.skuro.idea.orgmode.psi.OrgPsiElementImpl;
import org.jetbrains.annotations.NotNull;
import com.intellij.lang.ASTNode;
import com.intellij.lang.ParserDefinition;
import com.intellij.lang.PsiParser;
import com.intellij.lexer.EmptyLexer;
import com.intellij.lexer.Lexer;
import com.intellij.openapi.project.Project;
import com.intellij.psi.FileViewProvider;
import com.intellij.psi.PsiElement;
import com.intellij.psi.PsiFile;
import com.intellij.psi.tree.IFileElementType;
import com.intellij.psi.tree.IStubFileElementType;
import com.intellij.psi.tree.TokenSet;

     * Get the set of token types which are treated as comments by the PSI builder.
     *
     * @return {@link TokenSet#EMPTY}
     */
    @NotNull
    @Override
    public TokenSet getCommentTokens() {
        return TokenSet.create(OrgTokenTypes.COMMENT);
    }

    /**
     * Get the set of element types which are treated as string literals.
     *
     * @return {@link TokenSet#EMPTY}
     */
    @NotNull
    @Override
    public TokenSet getStringLiteralElements() {
        return TokenSet.EMPTY;
    }

    /**
     * Create a PSI element for the specified AST node.
     *
     * @param astNode the AST node.
     * @return the PSI element matching the element type of the AST node.
     */
    @NotNull
    @Override
    public PsiElement createElement(ASTNode astNode) {
        return new OrgPsiElementImpl(astNode);