@Override
  public List<StudentCourseRecordInfo> resolve(
      Map<String, Object> resolvedPrereqs, Map<String, String> parameters)
      throws TermResolutionException {

    DateTime startTime = new DateTime();

    ContextInfo context =
        (ContextInfo) resolvedPrereqs.get(RulesExecutionConstants.CONTEXT_INFO_TERM.getName());
    String personId =
        (String) resolvedPrereqs.get(RulesExecutionConstants.PERSON_ID_TERM.getName());
    String versionIndId =
        (String) resolvedPrereqs.get(RulesExecutionConstants.CLU_VERSION_IND_ID_TERM.getName());

    List<StudentCourseRecordInfo> records = null;
    try {
      records =
          getAcademicRecordService()
              .getStudentCourseRecordsForCourse(personId, versionIndId, context);
    } catch (Exception e) {
      KSKRMSExecutionUtil.convertExceptionsToTermResolutionException(parameters, e, this);
    }

    DateTime endTime = new DateTime();
    RegEnginePerformanceUtil.putStatistics(
        RegEnginePerformanceUtil.TERMS, getOutput(), startTime, endTime);

    return records;
  }
 @Override
 public Set<String> getPrerequisites() {
   Set<String> prereqs = new HashSet<>(3);
   prereqs.add(RulesExecutionConstants.PERSON_ID_TERM.getName());
   prereqs.add(RulesExecutionConstants.CONTEXT_INFO_TERM.getName());
   prereqs.add(RulesExecutionConstants.CLU_VERSION_IND_ID_TERM.getName());
   return Collections.unmodifiableSet(prereqs);
 }