/**
   * create the list
   *
   * @param timeDim the time dimension
   * @param goalDim the goal dimension
   * @param criterion the goal criterion
   * @param goalTransform the goal transformation
   */
  _List(
      final IDimension timeDim,
      final IDimension goalDim,
      final EComparison criterion,
      final TransformationFunction goalTransform) {
    super();
    this.m_timeIndex = timeDim.getIndex();
    this.m_goalIndex = goalDim.getIndex();
    this.m_timeDim = timeDim;
    this.m_isTimeIncreasing = timeDim.getDirection().isIncreasing();

    setTransform:
    {
      if (goalTransform.isIdentityTransformation()) {
        setNoTransform:
        {
          switcher:
          switch (criterion) {
            case LESS_OR_EQUAL:
              {
                if (goalDim.getDirection().isIncreasing()) {
                  break setNoTransform;
                }
                break switcher;
              }
            case GREATER_OR_EQUAL:
              {
                if (goalDim.getDirection().isIncreasing()) {
                  break switcher;
                }
                break setNoTransform;
              }
            default:
              {
                break setNoTransform;
              }
          }

          this.m_useGoalTransformAndCriterion = false;
          this.m_goalTransform = null;
          this.m_criterion = null;
          break setTransform;
        }
      }

      this.m_useGoalTransformAndCriterion = true;
      this.m_goalTransform = goalTransform;
      this.m_criterion = criterion;
    }
  }