anchor.diff:          Expression.attribute (value = left, attr = expr, ctx = Load)
   
       let getExpr r (object: Expression) (expr: Expression) =
  -        let attr, stmts =
  -            match expr with
  -            | Expression.Constant(value=value) ->
  -                match value with
  -                | :? string as str -> memberFromName str
  -                | _ -> failwith "Need to be string"
  -            | e -> e, []
  -        let func = Expression.name("getattr")
  -        Expression.call(func=func, args=[object; attr]), stmts
  -        //Expression.attribute (value = object, attr = expr, ctx = Load), stmts
  -        //Expression.memberExpression(object, expr, computed, ?loc=r)
  +        match expr with
  +        | Expression.Constant(value=value) ->
  +            match value with
  +            | :? string as str -> memberFromName str
  +            | _ -> failwith "Need to be string"
  +        | Expression.Name({Id=id}) ->
  +            Expression.attribute (value = object, attr = id, ctx = Load), []
  +        | e ->
  +                let func = Expression.name("getattr")
  +                Expression.call(func=func, args=[object; e]), []
   
       let rec getParts (parts: string list) (expr: Expression) =
           match parts with
  
positive.code:                     decls
  
          | Fable.ClassDeclaration decl ->
              let ent = decl.Entity
  
              let classMembers =
  
negative.code:         match memberName with
          | "ToString" -> Expression.identifier("toString"), []
          | n when n.StartsWith("Symbol.iterator") ->
              let name = Identifier "__iter__"
              Expression.name(name), []
          | n when Naming.hasIdentForbiddenChars n -> Expression.constant(n), []
  