// This is a generated file. Not intended for manual editing.
package com.jetbrains.python.requirements.psi;

import com.intellij.psi.tree.IElementType;
import com.intellij.psi.PsiElement;
import com.intellij.lang.ASTNode;
import com.jetbrains.python.requirements.psi.impl.*;

public interface RequirementsTypes {

  IElementType AUTHORITY = new RequirementsElementType("AUTHORITY");
  IElementType BINARY_LIST = new RequirementsElementType("BINARY_LIST");
  IElementType CONSTRAINT_REQ = new RequirementsElementType("CONSTRAINT_REQ");
  IElementType DEC_OCTET = new RequirementsElementType("DEC_OCTET");
  IElementType EDITABLE_REQ = new RequirementsElementType("EDITABLE_REQ");
  IElementType ENV_VARIABLE = new RequirementsElementType("ENV_VARIABLE");
  IElementType EXTRAS = new RequirementsElementType("EXTRAS");
  IElementType EXTRAS_LIST = new RequirementsElementType("EXTRAS_LIST");
  IElementType EXTRA_INDEX_URL_REQ = new RequirementsElementType("EXTRA_INDEX_URL_REQ");
  IElementType FIND_LINKS_REQ = new RequirementsElementType("FIND_LINKS_REQ");
  IElementType FRAGMENT = new RequirementsElementType("FRAGMENT");
  IElementType HASH_OPTION = new RequirementsElementType("HASH_OPTION");
  IElementType HEXDIG = new RequirementsElementType("HEXDIG");
  IElementType HIER_PART = new RequirementsElementType("HIER_PART");
  IElementType HOST = new RequirementsElementType("HOST");
  IElementType H_16 = new RequirementsElementType("H_16");
  IElementType H_16_COLON = new RequirementsElementType("H_16_COLON");
  IElementType INDEX_URL_REQ = new RequirementsElementType("INDEX_URL_REQ");
  IElementType IP_LITERAL = new RequirementsElementType("IP_LITERAL");
  IElementType I_PV_4_ADDRESS = new RequirementsElementType("I_PV_4_ADDRESS");
  IElementType I_PV_6_ADDRESS = new RequirementsElementType("I_PV_6_ADDRESS");
  IElementType I_PV_FUTURE = new RequirementsElementType("I_PV_FUTURE");
  IElementType LS_32 = new RequirementsElementType("LS_32");
  IElementType MARKER_AND = new RequirementsElementType("MARKER_AND");
  IElementType MARKER_EXPR = new RequirementsElementType("MARKER_EXPR");
  IElementType MARKER_OP = new RequirementsElementType("MARKER_OP");
  IElementType MARKER_OR = new RequirementsElementType("MARKER_OR");
  IElementType MARKER_VAR = new RequirementsElementType("MARKER_VAR");
  IElementType NAME_REQ = new RequirementsElementType("NAME_REQ");
  IElementType NO_BINARY_REQ = new RequirementsElementType("NO_BINARY_REQ");
  IElementType NO_INDEX_REQ = new RequirementsElementType("NO_INDEX_REQ");
  IElementType NZ = new RequirementsElementType("NZ");
  IElementType ONLY_BINARY_REQ = new RequirementsElementType("ONLY_BINARY_REQ");
  IElementType OPTION = new RequirementsElementType("OPTION");
  IElementType PATH_ABEMPTY = new RequirementsElementType("PATH_ABEMPTY");
  IElementType PATH_ABSOLUTE = new RequirementsElementType("PATH_ABSOLUTE");
  IElementType PATH_EMPTY = new RequirementsElementType("PATH_EMPTY");
  IElementType PATH_NOSCHEME = new RequirementsElementType("PATH_NOSCHEME");
  IElementType PATH_REQ = new RequirementsElementType("PATH_REQ");
  IElementType PATH_ROOTLESS = new RequirementsElementType("PATH_ROOTLESS");
  IElementType PCHAR = new RequirementsElementType("PCHAR");
  IElementType PCT_ENCODED = new RequirementsElementType("PCT_ENCODED");
  IElementType PORT = new RequirementsElementType("PORT");
  IElementType PREFER_BINARY_REQ = new RequirementsElementType("PREFER_BINARY_REQ");
  IElementType PRE_REQ = new RequirementsElementType("PRE_REQ");
  IElementType PYTHON_STR = new RequirementsElementType("PYTHON_STR");
  IElementType QUERY = new RequirementsElementType("QUERY");
  IElementType QUOTED_MARKER = new RequirementsElementType("QUOTED_MARKER");
  IElementType REFER_REQ = new RequirementsElementType("REFER_REQ");
  IElementType REG_NAME = new RequirementsElementType("REG_NAME");
  IElementType RELATIVE_PART = new RequirementsElementType("RELATIVE_PART");
  IElementType RELATIVE_REF = new RequirementsElementType("RELATIVE_REF");
  IElementType REQUIRE_HASHES_REQ = new RequirementsElementType("REQUIRE_HASHES_REQ");
  IElementType SCHEME = new RequirementsElementType("SCHEME");
  IElementType SEGMENT = new RequirementsElementType("SEGMENT");
  IElementType SEGMENT_NZ = new RequirementsElementType("SEGMENT_NZ");
  IElementType SEGMENT_NZ_NC = new RequirementsElementType("SEGMENT_NZ_NC");
  IElementType SIMPLE_NAME = new RequirementsElementType("SIMPLE_NAME");
  IElementType TRUSTED_HOST_REQ = new RequirementsElementType("TRUSTED_HOST_REQ");
  IElementType UNRESERVED = new RequirementsElementType("UNRESERVED");
  IElementType URI = new RequirementsElementType("URI");
  IElementType URI_REFERENCE = new RequirementsElementType("URI_REFERENCE");
  IElementType URLSPEC = new RequirementsElementType("URLSPEC");
  IElementType URL_REQ = new RequirementsElementType("URL_REQ");
  IElementType USERINFO = new RequirementsElementType("USERINFO");
  IElementType USE_FEATURE_REQ = new RequirementsElementType("USE_FEATURE_REQ");
  IElementType VARIABLE_NAME = new RequirementsElementType("VARIABLE_NAME");
  IElementType VERSIONSPEC = new RequirementsElementType("VERSIONSPEC");
  IElementType VERSION_CMP_STMT = new RequirementsElementType("VERSION_CMP_STMT");
  IElementType VERSION_ONE = new RequirementsElementType("VERSION_ONE");
  IElementType VERSION_STMT = new RequirementsElementType("VERSION_STMT");

