"environment",
_environment);
for (String name : names)
{
Environmental annotation = transformation.getFieldAnnotation(name, Environmental.class);
String type = transformation.getFieldType(name);
// TODO: Check for primitives
// Caching might be good for efficiency at some point.
String methodName = transformation.newMemberName("environment_read_"
+ InternalUtils.stripMemberPrefix(name));
MethodSignature sig = new MethodSignature(Modifier.PRIVATE, type, methodName, null,
null);
String body = String.format(
"return ($r) %s.%s($type);",
envField,
annotation.value() ? "peekRequired" : "peek");
transformation.addMethod(sig, body);
transformation.replaceReadAccess(name, methodName);
transformation.makeReadOnly(name);