synchronized public QueryMaker getQueryMaker(ReadTask readTask) {Class<? extends ReadTask> readTaskClass = readTask.getClass();QueryMaker qm = readTaskQueryMaker.get(readTaskClass);if (qm == null) {try {qm = qmkrClass.getConstructor().newInstance();qm.setConfig(config);} catch (Exception e) {throw new RuntimeException(e);}readTaskQueryMaker.put(readTaskClass,qm);}return qm;}

public virtual IQueryMaker GetQueryMaker(ReadTask readTask){lock (this){Type readTaskClass = readTask.GetType();IQueryMaker qm;if (!readTaskQueryMaker.TryGetValue(readTaskClass, out qm) || qm == null){try{qm = (IQueryMaker)Activator.CreateInstance(qmkrClass);qm.SetConfig(config);}catch (Exception e){throw new Exception(e.ToString(), e);}readTaskQueryMaker[readTaskClass] = qm;}return qm;}}
