int (@NotNull BuildNumber o) { int[] c1 = myComponents; int[] c2 = o.myComponents; for (int i = 0; i < Math.min(c1.length, c2.length); i++) { if (c1[i] == c2[i] && c1[i] == SNAPSHOT_VALUE) return 0; if (c1[i] == SNAPSHOT_VALUE) return 1; if (c2[i] == SNAPSHOT_VALUE) return -1; int result = c1[i] - c2[i]; if (result != 0) return result; } return c1.length - c2.length; }