public static Object run(String rule,Map<String,Object> variables,Context context){
  StellarProcessor processor=new StellarProcessor();
  Assert.assertTrue(rule + " not valid.",processor.validate(rule,context));
  Object ret=processor.parse(rule,null,StellarFunctions.FUNCTION_RESOLVER(),context);
  byte[] raw=SerDeUtils.toBytes(ret);
  Object actual=SerDeUtils.fromBytes(raw,Object.class);
  Assert.assertEquals(ret,actual);
  return ret;
}

public static Object run ( String rule , Map < String , Object > variables , Context context ) { StellarProcessor processor = new StellarProcessor ( ) ; Assert . assertTrue ( rule + " not valid." , processor . validate ( rule , context ) ) ; Object ret = processor . parse ( rule , null , StellarFunctions . FUNCTION_RESOLVER ( ) , context ) ; byte [ ] raw = SerDeUtils . toBytes ( ret ) ; Object actual = SerDeUtils . fromBytes ( raw , Object . class ) ; Assert . assertEquals ( ret , actual ) ; return ret ; }
this ensures the basic contract of a stellar expression is adhered to : 1 . validate works on the expression 2 . the output can be serialized and deserialized properly
