@Override public M bind(RelNode rel, RelMetadataQuery mq) { final Metadata metadata = function.bind(rel, mq); return metadataClass.cast( Proxy.newProxyInstance(metadataClass.getClassLoader(), new Class[]{metadataClass}, new CachingInvocationHandler(metadata))); } };