@staticmethod<EOL><INDENT>def relation(x_start, x_end, y_start, y_end):<DEDENT>
if (x_end - x_start) < <NUM_LIT:0> or (y_end - y_start) < <NUM_LIT:0>:<EOL><INDENT>return None<EOL><DEDENT>diff_end = y_end - x_end<EOL>if diff_end < <NUM_LIT:0>:<EOL><INDENT>return -Allen.relation(y_start, y_end, x_start, x_end)<EOL><DEDENT>diff_start = y_start - x_start<EOL>gab = y_start - x_end<EOL>if diff_end == <NUM_LIT:0>:<EOL><INDENT>if diff_start == <NUM_LIT:0>:<EOL><INDENT>return Allen.X_EQUAL_Y<EOL><DEDENT>if diff_start < <NUM_LIT:0>:<EOL><INDENT>return Allen.X_FINISHES_Y<EOL><DEDENT>return Allen.X_FINISHES_Y_INVERSE<EOL><DEDENT>if gab > <NUM_LIT:1>:<EOL><INDENT>return Allen.X_BEFORE_Y<EOL><DEDENT>if gab == <NUM_LIT:1>:<EOL><INDENT>return Allen.X_MEETS_Y<EOL><DEDENT>if diff_start > <NUM_LIT:0>:<EOL><INDENT>return Allen.X_OVERLAPS_WITH_Y<EOL><DEDENT>if diff_start == <NUM_LIT:0>:<EOL><INDENT>return Allen.X_STARTS_Y<EOL><DEDENT>if diff_start < <NUM_LIT:0>:<EOL><INDENT>return Allen.X_DURING_Y<EOL><DEDENT>
Returns the relation between two intervals.

:param int x_start: The start point of the first interval.
:param int x_end: The end point of the first interval.
:param int y_start: The start point of the second interval.
:param int y_end: The end point of the second interval.

:rtype: int|None