static BEAObject arbitraryObjectToBEAObject(O o) { if (o instanceof BEAObject || o == null) ret (BEAObject) o; new BEAObject bea; for (Field f : fieldObjects(o)) { if (hasFieldWithSameName(o, f)) failWithVars("Field name conflict", +f, +o); cset(bea, fieldGet(f, o)); } ret bea; }