@@ -0,0 +1,1648 @@
+package net.sf.jranges.range.longrange.impl;%0A%0Aimport net.sf.jranges.range.longrange.LongRange;%0A%0Apublic abstract class VeryAbstractLongRange implements LongRange %7B%0A%0A%09private volatile int hashCode;%0A%0A%09/**%0A%09 * start position.%0A%09 */%0A%09protected long start;%0A%0A%09/**%0A%09 * stop position.%0A%09 */%0A%09protected long stop;%0A%0A%09// Override //%0A%0A%09@Override%0A%09public String toString() %7B%0A%09%09return getStart() + %22-%22 + getStop();%0A%09%7D%0A%0A%09@Override%0A%09public int hashCode() %7B%0A%09%09int result = hashCode;%0A%09%09if (result == 0) %7B%0A%09%09%09final int prime = 31;%0A%09%09%09result = 1;%0A%09%09%09result = prime * result + (int) (start %5E (start %3E%3E%3E 32));%0A%09%09%09result = prime * result + (int) (stop %5E (stop %3E%3E%3E 32));%0A%09%09%09hashCode = result;%0A%09%09%7D%0A%09%09return result;%0A%09%7D%0A%0A%09@Override%0A%09public boolean equals(Object obj) %7B%0A%09%09if (this == obj)%0A%09%09%09return true;%0A%09%09if (obj == null)%0A%09%09%09return false;%0A%09%09if (getClass() != obj.getClass())%0A%09%09%09return false;%0A%09%09VeryAbstractLongRange other = (VeryAbstractLongRange) obj;%0A%09%09if (start != other.start)%0A%09%09%09return false;%0A%09%09if (stop != other.stop)%0A%09%09%09return false;%0A%09%09return true;%0A%09%7D%0A%0A%09// Implement //%0A%0A%09/**%0A%09 * Compares this %7B@code LongRange%7D to given %7B@code LongRange%7D by%0A%09 * %7B@link #getStart()%7D .%0A%09 */%0A%09public int compareTo(LongRange o) %7B%0A%09%09return Long.valueOf(getStart()).compareTo(Long.valueOf(o.getStart()));%0A%09%7D%0A%0A%09public long getStart() %7B%0A%09%09return start;%0A%09%7D%0A%0A%09public long getStop() %7B%0A%09%09return stop;%0A%09%7D%0A%0A%09/**%0A%09 * %0A%09 */%0A%09public long getLength() %7B%0A%09%09return getStop() - getStart() + 1;%0A%09%7D%0A%0A%09/**%0A%09 * %0A%09 */%0A%09public long getInterval() %7B%0A%09%09return 1;%0A%09%7D%0A%0A%09/**%0A%09 * %0A%09 */%0A%09public boolean includes(long position) %7B%0A%09%09if (getStart() %3C= position && getStop() %3E= position)%0A%09%09%09return true;%0A%09%09return false;%0A%09%7D%0A%0A%7D%0A

Introduce VeryAbstractLongRange.