public override bool Equals(object obj)
{
// Check for null values and compare run-time types.
if (obj == null || GetType() != obj.GetType())
return false;
var input = (LinqExpressionToRun)obj;
if (input.Linq != Linq) return false;
//NOTE - elements must be in the exact same order to be a match
//we don't actually care if they are or not, but this isn't worth changing right now
return input.References.SequenceEqual(References) && input.Usings.SequenceEqual(Usings);
}