public String quoteIdentifier(CharSequence ident, IdentifierQuotingStrategy strategy, IdenitfierPart idenitfierPart) {
      if(strategy == null){
         throw  new NullPointerException("strategy parameter of Dialect.quoteIdentifier must not be null  (and is null)");
      }
      if(ident == null){
         return null;
      }

      switch (strategy){
         case NEVER:
            return ident.toString();
         case WHEN_NEEDED:
            if(!identifierNeedsQuoting(ident.toString())){
               return ident.toString();
            }
         case ALWAYS:
            return quote(ident, identifierQuote, identifierQuoteReplace);
         case DEFAULT:
            strategy =
                    (IdentifierQuotingStrategy) dialectConfig.getConfig(DialectConfigKey.IDENTIFIER_QUOTING_STRATEGY);
            if(strategy == null){
               throw new InvalidConfigurationException("Default IdentifierQuotingStrategy is null in DialectConfig");
            }
            if(strategy == IdentifierQuotingStrategy.DEFAULT){
               strategy = IdentifierQuotingStrategy.WHEN_NEEDED;
            }
            return quoteIdentifier(ident, strategy, idenitfierPart);
         default:
            throw new IllegalStateException();
      }
   }