  IElementType AND = new RequirementsTokenType("AND");
  IElementType AT = new RequirementsTokenType("AT");
  IElementType BINARY_ALL = new RequirementsTokenType("BINARY_ALL");
  IElementType BINARY_NONE = new RequirementsTokenType("BINARY_NONE");
  IElementType COLON = new RequirementsTokenType("COLON");
  IElementType COMMA = new RequirementsTokenType("COMMA");
  IElementType COMMENT = new RequirementsTokenType("COMMENT");
  IElementType CONSTRAINT = new RequirementsTokenType("CONSTRAINT");
  IElementType DIGIT = new RequirementsTokenType("DIGIT");
  IElementType DOLLAR_SIGN = new RequirementsTokenType("DOLLAR_SIGN");
  IElementType DOT = new RequirementsTokenType("DOT");
  IElementType DQUOTE = new RequirementsTokenType("DQUOTE");
  IElementType EDITABLE = new RequirementsTokenType("EDITABLE");
  IElementType ENV_VAR = new RequirementsTokenType("ENV_VAR");
  IElementType EOL = new RequirementsTokenType("EOL");
  IElementType EQUAL = new RequirementsTokenType("EQUAL");
  IElementType EXTRA_INDEX_URL = new RequirementsTokenType("EXTRA_INDEX_URL");
  IElementType FIND_LINKS = new RequirementsTokenType("FIND_LINKS");
  IElementType HASH = new RequirementsTokenType("HASH");
  IElementType HEX = new RequirementsTokenType("HEX");
  IElementType IDENTIFIER = new RequirementsTokenType("IDENTIFIER");
  IElementType IN = new RequirementsTokenType("IN");
  IElementType INDEX_URL = new RequirementsTokenType("INDEX_URL");
  IElementType LBRACE = new RequirementsTokenType("LBRACE");
  IElementType LETTER = new RequirementsTokenType("LETTER");
  IElementType LONG_OPTION = new RequirementsTokenType("LONG_OPTION");
  IElementType LPARENTHESIS = new RequirementsTokenType("LPARENTHESIS");
  IElementType LSBRACE = new RequirementsTokenType("LSBRACE");
  IElementType MINUS = new RequirementsTokenType("MINUS");
  IElementType NOT = new RequirementsTokenType("NOT");
  IElementType NO_BINARY = new RequirementsTokenType("NO_BINARY");
  IElementType NO_INDEX = new RequirementsTokenType("NO_INDEX");
  IElementType ONLY_BINARY = new RequirementsTokenType("ONLY_BINARY");
  IElementType OR = new RequirementsTokenType("OR");
  IElementType PERCENT_SIGN = new RequirementsTokenType("PERCENT_SIGN");
  IElementType PLUS = new RequirementsTokenType("PLUS");
  IElementType PRE = new RequirementsTokenType("PRE");
  IElementType PREFER_BINARY = new RequirementsTokenType("PREFER_BINARY");
  IElementType PYTHON_STR_C = new RequirementsTokenType("PYTHON_STR_C");
  IElementType QUESTION_MARK = new RequirementsTokenType("QUESTION_MARK");
  IElementType RBRACE = new RequirementsTokenType("RBRACE");
  IElementType REFER = new RequirementsTokenType("REFER");
  IElementType REQUIRE_HASHES = new RequirementsTokenType("REQUIRE_HASHES");
  IElementType RPARENTHESIS = new RequirementsTokenType("RPARENTHESIS");
  IElementType RSBRACE = new RequirementsTokenType("RSBRACE");
  IElementType SEMICOLON = new RequirementsTokenType("SEMICOLON");
  IElementType SHARP = new RequirementsTokenType("SHARP");
  IElementType SHORT_OPTION = new RequirementsTokenType("SHORT_OPTION");
  IElementType SLASH = new RequirementsTokenType("SLASH");
  IElementType SQUOTE = new RequirementsTokenType("SQUOTE");
  IElementType SUB_DELIMS = new RequirementsTokenType("SUB_DELIMS");
  IElementType TILDA = new RequirementsTokenType("TILDA");
  IElementType TRUSTED_HOST = new RequirementsTokenType("TRUSTED_HOST");
  IElementType UNDERSCORE = new RequirementsTokenType("UNDERSCORE");
  IElementType USE_FEATURE = new RequirementsTokenType("USE_FEATURE");
  IElementType VERSION = new RequirementsTokenType("VERSION");
  IElementType VERSION_CMP = new RequirementsTokenType("VERSION_CMP");

