code: @Override
      public Object invoke(Object[] vals) {
          try {
              if (isStatic()) {
                  return field.get(null);
              } else {
                  return field.get(vals[0]);
              }
          } catch (IllegalArgumentException e) {
              throw e;
          } catch (IllegalAccessException e) {
              // constructor should prevent this
              throw new RuntimeException("can't access field");
          }
      }
docs: Reads this Field.
  @param vals  an array of length null, or an array with the Object containing this Java Field
  @return the Object stored in the Java Field