anchor.diff:                      else
                           let alias = Utilities.resolveTuplePropertyName exp.Member.Name tupleIndex
                           match x.ProjectionMap.TryGetValue alias with
  -                        | true, values -> values.Clear()
  +                        | true, values when fromColumnGet = false -> values.Clear()
                           | false, _ -> x.ProjectionMap.Add(alias,new ResizeArray<_>()) 
  +                        | _ -> ()
                           (alias,aliasEntityDict.[alias].FullName)
  -            
  +                fromColumnGet <- false
                   // convert this expression into a GetSubEntity call with the correct alias
                   upcast
                       Expression.Convert(
  
positive.code:         static let getSubEntityMi = typeof<SqlEntity>.GetMethod("GetSubTable",BindingFlags.NonPublic ||| BindingFlags.Instance)
  
          let mutable singleEntityName = ""
  
          /// holds the columns to select for each entity appearing in the projection tree, or a blank list if all columns         
          member val ProjectionMap = Dictionary<string,string ResizeArray>()
  
negative.code:                 | true, values -> values.Add key
                  | false, _ -> x.ProjectionMap.Add(alias,new ResizeArray<_>(seq{yield key}))
              | _ -> ()
              fromColumnGet <- true
              base.VisitMethodCall exp
  
          override __.VisitParameter(exp) = 
  