code: @Override
      public Object getMember(String name) {
          switch (name) {
              case "version":
                  return F_version;
              case "sparkContext":
                  return F_sparkContext;
              case "sqlContext":
                  return F_sqlContext;
  //            case "listenerManager":
  //                return F_listenerManager;
  //            case "experimental":
  //                return F_experimental;
              case "udf":
                  return F_udf;
              case "streams":
                  return F_streams;
              case "newSession":
                  return F_newSession;
  //            case "emptyDataset":
  //                return F_emptyDataset;
              case "createDataFrame":
                  return F_createDataFrame;
              case "createDataFrameFromJson":
                  return F_createDataFrameFromJson;
              case "baseRelationToDataFrame":
                  return F_baseRelationToDataFrame;
              case "createDataset":
                  return F_createDataset;
              case "createDatasetFromJson":
                  return F_createDatasetFromJson;
              case "range":
                  return F_range;
              case "table":
                  return F_table;
              case "sql":
                  return F_sql;
              case "read":
                  return F_read;
              case "readStream":
                  return F_readStream;
              case "stop":
                  return F_stop;
          }
          return super.getMember(name);
      }
docs: get the value of that named property