### Question:
Circle extends ACircle { public static Optional<ICircle> from3Points(final IVector2 p1, final IVector2 p2, final IVector2 p3) { return fromNPoints(Arrays.asList(p1, p2, p3)); } protected  Circle(); protected  Circle(final ICircle circle); protected  Circle(final IVector2 center, final double radius); static ICircle from2Points(final IVector2 p1, final IVector2 p2); static Optional<ICircle> from3Points(final IVector2 p1, final IVector2 p2, final IVector2 p3); static Optional<ICircle> fromNPoints(final List<IVector2> points); static Optional<ICircle> hullCircle(final List<IVector2> points); static ICircle createCircle(final IVector2 center, final double radius); @Override ICircle withMargin(final double margin); @Override ICircle mirror(); @Override double radius(); @Override IVector2 center(); @Override final boolean equals(final Object o); @Override final int hashCode(); @Override String toString();  }### Answer:
@Test public void testInvalidCircleFrom3Points() { IVector2 P1 = Vector2.fromXY(0, 0); IVector2 P2 = Vector2.fromXY(1, 0); IVector2 P3 = Vector2.fromXY(2, 0); if (Circle.from3Points(P1, P2, P3).isPresent()) { Assert.fail(); } }