@Override protected <T> T doGet(Class<T> key) throws IOException, InterruptedException { if (FlowNode.class.isAssignableFrom(key)) { return key.cast(getNode()); } CpsThread t = getThreadSynchronously(); if (t == null) { throw new IOException("cannot find current thread"); } T v = t.getContextVariable(key); if (v!=null) return v; if (key == CpsThread.class) { return key.cast(t); } if (key == CpsThreadGroup.class) { return key.cast(t.group); } return null; }