### Question:
AbstractGeoCoordinate implements GeoCoordinate { @Override public GeoCoordinate getCoordinate(double distance, double bearing) { Validate.isTrue(distance >= 0, "distance must be greater/equal zero"); double latRad = toRadians(getLatitude()); double lngRad = toRadians(getLongitude()); double bearingRad = toRadians(bearing); double d = distance / EARTH_RADIUS_KM; double resultLatRad = asin(sin(latRad) * cos(d) + cos(latRad) * sin(d) * cos(bearingRad)); double resultLngRad = lngRad + atan2(sin(bearingRad) * sin(d) * cos(latRad), cos(d) - sin(latRad) * sin(resultLatRad)); double resultLat = toDegrees(resultLatRad); double resultLng = GeoUtils.normalizeLongitude(toDegrees(resultLngRad)); return new ImmutableGeoCoordinate(resultLat, resultLng); }  @Override double distance(GeoCoordinate other); @Override String toDmsString(); @Override double[] getBoundingBox(double distance); @Override GeoCoordinate getCoordinate(double distance, double bearing); @Override String toString(); @Override int hashCode(); @Override boolean equals(Object obj);  }### Answer:
@Test public void testGetCoordinateDistanceBearing() { GeoCoordinate coordinate = new ImmutableGeoCoordinate(53.320556, 1.729722).getCoordinate(124.8, 96.021667); assertEquals(53.188333, coordinate.getLatitude(), 0.001); assertEquals(3.592778, coordinate.getLongitude(), 0.001); coordinate = new ImmutableGeoCoordinate(28.216667, -177.366667).getCoordinate(300, 270); assertEquals(28.182595, coordinate.getLatitude(), 0.001); assertEquals(179.572172, coordinate.getLongitude(), 0.001); }