@Override
  public InterpreterResult interpret(String cypherQuery, InterpreterContext interpreterContext) {
    LOGGER.info("Opening session");
    if (StringUtils.isBlank(cypherQuery)) {
      return new InterpreterResult(Code.SUCCESS);
    }
    final List<String> queries = isMultiStatementEnabled ?
            Arrays.asList(cypherQuery.split(";[^'|^\"|^(\\w+`)]")) : Arrays.asList(cypherQuery);
    if (queries.size() == 1) {
      final String query = queries.get(0);
      return runQuery(query, interpreterContext);
    } else {
      final int lastIndex = queries.size() - 1;
      final List<String> subQueries = queries.subList(0, lastIndex);
      for (String query : subQueries) {
        runQuery(query, interpreterContext);
      }
      return runQuery(queries.get(lastIndex), interpreterContext);
    }
  }
@Test
  void testDuration() {
    InterpreterResult result = interpreter.interpret(
            "RETURN duration('P14DT16H12M') AS theDuration", context);
    assertEquals(Code.SUCCESS, result.code());
    assertEquals("theDuration\nP0M14DT58320S\n", result.toString()
            .replace(TABLE_RESULT_PREFIX, StringUtils.EMPTY));
  }