public override bool Equals(object obj) { FunctionTypeReference tr = obj as FunctionTypeReference; if (tr == null) { return(false); } if (!returnType.Equals(tr.returnType)) { return(false); } if (parameters.Count != tr.parameters.Count) { return(false); } for (int i = 0; i < parameters.Count; ++i) { if (!parameters[i].Equals(tr.parameters[i])) { return(false); } } return(true); }