if (!returntype.isAssignableFrom(result.m_value.getClass())) { Memo memo;  memo = new Memo(); memo. add("method", method). add("class wait", returntype). add("class get", result.m_value.getClass()); throw new ClassCastException(memo.fini()); }
  public Object invoke(Object proxy, Method method, Object[] args)  throws Throwable  {    String methname;    Result result;        result = new Result();    try    {      methname = method.getName();      doSpecialMethods(method, args, result);      if (!result.isDone())      {        RuleAccessors rule;                rule = new RuleAccessors();        rule.autoEvaluate(method);        if (rule.isOK())        {          if (rule.isGet())          {            Object o;                        o = m_values.get(rule.getProperty());            if (o instanceof Table)            {              Table t;              Object[] a_src, a_dest;                            t = (Table)o;              a_src = t.am_vals;              a_dest = (Object[])Array.newInstance                      (method.getReturnType().getComponentType(), a_src.length);              System.arraycopy(a_src, 0, a_dest, 0, a_dest.length);              o = a_dest;            }            result.met(o);          }          else if (rule.isSet())          {            m_values.put(rule.getProperty(), args[0]);            result.done();          }        }      }      if (!result.isDone())        throw new NoSuchMethodException(method.getName());    }    finally    {          }    return result.m_value;  }