public EPStatementObjectModel mapRawToSODA(StatementSpecRaw raw) {
   StatementSpecUnMapResult unmapped = StatementSpecMapper.unmap(raw);
   if (unmapped.getIndexedParams().size() != 0) {
     throw new EPException(SUBS_PARAM_INVALID_USE);
   }
   return unmapped.getObjectModel();
 }
 public EPStatementObjectModel compileEPL(String eplStatement) throws EPException {
   StatementSpecRaw statementSpec =
       EPAdministratorHelper.compileEPL(
           eplStatement, eplStatement, true, null, services, defaultStreamSelector);
   StatementSpecUnMapResult unmapped = StatementSpecMapper.unmap(statementSpec);
   if (unmapped.getIndexedParams().size() != 0) {
     throw new EPException(SUBS_PARAM_INVALID_USE);
   }
   return unmapped.getObjectModel();
 }
  public EPPreparedStatement prepareEPL(String eplExpression) throws EPException {
    // compile to specification
    StatementSpecRaw statementSpec =
        EPAdministratorHelper.compileEPL(
            eplExpression, eplExpression, true, null, services, defaultStreamSelector);

    // map to object model thus finding all substitution parameters and their indexes
    StatementSpecUnMapResult unmapped = StatementSpecMapper.unmap(statementSpec);

    // the prepared statement is the object model plus a list of substitution parameters
    // map to specification will refuse any substitution parameters that are unfilled
    return new EPPreparedStatementImpl(unmapped.getObjectModel(), unmapped.getIndexedParams());
  }
  public EPPreparedStatement preparePattern(String patternExpression) throws EPException {
    StatementSpecRaw rawPattern =
        EPAdministratorHelper.compilePattern(
            patternExpression,
            patternExpression,
            true,
            services,
            SelectClauseStreamSelectorEnum.ISTREAM_ONLY);

    // map to object model thus finding all substitution parameters and their indexes
    StatementSpecUnMapResult unmapped = StatementSpecMapper.unmap(rawPattern);

    // the prepared statement is the object model plus a list of substitution parameters
    // map to specification will refuse any substitution parameters that are unfilled
    return new EPPreparedStatementImpl(unmapped.getObjectModel(), unmapped.getIndexedParams());
  }