Suppose there is an API with a class that calculates the area of an arbitrary polygon.
The API is going to be used from several programs. But every program has different objects to store the coordinates of a polygon.
How can this API manage all the different inputs? For example programA stores the coordinates as ArrayList<Point2d> and programB stores them in a different structure.