Plane implements Cloneable, Savable, Externalizable, ReadOnlyPlane, Poolable { @Override public int hashCode() { int result = 17; result += 31 * result + _normal.hashCode(); final long c = Double.doubleToLongBits(getConstant()); result += 31 * result + (int) (c ^ c >>> 32); return result; } Plane();  Plane(final ReadOnlyPlane source);  Plane(final ReadOnlyVector3 normal, final double constant); @Override double getConstant(); @Override ReadOnlyVector3 getNormal(); Plane set(final ReadOnlyPlane source); void setConstant(final double constant); void setNormal(final ReadOnlyVector3 normal); @Override double pseudoDistance(final ReadOnlyVector3 point); @Override Side whichSide(final ReadOnlyVector3 point); Plane setPlanePoints(final ReadOnlyVector3 pointA, final ReadOnlyVector3 pointB,
      final ReadOnlyVector3 pointC); @Override Vector3 reflectVector(final ReadOnlyVector3 unitVector, final Vector3 store); static boolean isValid(final ReadOnlyPlane plane); @Override String toString(); @Override int hashCode(); @Override boolean equals(final Object o); @Override Plane clone(); @Override Class<? extends Plane> getClassTag(); @Override void write(final OutputCapsule capsule); @Override void read(final InputCapsule capsule); @Override void readExternal(final ObjectInput in); @Override void writeExternal(final ObjectOutput out); final static Plane fetchTempInstance(); final static void releaseTempInstance(final Plane plane); static final ReadOnlyPlane XZ; static final ReadOnlyPlane XY; static final ReadOnlyPlane YZ; }
@Test public void testSimpleHash() { final Plane plane1 = new Plane(Vector3.UNIT_Y, 2); final Plane plane2 = new Plane(Vector3.UNIT_Y, 2); final Plane plane3 = new Plane(Vector3.UNIT_Z, 2); assertTrue(plane1.hashCode() == plane2.hashCode()); assertTrue(plane1.hashCode() != plane3.hashCode()); }