<SYSTEM_TASK:>
Solve the following problem using Python, implementing the functions described below, one line at a time
<END_TASK>
<USER_TASK:>
Description:
 def rolling_sum(self, window_start, window_end, min_observations=None):
 """ Calculate a new SArray of the sum of different subsets over this SArray. Also known as a "moving sum" or "running sum". The subset that the sum is calculated over is defined as an inclusive range relative to the position to each value in the SArray, using `window_start` and `window_end`. For a better understanding of this, see the examples below. Parameters window_start : int The start of the subset to calculate the sum relative to the current value. window_end : int The end of the subset to calculate the sum relative to the current value. Must be greater than `window_start`. min_observations : int Minimum number of non-missing observations in window required to calculate the sum (otherwise result is None). None signifies that the entire window must not include a missing value. A negative number throws an error. Returns ------- out : SArray Examples -------- A rolling sum with a window including the previous 2 entries including the current: dtype: int Rows: 5 [None, None, 6, 9, 12] Pandas equivalent: 0 NaN 1 NaN 2 6 3 9 4 12 dtype: float64 Same rolling sum operation, but 2 minimum observations: dtype: int Rows: 5 [None, 3, 6, 9, 12] Pandas equivalent: 0 NaN 1 3 2 6 3 9 4 12 dtype: float64 A rolling sum with a size of 3, centered around the current: dtype: int Rows: 5 [None, 6, 9, 12, None] Pandas equivalent: 0 NaN 1 6 2 9 3 12 4 NaN dtype: float64 A rolling sum with a window including the current and the 2 entries following: dtype: int Rows: 5 [6, 9, 12, None, None] A rolling sum with a window including the previous 2 entries NOT including the current: dtype: int Rows: 5 [None, None, 3, 5, 7] """

        min_observations = self.__check_min_observations(min_observations)
        agg_op = None
        if self.dtype is array.array:
            agg_op = '__builtin__vector__sum__'
        else:
            agg_op = '__builtin__sum__'
        return SArray(_proxy=self.__proxy__.builtin_rolling_apply(agg_op, window_start, window_end, min_observations))