using static ColliderLibrary;
SpaceObject x = new Asteroid(101);
SpaceObject y = new Spaceship(100);
Console.WriteLine(Collide(x, y));
string Collide(SpaceObject x, SpaceObject y) =>
x.Size > 100 && y.Size > 100
: CollideWith(x as dynamic, y as dynamic);
public static string CollideWith(Asteroid x, Asteroid y) => "a/a";
public static string CollideWith(Asteroid x, Spaceship y) => "a/s";
public static string CollideWith(Spaceship x, Asteroid y) => "s/a";
public static string CollideWith(Spaceship x, Spaceship y) => "s/s";
record SpaceObject(int size) {
record Asteroid(int size) : SpaceObject(size);
record Spaceship(int size) : SpaceObject(size);