code: public SoyValue getProtoField(String name) {
      FieldWithInterpreter field = clazz().fields.get(name);
      if (field == null) {
        throw new IllegalArgumentException(
            "Proto " + proto.getClass().getName() + " does not have a field of name " + name);
      }
      if (field.shouldCheckFieldPresenceToEmulateJspbNullability()
          && !proto.hasField(field.getDescriptor())) {
        return NullData.INSTANCE;
      }
      return field.interpretField(proto);
    }
docs: Gets a value for the field for the underlying proto object. Not intended for general use.
  
  @param name The proto field name.
  @return The value of the given field for the underlying proto object, or NullData if either the
  field does not exist or the value is not set in the underlying proto (according to the jspb
  semantics)