@@ -0,0 +1,608 @@
+package foam.core;%0A%0Aimport foam.lib.parse.Parser;%0A%0Apublic abstract class AbstractPropertyInfo implements PropertyInfo %7B%0A  protected ClassInfo parent;%0A%0A  @Override%0A  public PropertyInfo setClassInfo(ClassInfo p) %7B%0A    parent = p;%0A    return this;%0A  %7D%0A%0A  @Override%0A  public ClassInfo getClassInfo() %7B%0A    return parent;%0A  %7D%0A%0A  @Override%0A  public void toJSON(foam.lib.json.Outputter outputter, StringBuilder out, Object value) %7B%0A    outputter.output(out, value);%0A  %7D%0A%0A  @Override%0A  public foam.mlang.Expr partialEval() %7B%0A    return this;%0A  %7D%0A%0A  @Override%0A  public Object f(FObject o) %7B%0A    return get(o);%0A  %7D%0A%7D%0A

Add AbstractPropertyInfo that implements common cases that rarely need specialization.