@NotNull StreamResource in,
@NotNull BinaryInput in,
  public static Value stream_get_contents(Env env,                                          @NotNull StreamResource in,                                          @Optional("-1") long maxLen,                                          @Optional long offset)  {    try {      if (in == null)        return BooleanValue.FALSE;      StringBuilder sb = new StringBuilder();      int ch;      if (maxLen < 0)        maxLen = Integer.MAX_VALUE;      while (offset-- > 0)        in.read();      while (maxLen-- > 0 && (ch = in.read()) >= 0) {        sb.append((char) ch);      }      // XXX: handle offset and maxlen      return new StringValueImpl(sb.toString());    } catch (IOException e) {      throw new QuercusModuleException(e);    }  }