protected final Object computeRange() {
    final List<Double[]> raRange = new ArrayList<Double[]>();
    final double[] decRange = new double[2];
    if (this.isPolesCollision()) {
      decRange[MIN] = SimpleSpectralAccessProtocolLibrary.MIN_VALUE_FOR_DECLINATION;
      decRange[MAX] = SimpleSpectralAccessProtocolLibrary.MAX_VALUE_FOR_DECLINATION;
      raRange.add(new Double[]{SimpleSpectralAccessProtocolLibrary.MIN_VALUE_FOR_RIGHT_ASCENSION, SimpleSpectralAccessProtocolLibrary.MAX_VALUE_FOR_RIGHT_ASCENSION});
    } else if (this.isNorthPoleCollision()) {
      decRange[MIN] = decUser - sizeArray[1] / 2.0;
      decRange[MAX] = SimpleSpectralAccessProtocolLibrary.MAX_VALUE_FOR_DECLINATION;
      raRange.add(new Double[]{SimpleSpectralAccessProtocolLibrary.MIN_VALUE_FOR_RIGHT_ASCENSION, SimpleSpectralAccessProtocolLibrary.MAX_VALUE_FOR_RIGHT_ASCENSION});
    } else if (this.isSouthPoleCollision()) {
      decRange[MIN] = SimpleSpectralAccessProtocolLibrary.MIN_VALUE_FOR_DECLINATION;
      decRange[MAX] = decUser + sizeArray[1] / 2.0;
      raRange.add(new Double[]{SimpleSpectralAccessProtocolLibrary.MIN_VALUE_FOR_RIGHT_ASCENSION, SimpleSpectralAccessProtocolLibrary.MAX_VALUE_FOR_RIGHT_ASCENSION});
    } else {
      decRange[MIN] = decUser - sizeArray[1] / 2.0;
      decRange[MAX] = decUser + sizeArray[1] / 2.0;
      if (this.isBorderRaCollision()) {
        raRange.add(new Double[]{SimpleSpectralAccessProtocolLibrary.MIN_VALUE_FOR_RIGHT_ASCENSION,
                                 SimpleSpectralAccessProtocolLibrary.MAX_VALUE_FOR_RIGHT_ASCENSION});
      } else if (this.isMaxRaCollision()) {
        raRange.add(new Double[]{raUser - sizeArray[0] / 2.0,
                                 SimpleSpectralAccessProtocolLibrary.MAX_VALUE_FOR_RIGHT_ASCENSION});
        raRange.add(new Double[]{SimpleSpectralAccessProtocolLibrary.MIN_VALUE_FOR_RIGHT_ASCENSION,
                                (raUser + sizeArray[0] / 2.0 + SimpleSpectralAccessProtocolLibrary.MAX_VALUE_FOR_RIGHT_ASCENSION) % SimpleSpectralAccessProtocolLibrary.MAX_VALUE_FOR_RIGHT_ASCENSION});
      } else if (this.isMinRaCollision()) {
        raRange.add(new Double[]{SimpleSpectralAccessProtocolLibrary.MIN_VALUE_FOR_RIGHT_ASCENSION,
                                raUser + sizeArray[0] / 2.0});
        raRange.add(new Double[]{(raUser - sizeArray[0] / 2.0 + SimpleSpectralAccessProtocolLibrary.MAX_VALUE_FOR_RIGHT_ASCENSION) % SimpleSpectralAccessProtocolLibrary.MAX_VALUE_FOR_RIGHT_ASCENSION,
                                  SimpleSpectralAccessProtocolLibrary.MAX_VALUE_FOR_RIGHT_ASCENSION});
      } else {
        raRange.add(new Double[]{(raUser - sizeArray[0] / 2.0 + SimpleSpectralAccessProtocolLibrary.MAX_VALUE_FOR_RIGHT_ASCENSION) % SimpleSpectralAccessProtocolLibrary.MAX_VALUE_FOR_RIGHT_ASCENSION,
                                 (raUser + sizeArray[0] / 2.0 + SimpleSpectralAccessProtocolLibrary.MAX_VALUE_FOR_RIGHT_ASCENSION) % SimpleSpectralAccessProtocolLibrary.MAX_VALUE_FOR_RIGHT_ASCENSION});
      }
    }
    return Arrays.asList(raRange, decRange);
  }