  class Factory {
    public static PsiElement createElement(ASTNode node) {
      IElementType type = node.getElementType();
      if (type == AUTHORITY) {
        return new AuthorityImpl(node);
      }
      else if (type == BINARY_LIST) {
        return new BinaryListImpl(node);
      }
      else if (type == CONSTRAINT_REQ) {
        return new ConstraintReqImpl(node);
      }
      else if (type == DEC_OCTET) {
        return new DecOctetImpl(node);
      }
      else if (type == EDITABLE_REQ) {
        return new EditableReqImpl(node);
      }
      else if (type == ENV_VARIABLE) {
        return new EnvVariableImpl(node);
      }
      else if (type == EXTRAS) {
        return new ExtrasImpl(node);
      }
      else if (type == EXTRAS_LIST) {
        return new ExtrasListImpl(node);
      }
      else if (type == EXTRA_INDEX_URL_REQ) {
        return new ExtraIndexUrlReqImpl(node);
      }
      else if (type == FIND_LINKS_REQ) {
        return new FindLinksReqImpl(node);
      }
      else if (type == FRAGMENT) {
        return new FragmentImpl(node);
      }
      else if (type == HASH_OPTION) {
        return new HashOptionImpl(node);
      }
      else if (type == HEXDIG) {
        return new HexdigImpl(node);
      }
      else if (type == HIER_PART) {
        return new HierPartImpl(node);
      }
      else if (type == HOST) {
        return new HostImpl(node);
      }
      else if (type == H_16) {
        return new H16Impl(node);
      }
      else if (type == H_16_COLON) {
        return new H16ColonImpl(node);
      }
      else if (type == INDEX_URL_REQ) {
        return new IndexUrlReqImpl(node);
      }
      else if (type == IP_LITERAL) {
        return new IPLiteralImpl(node);
      }
      else if (type == I_PV_4_ADDRESS) {
        return new IPv4AddressImpl(node);
      }
      else if (type == I_PV_6_ADDRESS) {
        return new IPv6AddressImpl(node);
      }
      else if (type == I_PV_FUTURE) {
        return new IPvFutureImpl(node);
      }
      else if (type == LS_32) {
        return new Ls32Impl(node);
      }
      else if (type == MARKER_AND) {
        return new MarkerAndImpl(node);
      }
      else if (type == MARKER_EXPR) {
        return new MarkerExprImpl(node);
      }
      else if (type == MARKER_OP) {
        return new MarkerOpImpl(node);
      }
      else if (type == MARKER_OR) {
        return new MarkerOrImpl(node);
      }
      else if (type == MARKER_VAR) {
        return new MarkerVarImpl(node);
      }
      else if (type == NAME_REQ) {
        return new NameReqImpl(node);
      }
      else if (type == NO_BINARY_REQ) {
        return new NoBinaryReqImpl(node);
      }
      else if (type == NO_INDEX_REQ) {
        return new NoIndexReqImpl(node);
      }
      else if (type == NZ) {
        return new NzImpl(node);
      }
      else if (type == ONLY_BINARY_REQ) {
        return new OnlyBinaryReqImpl(node);
      }
      else if (type == OPTION) {
        return new OptionImpl(node);
      }
      else if (type == PATH_ABEMPTY) {
        return new PathAbemptyImpl(node);
      }
      else if (type == PATH_ABSOLUTE) {
        return new PathAbsoluteImpl(node);
      }
      else if (type == PATH_EMPTY) {
        return new PathEmptyImpl(node);
      }
      else if (type == PATH_NOSCHEME) {
        return new PathNoschemeImpl(node);
      }
      else if (type == PATH_REQ) {
        return new PathReqImpl(node);
      }
      else if (type == PATH_ROOTLESS) {
        return new PathRootlessImpl(node);
      }
      else if (type == PCHAR) {
        return new PcharImpl(node);
      }
      else if (type == PCT_ENCODED) {
        return new PctEncodedImpl(node);
      }
      else if (type == PORT) {
        return new PortImpl(node);
      }
      else if (type == PREFER_BINARY_REQ) {
        return new PreferBinaryReqImpl(node);
      }
      else if (type == PRE_REQ) {
        return new PreReqImpl(node);
      }
      else if (type == PYTHON_STR) {
        return new PythonStrImpl(node);
      }
      else if (type == QUERY) {
        return new QueryImpl(node);
      }
      else if (type == QUOTED_MARKER) {
        return new QuotedMarkerImpl(node);
      }
      else if (type == REFER_REQ) {
        return new ReferReqImpl(node);
      }
      else if (type == REG_NAME) {
        return new RegNameImpl(node);
      }
      else if (type == RELATIVE_PART) {
        return new RelativePartImpl(node);
      }
      else if (type == RELATIVE_REF) {
        return new RelativeRefImpl(node);
      }
      else if (type == REQUIRE_HASHES_REQ) {
        return new RequireHashesReqImpl(node);
      }
      else if (type == SCHEME) {
        return new SchemeImpl(node);
      }
      else if (type == SEGMENT) {
        return new SegmentImpl(node);
      }
      else if (type == SEGMENT_NZ) {
        return new SegmentNzImpl(node);
      }
      else if (type == SEGMENT_NZ_NC) {
        return new SegmentNzNcImpl(node);
      }
      else if (type == SIMPLE_NAME) {
        return new SimpleNameImpl(node);
      }
      else if (type == TRUSTED_HOST_REQ) {
        return new TrustedHostReqImpl(node);
      }
      else if (type == UNRESERVED) {
        return new UnreservedImpl(node);
      }
      else if (type == URI) {
        return new UriImpl(node);
      }
      else if (type == URI_REFERENCE) {
        return new UriReferenceImpl(node);
      }
      else if (type == URLSPEC) {
        return new UrlspecImpl(node);
      }
      else if (type == URL_REQ) {
        return new UrlReqImpl(node);
      }
      else if (type == USERINFO) {
        return new UserinfoImpl(node);
      }
      else if (type == USE_FEATURE_REQ) {
        return new UseFeatureReqImpl(node);
      }
      else if (type == VARIABLE_NAME) {
        return new VariableNameImpl(node);
      }
      else if (type == VERSIONSPEC) {
        return new VersionspecImpl(node);
      }
      else if (type == VERSION_CMP_STMT) {
        return new VersionCmpStmtImpl(node);
      }
      else if (type == VERSION_ONE) {
        return new VersionOneImpl(node);
      }
      else if (type == VERSION_STMT) {
        return new VersionStmtImpl(node);
      }
      throw new AssertionError("Unknown element type: " + type);
    }
  }
}
