There is some strange behaviour in Mathematica which I don't understand. If you call a function like ContourPlot on two identical expressions (one a named expression, and the other the same expression literal typed out), then one gets different outputs.
Calling it on a named expression:
mysoln = y^2 == C*(y + x)*(y - x)^2;
myC = C /. Solve[mysoln /. {x -> 2, y -> 1}, C][[1, 1]];
myFinalSoln = mysoln /. {C -> myC}
produces
y^2 == 1/3 (-x + y)^2 (x + y)
Then we attempt to use it inside a ContourPlot, and it produces an empty plot:
ContourPlot[myFinalSoln, {x, xmin, xmax}, {y, ymin, ymax}]
But, if we instead insert the equation in "typed out" form into ContourPlot, then it works:
ContourPlot[y^2 == 1/3 (-x + y)^2 (x + y), {x, xmin, xmax}, {y, ymin, ymax}]
What is going on here?