/** Non-standard constructor to create an internal call on key() with a known key fingerprint */
 public static KeyFn internalKeyCall(
     NamePool pool, int fingerprint, String name, Expression value, Expression doc) {
   KeyFn k = new KeyFn();
   Expression[] arguments = {new StringValue(name), value, doc};
   k.argument = arguments;
   k.keyFingerprint = fingerprint;
   k.checked = true;
   k.internal = true;
   k.setDetails(StandardFunction.getFunction("key", 3));
   k.setFunctionNameCode(pool.allocate("fn", NamespaceConstant.FN, "key"));
   k.adoptChildExpression(value);
   k.adoptChildExpression(doc);
   return k;
 }