private void endIndex() {
    boolean throwExcep = false;
    IndexCreationData icd = (IndexCreationData) stack.pop();

    if (icd.getIndexType() == null) {
      throwExcep = true;
    } else {
      if (icd.getIndexType().equals(IndexType.PRIMARY_KEY)) {
        if (icd.getIndexExpression() == null) {
          throwExcep = true;
        }
      } else {
        if (icd.getIndexExpression() == null && icd.getIndexFromClause() == null) {
          throwExcep = true;
        }
      }
    }

    if (!throwExcep) {
      RegionCreation rc = (RegionCreation) stack.peek();
      rc.addIndexData(icd);
    } else {
      throw new InternalGemFireException(
          "CacheXmlParser::endIndex:Index creation attribute not correctly specified.");
    }
  }
When index element is ending we need to verify all attributes because of new index tag
definition since 6.6.1 and support previous definition also.

if <code>functional</code> element was not there then we need to validate expression and
fromClause as not null.
geode-core/src/main/java/org/apache/geode/internal/cache/xmlcache/CacheXmlParser.java