private bool CheckLHSType(TypeNode l, TypeNode r) { if (l.GetType() != r.GetType()) { return(false); } switch (l) { case SimpleTypeNode st when st.PrimitiveType != r.PrimitiveType: case ArrayTypeNode at when r.PrimitiveType != PrimitiveType.Array: return(false); case ArrayTypeNode at when at.SubType != ((ArrayTypeNode)r).SubType: return(false); default: return(true); } }